Ruby 初心者スレッド Part 65

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 0f80-JI52)
垢版 |
2018/12/22(土) 04:43:34.03ID:84E3pYZa0
プログラミング言語 Rubyについての、初心者向けスレです。質問・要望・雑談などをどうぞ

質問するときは、OSやRubyのバージョン、エラーメッセージを書いて下さい。
Ruby on Rails については、WEBプログラミング板で

前スレ
Ruby 初心者スレッド Part 64
https://mevius.5ch.net/test/read.cgi/tech/1535797516/

るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/

Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/

逆引きRuby
http://www.namaraii.com/rubytips/

Ruby コミュニティ公式
https://www.ruby-lang.org/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2019/10/30(水) 01:59:02.44ID:p2ffZ2o00
>>796
Rails を使っていない場合でも、

ERB, Selenium WebDriver, Nokogiri などで、
HTML を処理する場合には、Node.js, jQuery も使う
799デフォルトの名無しさん (エムゾネ FF1f-Tlcr)
垢版 |
2019/10/30(水) 13:12:15.78ID:Jt7N9BVBF
>>797 はパスワードをうpして慌てるタイプ

あるいは気付かず放置してるだけかも知らん
800デフォルトの名無しさん (ワッチョイ ca2c-0B+f)
垢版 |
2019/11/04(月) 16:33:35.55ID:Zu03xGz40
あるフォルダ内の子フォルダだけを取得するのに、こう書いているのですが、

PowerShell みたいに、ls -Directory
など、もっと簡単に書けないの?

target_dir = "C:/Users/Owner/Documents/*"

p dest_dirs = Dir.glob( target_dir ).select { |path| File.directory?( path ) }

return if dest_dirs.length == 0 # フォルダが存在しない
2019/11/04(月) 16:36:49.84ID:6GYoHHZPF
RubyはUNIXで使うものであり、シェルコマンドも積極的に使うのが前提
Rubyから普通にlsを呼べ基地外
2019/11/04(月) 19:06:35.57ID:KBcuTkU10
単発で使う分には十分簡単に書けてると思うが
繰り返し書く必要があるなら自分でメソッド抽出すればよくね?
2019/11/04(月) 19:37:03.85ID:Zu03xGz40
Dir.glob( "パス", :directory )

みたいに、ブロックじゃなくて、
オプション・シンボルなどで、簡単に指定できれば
2019/11/04(月) 20:32:46.29ID:15pQYryDa
>>800
むしろPowerShellが凄い
2019/11/04(月) 22:33:04.21ID:KBcuTkU10
Dir.glob('*/')
2019/11/05(火) 21:08:09.25ID:z9XdE4jra
rubyを使い出して2週間なのですが困っています。

今は汎用機のログの一括処理に使っているのですが、
半角カナや漢字が文字化けして読み込まれます。

ログファイルはwindowsにsjisで保存されていて、
これをsjis指定で読み込んでも\x33等と化けます。
どうすれば半角カナが化けないように読めるのでしょうか。
2019/11/05(火) 22:01:22.14ID:+vsp0I/Q0
sjis指定で読み込んでると思い込んでるだけで実際はutf-8になってるんじゃないかな
あるいはログがsjisと思い込んでるだけという線もありうる
もしくは書き出しがsjisになってないとか
可能性を挙げたらきりがない
コードをさらすのが解決への近道
2019/11/05(火) 22:19:23.14ID:HJJtuDtXa
汎用機のデータをRubyで処理とか懐かしいな
俺もやってたわ
結局転職するのが唯一にして最良のソリューションだから、あまり変なことに拘って時間を無駄にするよりAWSの勉強でもしたほうがいいよ
2019/11/05(火) 23:08:03.80ID:rzC/SdAh0
>>806
どういう環境を使って
どういう方法でエンコーディング指定をしていて
どうやって読み込んで、どこに出力して、出力結果をどうやって確認してるのか?
そういう情報が必要
Ruby関係なくエンコーディングに対する理解を深めたほうが良さげ

基本的には外部エンコーディングと内部エンコーディングを指定すれば問題なし
https://docs.ruby-lang.org/ja/2.6.0/class/IO.html#io_encoding
>File.read('sjis.log', mode: "rt:sjis:utf-8")
2019/11/06(水) 00:03:50.72ID:lUVlDRaka
>806です
解決しました。

エンコードにsjisではなくwindows-31Jを
指定すると半角カナを文字化けせずに読めました。

ファイルの文字コードは確実にsjisなのに、
なんでsjis指定で読み込んだら化けるのか分かりませんが、
ひとまず解決です。
2019/11/06(水) 00:05:50.13ID:lUVlDRaka
>>809
文字コードの指定は、
fileopen時にwindows-31Jを指定してうまくいきました。
2019/11/06(水) 02:48:09.37ID:normnvJW0
>>810
一般に、Shift_JIS(標準規格)とcp932(Windowsカスタム)は別物。
Rubyでもそうらしい。

https://docs.ruby-lang.org/ja/latest/class/Encoding.html#S_ALIASES
813デフォルトの名無しさん (アウウィフ FF2f-DOEl)
垢版 |
2019/11/06(水) 11:43:12.78ID:o3tEvZiYF
半角カタカナ ← 混ぜるな危険

30年くらい前の話
2019/11/06(水) 11:50:52.64ID:SpldiVNta
>>812
これを見てやっとわかりました。

rubyは真面目に解釈してこうなったんでしょうけど、
sjisファイルの読み込みでsjis指定では駄目となると
初心者泣かせですね。
2019/11/06(水) 11:52:59.82ID:SpldiVNta
>>813
漢字も駄目なのでやや難易度高しです。
816デフォルトの名無しさん (アウウィフ FF2f-DOEl)
垢版 |
2019/11/06(水) 12:34:12.51ID:o3tEvZiYF
いいがかりは止せ
SJISファイルじゃないんだから当然だろ
2019/11/06(水) 13:41:03.82ID:ZR40S1lI0
Windows では一般用語として、sjis と書くけど、
厳密には、sjisを拡張した、CP932 の事です。
だから、MS が独自に拡張した部分は、sjisではない!

漏れは、Windows で、PowerShell を使って、クリップボード処理を書いているけど、
Windows(CP932) ←→ Ruby(utf8) と、外部環境とruby内で、文字コードを変換している

クリップボード内の複数行文字列の、各行の先頭・末尾から、
連続する空白類を除去して、クリップボードに入れる

str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換

ary = str.each_line.map( &:strip ) # 連続する空白類を除去する

IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す
clip.print( ary.join "\n" )
end
2019/11/06(水) 15:16:56.50ID:Z1mcKm+J0
別にMSがSJISを拡張したんじゃないけどな。
そもそもSJIS本家を作ったのがMS(+他)なわけで。

じゃあ拡張したのは誰かというとIBMとかNECだよ
まあそもそも拡張可能にしていんだけどな

MSなどがSJISを作った。IBMやNECが拡張した。
それらを取り込んでWindowssのCP932とした。というのが正しい流れ

ちなみにAppleもSJISを拡張してる。それはMacJapaneseと呼ばれる。
拡張部分がIBMやNECが拡張した部分とかぶってるので互換性がないんだけどな
2019/11/06(水) 15:39:23.65ID:Fx0hE3mY0
>Encoding.aliases.select {|_,v| v == "Windows-31J"}
{"CP932"=>"Windows-31J",
"csWindows31J"=>"Windows-31J",
"SJIS"=>"Windows-31J",
"PCK"=>"Windows-31J"}

Rubyでは"SJIS"も"CP932"もWindows-31Jのエイリアスなんだけど
SJISの指定をWindows-31Jに変更して解決する事があるんですねー(棒)
2019/11/06(水) 18:22:07.75ID:8bqr3nzy0
半角カナや大半の漢字はsjis範囲内だからきちんとsjisで読めばほぼ文字化けはないはず
つまりsjisで読めていなかったということ
2019/11/06(水) 19:09:22.79ID:wTTuQQRz0
>>819
エンコーディングは同じで文字集合が違うだけだからね
2019/11/06(水) 19:26:39.67ID:GIJSYcug0
リファレンスマニュアルの aliases -> Hash の例
"SJIS"=>"Shift_JIS" は間違いですね

Encoding::SJIS == Encoding::CP932 #=> true
Encoding::SJIS == Encoding::Windows_31J #=> true
Encoding::SJIS == Encoding::Shift_JIS #=> false
823デフォルトの名無しさん (アウウィフ FF2f-DOEl)
垢版 |
2019/11/06(水) 19:55:23.52ID:o3tEvZiYF
HTML (HTTP) で Encoding Shift_JIS って書くと怒られた思い出
2019/11/06(水) 20:51:13.84ID:Fx0hE3mY0
>>821
いやいやいや

文字集合と符号化方式を別々に選択できる状況ならともかく
「ファイル読み取り時のエンコーディング指定」とかの文脈で使うエンコーディングって用語は
狭義の符号化方式だけでなく文字集合も含めた上位の概念だから
2019/11/06(水) 21:02:49.31ID:wTTuQQRz0
上位って聞くと攘夷を思い出して
https://youtu.be/DvS_2K5MVzU?t=14
これを思い出して困る
2019/11/07(木) 00:17:25.40ID:gr4VkOsJ0
>>818
エンコーディングと機種依存文字をごっちゃにしてるやろ。
2019/11/07(木) 01:13:21.86ID:sEmiRyTj0
>>826
SJISは元から(文字集合を)拡張可能なのだから
同じSJISでも機種依存文字は発生する

エンコーディングはSJISもCP932も同じ
文字集合が違うだけ

理解できる?
2019/11/07(木) 02:15:26.05ID:QKW84+pO0
ガイジか?
2019/11/07(木) 02:20:56.81ID:sEmiRyTj0
理解できなくなったら、このようなレスをするんだよなw
2019/11/07(木) 02:31:19.18ID:sEmiRyTj0
例えば、Unicodeは文字集合(キャラクタセット、Coded Character Set)で
UTF-8とかUTF-16というのが符号化方式(エンコード、Character Encoding Scheme)

Unicodeも拡張可能でバージョン番号があって文字集合の内容が変わってる。
Unicode 1.0では文字集合の中の文字数は7,161文字
最新のUnicode 12.1では137,929文字も収録文字数が増えてる。

エンコーディングは変わっていないが文字集合は変わってるので
古いバージョンにしか対応してないコンピュータで、
最新のUnicodeを表示させると一部文字化けする

ただし管理団体の手によって収録文字は決められてるので
ShiftJISの頃のような各社バラバラで互換性がないってことにはならない
(ただし私用領域を使ってる場合は除く)
2019/11/07(木) 03:28:55.37ID:QKW84+pO0
外字と引っ掛けた洒落や
気い悪くしたんならすまんかった
2019/11/07(木) 08:58:28.91ID:debRpYWr0
>>830
>エンコーディングは変わっていないが文字集合は変わってるので
>最新のUnicodeを表示させると一部文字化けする

じゃ文字集合だけ更新すれば文字化け解消するのかな?
文脈理解せず無意味なレス繰り返してるとそりゃ外字言われるわ
2019/11/07(木) 11:38:26.80ID:LDERshfw0
そりゃ、新しい文字集合を使うと、新しい絵文字も正しく表示されるだろ?
2019/11/07(木) 12:52:46.05ID:sEmiRyTj0
正確に言えば、新しい文字集合に対応したフォントを使うとだね。

>>832の言う「文字集合だけ更新すれば」が意味不明だが
「仕様書を更新すれば、なにも変更はいらない」って意味なら
そんなことは誰も言ってない
2019/11/07(木) 20:03:36.67ID:1chRDjs40

最近だと令和対応が記憶に新しいな
836デフォルトの名無しさん (ワッチョイ 9f2c-E8Ce)
垢版 |
2019/11/08(金) 15:49:09.19ID:bNpOstnB0
よく出てくる、&:メソッド名は、proc オブジェクトですが、
たまに出てくる、:メソッド名は、何ですか?

違いが、よく分からない

nums = %w(1 2 3 4).map!( &:to_i ) # 数値の配列

p nums.inject( :+ ) # 10
2019/11/08(金) 17:07:06.66ID:GYgLC2XDM
シンボル
実用的には単なる変更不可能な文字列と見做してよい
Rubyの初期からの大きな失敗の一つで、特に意味はない
2019/11/08(金) 18:26:17.63ID:q9/Fdf+e0
マニュアルの「シンボルの実装と用途」ってところを読むと良いと思う
https://docs.ruby-lang.org/ja/2.6.0/class/Symbol.html

&:to_iも":to_i"がシンボルで、そのシンボルが"&"で修飾されてるだけ
"&"はProcオブジェクトやto_procメソッドを持つオブジェクトをブロックとして渡す時に引数につける修飾記号
実行時にSymbol#to_procが呼ばれてそれがブロックとして渡される
2019/11/08(金) 18:31:13.82ID:q9/Fdf+e0
mapはシンボルを引数にとらないからmap(&:to_i)でブロックとして渡すけど
injectはシンボルを引数に取るからinject(:+)で実行できる
inject(&:+)としてブロックとして渡してもいいけど無駄処理が入るので普通はやらない
2019/11/08(金) 18:48:10.88ID:bNpOstnB0
漏れは、いつも、メソッドがシンボルを引数に取るかどうか、分からないから、

ひとまず、map!( :to_i ) みたいに、シンボルを渡して、エラーになったら、
map!( &:to_i ) と、& を付けることにしている
2019/11/08(金) 21:56:04.93ID:ZY78KkPA0
>>839
ホントにムダなんか?
シンボルを渡されても、内部でやはりブロックにしてそうだが。
2019/11/08(金) 22:54:04.88ID:u/1VJcWC0
ていうか、なんでそんな半端な設計なの?
injectのみシンボル受け取れるようにするメリットってなに?
2019/11/08(金) 23:51:37.33ID:sLgGgSr40
シンボル・・・型が無い言語で、型を気付かれないように書くための手段の一つ

型がないとされる言語でも、123は数字だが、"123"は文字というように
書き方で型をこっそりと記述している。
他にも/abc/は正規表現型、1.0は浮動小数点型などの定義方法がある。
シンボルはその一つで、:で始めることにより、シンボル型の値を書くことができる
2019/11/08(金) 23:57:04.08ID:q9/Fdf+e0
>>841
リファレンスにも書いてるけどシンボルとブロックだと扱いが違う
ただパフォーマンスにシビアな箇所じゃなければ特別気にするほどの違いはない
https://ideone.com/p5oW7Y
2019/11/08(金) 23:59:15.28ID:q9/Fdf+e0
>>843
その「型が無い言語」とか「型がないとされる言語」という理解は間違ってるよ
2019/11/09(土) 00:09:55.38ID:PhKUzZj90
シンボルと文字列を区別したのは失敗だったとmatzも言ってるな
streamという途中でぶん投げた新言語ではその区別がなくなってる
2019/11/09(土) 02:32:49.02ID:d5YSql6x0
>>845
反論は「あってるよ」だけで十分そうだねw
2019/11/09(土) 12:03:54.60ID:u1W/mjBNM
>>842
文字列リテラルよりも記述が簡便だからという理由により、本来文字列を使うべき用途にもシンボルが乱用された結果、
シンボルGCなどという頭の悪いものが誕生したりしたんだよな
誰がどう見ても完全に失敗
849デフォルトの名無しさん (ワッチョイ 9f2c-E8Ce)
垢版 |
2019/11/09(土) 12:04:25.68ID:Ypm9+s0e0
シンボルは、識別子を表すために作られたのか、数字で始められないだろ。
下はエラーになる

p :"1" # OK

p :1 # エラー
2019/11/09(土) 12:13:45.55ID:X62CmnUE0
>>848
あいやそっちじゃなくてinjectがシンボルを引数にとってブロックみたいな処理ができるって方の話
mapとかは&がいるんだよね?
2019/11/09(土) 12:16:59.76ID:u1W/mjBNM
>>849
リテラルが書けないだけで、to_symすれば数字始まりのシンボルも普通に作れる
だから型が文字列と別である理由にはならない
2019/11/09(土) 12:19:33.79ID:u1W/mjBNM
>>850
すまん848は>>846に対するレスだ
&:が後付けだから一貫性がないだけで、深い意味はない
2019/11/09(土) 14:08:02.54ID:MvykJ39t0
>>850
sliceやchunkのような分割系以外は
ブロックがなければEnumeratorを返すのを基本ルールにしてるから
mapはシンボルを取る形がないんじゃないかな

injectはEnumeratorを返すものじゃないから
ちょっと気を利かしてシンボルを取る形を加えたのかもね
2019/11/14(木) 00:10:26.40ID:GMI1Y3D90
今年が2.7ってことは
2022年には3か2.10か
2019/11/14(木) 17:40:11.04ID:BO+nDgNta
Rubyで2値の差を得る簡単なメソッドとかないかな
def diff(num1, num2)
 max = [n1, n2].max
 min = [n1, n2].min
 (max - min)
end
p diff(-3, 7)   #=> 10
とかだと見てくれ良くないし無駄も多い
2019/11/14(木) 18:15:34.71ID:baSi3t2Kr
(num1 - num2).absじゃあかんのか?
2019/11/15(金) 01:07:32.58ID:em064pO70
オラもそう思った
2019/11/15(金) 07:32:43.98ID:1PuPU5S7a
>>854
最初の小数点の次の数は二桁以上にしない縛りなかったっけ?
2019/11/21(木) 19:57:13.88ID:0YdMrNdaa
Rubyの平均年収は全言語中最低
https://tech.nikkeibp.co.jp/atcl/nxt/column/18/01068/111100004/
2019/11/21(木) 23:28:58.12ID:tUWUNbqx0
そんなに年収ほしければCOBOLやれば?
861デフォルトの名無しさん (ワッチョイ 9305-CPe6)
垢版 |
2019/11/23(土) 01:26:32.66ID:DazDco060
今月までプログラミングに一切触れたことのなかった初心者です
引数を配列にして
メソッド内で変数aに引数を代入
その後変数aの0番目にnを代入すると引数の0番目まで巻き添えでnになってしまうんですがそういう仕様なんでしょうか?
配列だけで起こる現象のようなんですが
method(0,1)と呼んで
def method(array)
a = array
a[0] = 10
puts a
puts array
end
とするとaもarrayも[10,1]となってしまいます
862デフォルトの名無しさん (ワッチョイ 9305-CPe6)
垢版 |
2019/11/23(土) 01:27:53.59ID:DazDco060
method([0,1])でした
失礼しました
2019/11/23(土) 03:03:35.14ID:8xX8HZu80
>>861
そういう仕様です

https://magazine.rubyist.net/articles/0032/0032-CallByValueAndCallByReference.html
864デフォルトの名無しさん (ワッチョイ 9305-CPe6)
垢版 |
2019/11/23(土) 10:59:21.53ID:DazDco060
>>863
ありがとうございます
アドレスの参照先をコピーしてるだけだったんですね
理解しました
調べたところMarshalで書き出せばバイト値もコピーできるようなのでこの方法でいきます
2019/11/23(土) 14:01:09.34ID:8xX8HZu80
>>864
使い方にもよるのかもしれんが階層が浅くて固定ならdupで十分じゃない?

foo = [[1,2], [3,4], [5,6,7]]
bar = foo.dup

bar[0] = [9,9,9]
foo #=> [[1, 2], [3, 4], [5, 6, 7]]
bar #=> [[9, 9, 9], [3, 4], [5, 6, 7]]

bar[1].push 200
foo #=> [[1, 2], [3, 4, 200], [5, 6, 7]]
bar #=> [[9, 9, 9], [3, 4, 200], [5, 6, 7]]

bar[2] = bar[2].dup.push 300
foo #=> [[1, 2], [3, 4, 200], [5, 6, 7]]
bar #=> [[9, 9, 9], [3, 4, 200], [5, 6, 7, 300]]

階層が深くて手動でdupするのが大変ならdeep_dup

require 'active_support'
require 'active_support/core_ext/object/deep_dup'

baz = foo.deep_dup
baz[1].push 300
foo #=> [[1, 2], [3, 4, 200], [5, 6, 7]]
baz #=> [[1, 2], [3, 4, 200, 300], [5, 6, 7]]
2019/11/23(土) 20:53:58.93ID:fygFNKSM0
年収は、5大SIer, Java などの土方系・奴隷、多重請負構造では、1社間に入る度に、3割抜かれる!

顧客が100万円払っても、間1 が、30万円抜いて、
自社には70万円で来るので、自分の給料は、25万円ぐらいw

顧客が100万円払っても、間1 が、30万円抜いて、間2 が、20万円抜くと、
自社には50万円で来るので、自分の給料は、20万円ぐらいw

だから、ハローワークのIT 講座でも、奴隷になる2次請け以降に、就職しないように言われる。
Javaの平均年収が600万円なら、300万円の奴隷と、900万円の大企業の奴隷使いがいる。
元々、大企業の人は、給料が良いだけ。
給料は言語に関係ない。労働形態による!

抜きを警戒する人は、派遣なら3割抜かれて、後は自分の給料になるけど、
仕事がない期間の保証がない。
それか、フリーランスのエージェントで、1割ぐらいの抜きを探すか

一方、Ruby などの自社サービス系は、多重請負構造じゃないから抜かれない
2019/11/23(土) 21:01:37.75ID:fygFNKSM0
C/C++ 以外のほとんどの言語では、参照がコピーされるだけ!
インスタンスを作っていない

だから、実際のインスタンス数は、clone, dup, new された回数を、チェックすれば良い
868デフォルトの名無しさん (ワッチョイ fb8c-qZD/)
垢版 |
2019/11/23(土) 22:03:14.93ID:uAZdpObm0
土方系の仕事って何ですか
2019/11/23(土) 22:07:51.58ID:jA/F562DM
>>866
そんなRubyの平均年収は全言語中最低
https://tech.nikkeibp.co.jp/atcl/nxt/column/18/01068/111100004/
2019/11/24(日) 01:52:22.27ID:iwyjZSbL0
>>868
顧客に価値を提供すること
2019/11/24(日) 02:00:18.56ID:2vFps37N0
土方にはなるな
SIerにはなるな
2019/11/24(日) 02:02:59.56ID:Q6cceAnpa
しかし現実には大半のRubyistよりもSIerのドカタの方が給料は高いのであった
2019/11/24(日) 04:46:27.73ID:kT5P2hJJ0
給料だけでもないやろ。
つーか、どうでもいいから。んな話は。
2019/11/24(日) 15:33:55.35ID:Gqvqz24c0
要件定義、外部設計を受注できるプライマリの
会社に行かないと高収入はないよ。
内部設計、プログラミングは下流工程だから下請けに流される。

3割抜くとか言うが、粗利3割はどの業界でも普通だし。
875デフォルトの名無しさん (ワッチョイ fb8c-qZD/)
垢版 |
2019/11/24(日) 18:51:34.90ID:ednGVdun0
言語を知っている。いや知っているだけで金になる仕事はないから
2019/11/24(日) 23:07:40.54ID:Q5WFFNoW0
上流工程が、下級工程の給料を決める

だから、YouTube で有名なKENTA が、
クライアント側ではなく、サーバー側・構築運用へ行った

今世紀最大の起業家、Ruby でVagrant を作った、
HashiCorp のMitchell Hashimoto も、Go でTerraform を作った!

富・技術革新が集中する所に、Hashimoto は行く!

実際に、車のメーカーの企業の時価総額は変わらないけど、
アマゾン・Google などのサーバー屋は、100兆円企業になってる!
2019/11/25(月) 04:07:09.54ID:gVPe0v4t0
>>876
日本のIT企業はほぼ国内事業しかやってないし
規模も小さいからどうしても時価総額は上がらないんだろうね
あと大したことやってない
878デフォルトの名無しさん (ワイーワ2 FF63-KqLj)
垢版 |
2019/11/25(月) 12:33:00.08ID:pjJuONFZF
>上流工程が、下級工程の給料を決める
>クライアント側ではなく、サーバー側・構築運用へ行った

上流ってそういう意味か?ωωω
2019/11/25(月) 16:27:01.28ID:Lb2w9ntUM
Amazonの売上の大半はEC
Googleの売上の大半は広告
どっちも実際には上物で稼いでいて、AWSやGCPの売上比率は15%程度に過ぎない
キチガイの目に映る世界と実態の間にはは大きな乖離があることがわかるだろう
2019/11/25(月) 17:19:36.92ID:vZmdeQAZ0
まあ利益出してるところじゃなくて"売上"というのなら、
ECが一番やろうな。そりゃ
881デフォルトの名無しさん (ワッチョイ 922c-Ql8R)
垢版 |
2019/11/28(木) 00:37:50.62ID:WsOSEkue0
Windows10, WSL, Ubuntu 16.4 で、
libruby2.3, ruby2.3 の更新が来た!

Ruby2.3 は、もうサポート切れだけど、まだ誰かがサポートしてるw
Ubuntu チームか
2019/11/28(木) 17:42:14.05ID:dnvj190uM
ビルドしてるだけやろ。
883デフォルトの名無しさん (ワッチョイ 922c-Ql8R)
垢版 |
2019/11/30(土) 04:33:29.25ID:HbGyzSLF0
Vagrant, Chef, RSpec, Serverspec などの、

DSL の書き方だけができる、ライブラリ・フレームワークはないの?
2019/11/30(土) 07:04:52.88ID:WKFbtD9B0
>>883
なんか面白そうだね?
どういう事?
2019/11/30(土) 09:10:10.03ID:HbGyzSLF0
環境の構築テストなどを、すごく簡潔に、宣言っぽく書いている

例えば、ファイル・ディレクトリなどを作る場合でも、エラー処理もなく、1行で書いてる。
Maven, Gradle も、こういう宣言っぽい感じかな?

便利だなと思って
2019/12/02(月) 07:50:51.40ID:sFARCTmI0
k-sato_at_oiaxって実はもう死んでたりするの?
887デフォルトの名無しさん (ワッチョイ 922c-Ql8R)
垢版 |
2019/12/02(月) 22:47:05.03ID:H5nAExhM0
改訂4版 基礎 Ruby on Rails、黒田努・佐藤和人、2018/9/7

この本が、株式会社オイアクス監修だろ。
著者2人は、株式会社ルビキタスにも所属している
2019/12/03(火) 09:08:31.07ID:I9YoNGrF0
義務教育にrubyが組み込まれなかった時点でrubyは終わりだろ
ポジション取られたのがscratch

ついでにオブジェクト脳の本の社長起立プログラム、あれ最高にキモイ
889デフォルトの名無しさん (ワッチョイ 232c-+J45)
垢版 |
2019/12/05(木) 09:12:33.74ID:fTTGdtWT0
Windows のPowerShell で、1-liner で、webrick サーバーを立てるのに、

上だとエラーになって、
下のように、%Q("./") でクォートすると、正常に動くのは、なぜでしょう?

どういうカラクリなの?

ruby -rwebrick -e 'WEBrick::HTTPServer.new(:DocumentRoot => "./", :Port => 8888).start'

ruby -rwebrick -e 'WEBrick::HTTPServer.new(:DocumentRoot => %Q("./"), :Port => 8888).start'
2019/12/05(木) 09:19:26.64ID:wT3fRGGOr
windowsで-e の後にシングルクォーテーション使ってるからでしょ

ruby -e 'puts "hello"'
でもエラーになるぞ
2019/12/05(木) 09:20:45.92ID:wT3fRGGOr
ちな
ruby -e 'puts \"hello\"'

ruby -rwebrick -e 'WEBrick::HTTPServer.new(:DocumentRoot => \"./\", :Port => 8888).start'
なら問題ない
2019/12/05(木) 10:48:53.10ID:fTTGdtWT0
ruby -e 'puts "hello"'
は、コマンドプロンプトではエラーにならないが、
PowerShell ではエラーになるw

ruby -e 'puts %Q("hello")'
は、コマンドプロンプト・PowerShell の両方で正常

ruby -e 'puts "hello"'
が、コマンドプロンプト・PowerShell から、Rubyに渡る際に、どう変換されるのか?

そのカリクリを知りたい
893デフォルトの名無しさん (アウウィフ FFa9-MVf8)
垢版 |
2019/12/05(木) 10:57:49.63ID:IbmhSLeWF
WSL使え

あるいはWindowsのコマンドプロンプトなら
ruby -e "puts 'hello'"
2019/12/05(木) 11:11:38.90ID:wT3fRGGOr
だから'使うなっつってんだろアホか
895デフォルトの名無しさん (ワッチョイ 7501-MVf8)
垢版 |
2019/12/05(木) 11:21:52.16ID:q0kDwfyl0
製造者がWindowsが憎いMicrosoftが憎いと言ってるのに、わざわざWindows上で使わなくても。
2019/12/05(木) 21:12:26.41ID:h+M+c6Hd0
コマンドプロンプトのクォート解釈は、控えめに言ってメチャクチャだからな。
昔のものだし、しかたない。

それに比べたら、PowerShellははるかにまともで現代的。
897889 (ワッチョイ 232c-+J45)
垢版 |
2019/12/05(木) 23:40:17.64ID:fTTGdtWT0
まとめ。
Windows10 で、1-liner のruby -e で順に、1〜3 を実行した場合

1. 'puts "hello"'
2. 'puts %Q("hello")'
3. "puts 'hello'"

1〜3は、コマンドプロンプトと、WSL, Ubuntu 16.04 では、
hello, "hello", hello

PowerShell では、
エラー, "hello", hello
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況