Ruby 初心者スレッド Part 62at TECH
Ruby 初心者スレッド Part 62 - 暇つぶし2ch571:デフォルトの名無しさん
17/12/24 14:12:36.12 BNj/0IJ2.net
>>555
Rubyに文句を言う前にまずはRubyの仕様くらいちゃんと理解しよう
+は全く特別なところのないごく普通のインスタンスメソッド呼び出しだぞ
関数型でaddにパイプライン使うとしたら
b |> add(a) # add(a, b)に相当
こうなるわけだが、理解してるか?

572:デフォルトの名無しさん
17/12/24 14:15:02.58 A3ERayLu.net
>>556
まあ君はJavaScriptの仕様を知らなくて当然だろうけどね
|> オペレータっていうのは、引数を一つの関数呼び出しの
シンタックスシュガーに過ぎない
だから関数呼び出しを行ってるのと一緒
関数呼び出しをするとオブジェクト指向にならないのか?
そんなわけあるかw

573:デフォルトの名無しさん
17/12/24 14:29:26.20 BNj/0IJ2.net
>>557
ある機能が言語に追加されることでコーディングのスタイルが大きく変わってしまうことはよくある。
まあそういう経験則的な話は君には通じなそうだから、もっと具体的にRubyとの相性の悪さを説明してあげよう。
まず、関数型言語やJavaScriptでは裸の関数名は第一級関数(関数オブジェクト)だが、Rubyではメソッド呼び出しになってしまう。
だから>>548のようにシンボルを使った汚いハックをするか、|>の後にくる識別子は第一級関数として扱うという特別ルールを設けることになる。
特別ルールを設けたとしても、>>556のaddの例みたいな使い方には対応できない。
君は関数型言語を知らないみたいだから説明しとくと、add(a)はadd関数の第一引数にaを部分適用(カリー化)した引数一個の関数を返す。
|>の直後には必ず関数名が来るというルールだと、これは実現できないのはわかるよね。

574:558
17/12/24 14:33:34.04 BNj/0IJ2.net
それと、Rubyの関数は殆どがインスタンスメソッドであるというのも忘れてはいけない。
x |> y.hoge
これは y.hoge(x) と解釈すべきだろうか?
それともy.hoge()(x)かな?
今のRubyの仕様からすると後者が自然だと思わない?

575:デフォルトの名無しさん
17/12/24 14:46:41.85 bBhW4Y9m.net
ようお前ら。
Ruby 2.5が来るのは明日だぞ。
gem作ってる奴はちゃんと準備出来てるか?
Ruby2.5にした途端に泣きを見ることのないようにしとけよ。

576:デフォルトの名無しさん
17/12/24 15:29:04.65 A3ERayLu.net
>>558
あ、なるほどw シンタックスシュガーって言ってるのに、
あんたは関数型の仕様に変更すると思い込んでるわけかw
俺、Rubyを関数型にしろなんて一言も言ってないよ?
JavaScriptが関数型になったなんて一言も言ってないよ?
ただ、関数呼び出しのネストは見づらいから、一つの引数を取る関数の呼び出しを
|> でつなげた "書き方" ができると良いねって話しかしてないんだよ
> 今のRubyの仕様からすると後者が自然だと思わない?
理由が書いてないから判断不可能だね
>>556
> 関数型でaddにパイプライン使うとしたら
> b |> add(a) # add(a, b)に相当
> こうなるわけだが、理解してるか?
ぷぷw |> という記号を使っだけで、関数型になるべきだなんて
思い込んでるからそういう結論になる。馬鹿だねぇ
JavaScriptの関数型でない単なるパイプラインオペレータは引数が1つの
関数を受け取ることしかできない。 カリー化?そんなものはしない。
関数型のパイプラインオペレータを導入なんて話はしてないんだから当然の結論
引数が複数の関数を使いたければ、アロー関数でそうなるように書くだけの話
URLリンク(github.com)
let newScore = person.score |> double |> (_ => add(7, _)) # アンダースコアは只の変数、iでもaでも良い
papp proposalのpappメソッドを使うとこう書くこともできるようだけど
let newScore = person.score |> double |> add.papp(7)

577:デフォルトの名無しさん
17/12/24 15:52:11.56 2eVeUlKQ.net
>>554
Ruby使うんだから当たり前の話でそ?
Rubyじゃないスタイルでどうしても書きたいならすでにRubyを使う必要はないと思うんだけど

578:デフォルトの名無しさん
17/12/24 15:54:48.61 /VeWYwOF.net
Juliaおぬぬめ

579:デフォルトの名無しさん
17/12/24 16:00:56.08 2eVeUlKQ.net
Juliaいいね。これから大注目の言語だよ
ただ、現状は起動が激重なのでJuliacとかが公式採用されないとつらいかも
そういう意味ではJavaに似てるのかも(言語仕様という意味ではなく)

580:デフォルトの名無しさん
17/12/24 16:12:39.10 BNj/0IJ2.net
Juliaはクソ重い計算やデータの処理を長時間ぶっ通しで動かすための言語だよ
Rubyと比べるようなもんではないし、起動時間が問題になるようなものに使うのも間違い

581:デフォルトの名無しさん
17/12/24 20:04:37.70 4g6ysjQ5.net
>>545
>流れるような形で記述できるようになるらしいんだけど
できるようになるといふのは、以下の提案かな?
・ESNext Proposal: The Pipeline Operator
 URLリンク(github.com)
調べてみると、これはあくまで提案(proposal)であって、
5段階あるECMAScript(= JavaScript)仕様策定過程の2番目に過ぎない
 0. Strawman
 1. Proposal <― パイプライン演算子の状態
 2. Draft
 3. Candidate
 4. Finished
当然、現時点でその実装は存在しておらず「絵に描いた餅」に過ぎない
言い換えると、「こんなのできたらいいなあ」といふ話だよね?

582:デフォルトの名無しさん
17/12/24 20:35:54.14 4g6ysjQ5.net
>>561
>関数型のパイプラインオペレータを導入なんて話はしてないんだから当然の結論
え、こう書けないっていうの?
  let newScore = person.score |> double |> add(7)
もし pipeline proposal が Finished(採用決定)になったとしても、このコードを
  let newScore = person.score |> double |> (_ => add(7, _))
こうも冗長に書かなけりゃならないなんて、ダサイというか中途半端な提案だと思う
>>554の言�


583:tを借りると:   期待したけど、やっぱりJavaScriptの文法からは抜け出せないか   新しい提案と言っても所詮JavaScriptの言語であることに変わりはないしな っていう感想です しかも更にpapp proposal(部分適用サポートの提案)がFinishedになったと仮定してもなお   let newScore = person.score |> double |> add.papp(7) こうなっちゃうなんて、もう少し練り直してから提案した方がいいと思うんだけどなぁ



584:540
17/12/24 22:02:54.10 24EH1p52.net
JS は、Ruby, Elixir の影響が強い。
Kotlin も、Groovy, Ruby の影響が強い
誰か、
>>540
の、7-Zip Archives の所からダウンロードした、
Ruby 2.4(x64)をどうすれば


585:よいのか、教えてほしい



586:デフォルトの名無しさん
17/12/24 22:25:11.95 ZqTzsWSR.net
>>568
パスを通せ

587:デフォルトの名無しさん
17/12/24 23:05:16.75 A3ERayLu.net
>>567
> え、こう書けないっていうの?
少しは頭を働かせようよw
そこにある、add(7) が引数を一つ取る関数を返すなら書けるよ
それを汎用化したのがpapp。それにJavaScriptでカリー化する方法だってある
JavaScriptは関数型言語じゃないんだから、関数型言語の方からみて
ダサいとか言うなよw お前、関数型に洗脳されてるだろw
関数型を取り入れたなんて話はしてない。お前が言い出しただけ。
単にパイプラインオペレータという関数のネストを見やすくする機能を
追加するってだけの話

588:デフォルトの名無しさん
17/12/24 23:07:29.50 2eVeUlKQ.net
>>570
Rubyについてはこんな書き方しかできないのかと毒づいておいて、JavaScripitについては全力擁護
これをRubyスレでやらかしてたら荒らし認定を食らってもしょうがないレベルだぞ

589:デフォルトの名無しさん
17/12/24 23:12:18.94 A3ERayLu.net
>>566
> 当然、現時点でその実装は存在しておらず「絵に描いた餅」に過ぎない
知らないなら、知ったかぶりして語らないでよw
JavaScriptは5段階あるECMAScript(= JavaScript)仕様策定過程を
必ず0から一つづつ上げて行かないといけない
だからどんな仕様だって最初は0から始まる
こういう提案から仕様化されるまでのプロセスが明確になってるのは素晴らしいことだよ
で、Stage 1だが
URLリンク(azu.github.io)
・プロポーザルの目的や解決方法を示す
・Polyfillやデモ等を用いて解説する
どういうことかというとPolyfillやデモ等があるってことだ。
わかりやすく言うと、すでに使う方法があるってことだ。それがこれ
URLリンク(www.npmjs.com)
なので絵に描いた餅ではない。絵に描いた餅はStage 0
その0を脱却して、すでに使う方法が出来たということ

590:540
17/12/24 23:16:34.36 24EH1p52.net
7-Zip Archives の所からダウンロードした、Ruby 2.4(x64)を解凍し、
C:\Ruby24-x64 に改名して、
Windows10 で、ユーザー環境変数に、C:\Ruby24-x64\bin を追加したら、
PowerShell で、ruby コマンドが使えるようになった
PS C:\Users\Owner\Documents\Ruby> ruby -v
ruby 2.4.3p205 (2017-12-14 revision 61247) [x64-mingw32]
C:\Ruby24-x64\bin には、erb, gem, irb, rake, ruby.exe, rubyw.exe
などのコマンドがあるから、
7-Zip Archives の所にあるものも、Rubyのポータブル版の実行環境なのかも

591:デフォルトの名無しさん
17/12/24 23:17:27.23 2eVeUlKQ.net
>>572
でさ、結局何が言いたいの?
JavaScriptサイコーってのが言いたいのなら完全にスレ違いだよ

592:540
17/12/24 23:23:27.95 24EH1p52.net
ちなみに、rubyinstaller の 7-Zip Archives の所からダウンロードした、
Ruby 2.4(x64)は9MB で、解凍すると56MB になった
1/6 に圧縮されている

593:デフォルトの名無しさん
17/12/24 23:37:20.25 A3ERayLu.net
>>574
> でさ、結局何が言いたいの?
Rubyもサイコーになろうぜ

594:デフォルトの名無しさん
17/12/25 00:01:06.18 h6gXOlbY.net
>>570
>関数型を取り入れたなんて話はしてない。お前が言い出しただけ。
>>556 とは別人だけど、IDを確認できないほど冷静さを失っているのかな?
また、そもそも>>545の exclaim, capitalize, doubleSay という関数単位で部品化して
パイプライン演算子で組み立てるという発想そのものが関数型プログラミングであり、
それを自分(ID:A3ERayLu )から言いだしたという認識ができていないのかね?

>単にパイプラインオペレータという関数のネストを見やすくする機能を追加するってだけの話
だよね、関数型のパイプライン演算子と同じ名前だけど中身は微妙に異なるJavaScript固有の方言が
一つ提案されたという、ただそれだけの話
しかも最終的に採用されるか否かも確定すらしていない Proposal 段階でしかないといふ

595:デフォルトの名無しさん
17/12/25 00:21:34.94 mSK8fdnz.net
> また、そもそも>>545の exclaim, capitalize, doubleSay という関数単位で部品化して
> パイプライン演算子で組み立てるという発想そのものが関数型プログラミングであり、
関数呼び出しの形を変えただけ、
関数型プログラミングとは全く関係ない

596:デフォルトの名無しさん
17/12/25 00:25:59.73 h6gXOlbY.net
>>576
関数型言語のパイプライン演算子がサイコーという話なら同意するし、
それがオブジェクト志向言語であるRubyにとって今すぐ必要かどうかは別


597:にして、 数ある将来のRuby構想に向けた提案の一つとして理解したい でも >>561,570で自身(ID:A3ERayLu)が語っているように、 JavaScriptのそれは関数型ではないJavaScript固有の方言なんだろ? JavaScriptが独自の道に進もうとしてるなら「どうぞお好きになさいませ」だし、 それにRubyも従うべきという話に至っては「何を考えてるの?」としか言えないね >>570 >単にパイプラインオペレータという関数のネストを見やすくする機能を >追加するってだけの話 どちらかというと日常的にカッコだらけになるのはPythonだから、 そちらへ提案した方がいいんではないかな http://mevius.2ch.net/test/read.cgi/tech/1491491123/44-46 関数型プログラミングを公式文書で否定しているPythonだから、 関数型ではないパイプライン演算子の提案はきっと喜ばれるよ



598:デフォルトの名無しさん
17/12/25 00:38:42.38 W15ZQhn0.net
いずれにせよ>>559のようにメソッド呼出の括弧省略の問題があるからJavaScriptやCaml系のようなクリーンなシンタックスにはならないけどね
&:symbolとか->みたいなハック感溢れる醜い構文になる

599:デフォルトの名無しさん
17/12/25 01:02:31.40 h6gXOlbY.net
>>580
いや、オブジェクト指向言語のRubyなら、現時点でも
簡潔にメソッドチェーンで流れるようなコードが書ける
以下は>>545の例:
 URLリンク(ideone.com)
refinements に関しては以下の記事が分かりやすかったのでご参考
・Ruby の refinements の使い途 - Qiita
 URLリンク(qiita.com)
で、何かご不満はございますか?

600:デフォルトの名無しさん
17/12/25 01:03:23.68 mSK8fdnz.net
>>579
JavaScriptは元から関数型じゃないし
関数型になんかなろうとしてないよw

601:デフォルトの名無しさん
17/12/25 01:05:56.92 mSK8fdnz.net
>>581
> で、何かご不満はございますか?
はい。
def foo(i); end
def bar(i); end
def baz(i); end
となっているものの baz(bar(foo(1)) という呼び出しを
メソッドチェーンで繋げないということです。
パイプラインオペレータならこの通り
1 |> foo |> bar |> baz

602:デフォルトの名無しさん
17/12/25 01:53:39.67 h6gXOlbY.net
>>582
>JavaScriptは元から関数型じゃないし
うーみゅ、やっぱりJavaScriptって誤解されてるのね
・クロージャって何がいいの?
スレリンク(tech板:224番)
リンク切れ邦訳版「JavaScriptの勉強:世界で最も誤解されたプログラミング言語」
URLリンク(web.archive.org)
>  Cの皮を被ったLisp
>
>  JavaScriptには、Cのような中括弧や不格好なforステートメントがあるため、
>  一般的な手続き型言語のように見えますが、それは誤りです。JavaScriptはCやJavaよりも、
>  LispやSchemeのような関数型言語と多くの共通点を持っているのです。JavaScriptには、
>  リストの代わりに配列があり、プロパティリストの代わりにオブジェクトがあります。
>  関数はファーストクラスであり、クロージャも備えています。つまり括弧の対応をとる手間なしに、
>  ラムダを利用できるのです。

>>583
それに関しては納得
前スレで書いたように、Rubyにおいてメソッドは一級市民(ファーストクラス)ではありませんからね
・Ruby 初心者スレッド Part 61
 スレリンク(tech板:210番)

603:デフォルトの名無しさん
17/12/25 01:57:26.36 6htjEWah.net
ここはJavaScriptスレじゃないよ

604:デフォルトの名無しさん
17/12/25 02:12:49.73 mSK8fdnz.net
>>585
JavaScriptは関数型だってことにしたいんでしょw

605:デフォルトの名無しさん
17/12/25 02:14:31.41 6htjEWah.net
>>586
JavaScriptの話はそっちのスレでやれってこと

606:デフォルトの名無しさん
17/12/25 02:19:08.95 h6gXOlbY.net
>>585
まったくそのとおりですね
といふことで、JavaSciptのパイプライン演算子を提案され�


607:トいる方は、 JSスレヘお帰りになられるか、もしくわ   日常的にカッコだらけになってしまうPython(>>579) スレへ移動されるよう希望します 特にRubyと違ってPythonは関数が一級市民ですから、 JavaScriptの手法を適用するのは(Rubyよりも)容易でしょう



608:デフォルトの名無しさん
17/12/25 10:22:56.25 yHCsyXBb.net
Windows10 の、VS Code で、irb (PowerShell ターミナル)を起動して、
put "abc"
なら、実行できるけど、
put "あいう"
のように日本語があると、実行できないね

609:589
17/12/25 10:27:56.95 yHCsyXBb.net
put "abc" # あ
のように、コメントに日本語がある時は、実行できる

610:デフォルトの名無しさん
17/12/25 10:29:17.76 FXcNW9u1.net
>>589
それはrubyじゃなくてlibeditの不具合だよ

611:589
17/12/25 12:11:57.01 yHCsyXBb.net
知らないけど、UI 部分を、C言語とかで作っているから、
いつまで経っても修正できないのだろう
UI 部分は、VS Code みたいに、
ブラウザ技術を使っている、Electron で作れば良かった

612:デフォルトの名無しさん
17/12/25 20:14:59.36 YHWK2l8N.net
ねんがんのRuby 2.5.0をてにいれたぞ‼
URLリンク(www.ruby-lang.org)

613:デフォルトの名無しさん
17/12/25 21:16:04.65 FXcNW9u1.net
yield_selfは使いどころが結構ありそうだね

614:デフォルトの名無しさん
17/12/25 21:25:14.33 s8SRCdHD.net
使い方わかんないな

615:デフォルトの名無しさん
17/12/25 21:52:41.67 YHWK2l8N.net
yield_selfはこれまでメソッドチェーンをしたくてもできなかった場合で活躍するね
途中の一時変数は用無しになった

616:デフォルトの名無しさん
17/12/25 22:38:48.18 h6gXOlbY.net
昨日のパイプライン演算子に関する話の中に出てきた >>583 のようなケースが
以下のように書けるようになる
URLリンク(ideone.com)
・Ruby 2.5 の yield_self - Qiita
 URLリンク(qiita.com)
F# や Elixir の登場ですっかり世間の認知度がアップしたパイプライン演算子、
すっかりハマって
「プログラミングスタイルをパイプライン形式(いわゆるメソッドチェーン)で統一して書きたい!」
という欲求を抑えられない人たちにとっては嬉しいメソッドの新設ではないかと思われ
個人的には、メソッド名は apply もしくはそれを短くした app が
感覚的に合っていた(エイリアスを定義するだけなんだけどね)

617:デフォルトの名無しさん
17/12/25 22:46:27.01 mSK8fdnz.net
ふっふっふ、ようやく気づいたかね?
昨日のパイプライン演算子の話は
ここにつながるのだよ

618:デフォルトの名無しさん
17/12/25 23:07:16.77 h6gXOlbY.net
つまり:
・JavaScriptでは現時点だと最終的に採用されるか否かも定かでない Proposal 段階で、
 実験的な実装をいじってあーだこーだ議論している真っ最中
・一方、Rubyではとっくに議論を終えて公式にリリースを終えてしまった
といふ話ですね

619:デフォルトの名無しさん
17/12/25 23:20:17.82 YHWK2l8N.net
ちょっと面白い発見
ppを使うのにrequire要らずだってあったから試してみたけど、
使った最初に自動でrequireするようになってる
$ ruby25 --disable-gems -e 'puts $"'
enumerator.so
thread.rb
rational.so
complex.so
/usr/local/lib/ruby/2.5/amd64-freebsd11/enc/encdb.so
/usr/local/lib/ruby/2.5/amd64-freebsd11/enc/trans/transdb.so
$ ruby25 --disable-gems -e 'pp $"'
["enumerator.so",
 "thread.rb",
 "rational.so",
 "complex.so",
 "/usr/local/lib/ruby/2.5/amd64-freebsd11/enc/encdb.so",
 "/usr/local/lib/ruby/2.5/amd64-freebsd11/enc/trans/transdb.so",
 "/usr/local/lib/ruby/2.5/prettyprint.rb",
 "/usr/local/lib/ruby/2.5/pp.rb"]

620:デフォルトの名無しさん
17/12/26 14:56:29.62 75dqQ4yg.net
private methodを定義する時ってどう書くのが普通?
private def foo
__bar
end
def foo
__ bar
end
private :foo
# クラスの後ろにまとめて定義
private
def foo
__bar
end

621:デフォルトの名無しさん
17/12/26 16:40:03.50 pHnCZ49/.net
自分の好きなタイミングで

622:デフォルトの名無しさん
17/12/26 17:17:14.64 MQU8AiWM.net
他人が読んで読みやすいとと思う書き方。

623:デフォルトの名無しさん
17/12/26 17:36:54.63 Zhknjblq.net
俺は後ろにまとめて書くようにしてる。
ついでに言うとprivateが連続した場合2個目以降のprivateは不要だが、パッと見て分かるように常に付けている。
最近は触って欲しくないメソッドはリファインメントを使うっていう手法を覚えたけど、これは異端なのか分からない。

624:デフォルトの名無しさん
17/12/26 22:52:56.50 pHnCZ49/.net
アンチ息してる?
アンチスレ死亡してるみたいだけど

625:デフォルトの名無しさん
17/12/26 23:11:59.17 Xx1508gc.net
アンチスレ死亡させていいよ
存在価値無いし、ここで十分

626:デフォルトの名無しさん
17/12/26 23:45:46.61 p5HaZQjy.net
そもそもRubyのprivateって実質的な強制力はほぼゼロでコメントとしての意味くらいしかないからな
そういう意味ではよほど小さなクラスを除けば全部に付けないとあまり意味ないんじゃないか

627:デフォルトの名無しさん
17/12/27 01:21:36.89 kb3Qecdj.net
アンチがアンチスレの存在をすっごい嫌がってるのは、本スレで暴れたいからだろうな
だが、断る
アンチはあの過疎ったアンチスレへ帰るべきだ

628:デフォルトの名無しさん
17/12/27 01:24:11.45 Kn/lt9VX.net
結局ここにアンチが来てなくても
アンチの話題をしたいわけなんだよな
もう病気だと思うよw

629:デフォルトの名無しさん
17/12/27 01:24:47.07 Kn/lt9VX.net
アンチスレも定期的に見てるようだし

630:589
17/12/27 01:58:58.62 u0gTyM9V.net
>>589-592
自己レス
irb -E CP932
irb の起動時に、オプションを付けると、日本語文字列も正常になった
puts "あ"
Ruby は、Windows でも無敵やな!

631:デフォルトの名無しさん
17/12/27 04:54:44.27 vGbq0nNV.net
>>601
人それぞれでいいと思うけど、自分はクラスの後ろにまとめて定義する派だね
ドキュメンテーションとしての可読性を重視し、あるクラス定義において
デフォは公開したいメソッドだけどキーワード private で宣言した以降の
セクションは非公開にしたいという意図がある
 class Klass
   公開したいメソッドの定義セクション
 private
   不公開なメソッドの定義セクション
 end
個別に宣言する private :foo を使うケースは、公開するつもりでクラスを設計したけど、
リファクタリングの過程で「このメソッドは非公開でもいいんじゃね?」と疑問を感じたら
private :foo を付けテストを流して実験するといった一時的なもの

>>607
確かに、メンバ変数のアクセス制限という概念が無く、全ての変数がpublicとして扱われるのよね
 URLリンク(qiita.com)
 URLリンク(woodyring.blog.so-net.ne.jp)
ああ中途半端でめんどくさ

632:デフォルトの名無しさん
17/12/27 14:38:59.95 kb3Qecdj.net
612は勘違いしてる
変数にpublicも糞も無い

633:デフォルトの名無しさん
17/12/27 14:47:08.38 K4eQH++r.net
メンバ変数なんてない
インスタンス変数の事を言ってるならそもそもオブジェクトの外からはアクセスできない

634:デフォルトの名無しさん
17/12/28 23:13:58.27 zlcR2/4C.net
みんな、デバッグはpで済ましてる?
それとも何かツール使ってる?

635:デフォルトの名無しさん
17/12/28 23:14:30.42 AeGE7eie.net
は? ppだろ

636:デフォルトの名無しさん
17/12/28 23:18:20.87 s+AqweGp.net
自前でpryもどきを作ってbinding.hogeしてる

637:デフォルトの名無しさん
17/12/29 02:26:20.85 orHgNMeq.net
awesome-print/awesome_print: Pretty print your Ruby objects with style -- in full color and with proper indentation
URLリンク(github.com)

638:デフォルトの名無しさん
17/12/30 03:43:26.25 Codmlyj+.net
最近、debug.rb知って使うようになったけど

pで間に合うデバッギングしかまだやってないんだよな

639:540
17/12/30 08:54:20.80 M2I24uN0.net
RubyInstallers の、7-Zip Archives の所からダウンロードした、
Ruby 2.4(x64)は、Rubyのポータブル版の実行環境だった。
Ruby 2.4(x64)は9MB で、解凍すると56MB になった
これだけでも、ファイルI/O など、結構遊べる
デフォルトで、erb, irb, minitest, sinatra などが入っている。
RSpec は入っていないけど
先に、bundler gem を入れて、
VS Code の画面で、Ruby Solargraph という拡張機能を入れると、
solargraph gem がインストールされるので、VS Code で補完ができる
VS Code で、Ruby のデバック用の拡張機能を入れようとすると、
Windows のネイティブコードにコンパイルする必要があるから、
The MSYS2 DevKit を入れる必要がある。
これが、1.7GB もあるらしいので、入れない方が良い
1行ずつデバッグせず、p などで表示しながら作るのが良い
MSYS2 DevKit を入れない範囲で、プログラミングするのが簡単

640:デフォルトの名無しさん
17/12/30 13:51:43.29 KgXg1sy3.net
JSON::Stateの挙動がマニュアルと違うのですがこれはバグでしょうか
URLリンク(ideone.com)
URLリンク(docs.ruby-lang.org)

641:デフォルトの名無しさん
17/12/30 14:02:41.65 8kEk1hAU.net
あぁ、バグだろうな。
お前のバグだ

642:デフォルトの名無しさん
17/12/30 15:07:11.63 KgXg1sy3.net
英語が読めなかったんですね。すみませんでした
マニュアルには「コロンとコンマの区切りの後にspace:で指定した文字列がおかれる」と書いてあります

643:デフォルトの名無しさん
17/12/30 15:21:25.29 9j+d+4sf.net
space_before: だろ

644:デフォルトの名無しさん
17/12/30 15:22:43.33 KgXg1sy3.net
space_beforeはコロンの直前なので関係ありません

645:デフォルトの名無しさん
17/12/30 15:25:29.81 9j+d+4sf.net
リストだからじゃね

646:デフォルトの名無しさん
17/12/30 17:05:16.47 20iing1R.net
何しても`,'の後ろには入らないね
バグっていうよりマニュアルの不備なのかな

647:デフォルトの名無しさん
17/12/30 17:25:46.52 IKvN98q1.net
,の後ろにスペース入れるのは一般的なフォーマットだから、常識的にはドキュメントの方が正しいでしょ
直してプルリク出せ

648:デフォルトの名無しさん
18/01/02 13:03:30.40 nZWiMujw.net
明けおめ
今年初のRubyスレ書き込み

649:デフォルトの名無しさん
18/01/02 22:10:18.61 Q+9WD3Xu.net
新年からRailsを勉強中。環境はwin64 
<%= csrf_meta_tags %>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'default', 'data-turbolinks-track': 'reload' %>
</head>
さっきから、こいつに対してExecJS::ProgramError hogehoge#indexってエラーを吐いてばかり
coffee-scciptも1.8.0にしてもさっぱり解決せず。libv8とtherubyracerを入れろとか書いてるけど、
さっきから2時間以上苦戦してるが、全くインストールできずエラーばっかり
何なんだこれ

650:デフォルトの名無しさん
18/01/02 22:12:28.67 Q+9WD3Xu.net
違った、viewの中身はこいつだ
<!DOCTYPE html>
<html>
<head>
<title>hogehoge</title>
<%= csrf_meta_tags %>

<%= stylesheet_link_tag "application", media:"all", "data-turbolinks-track"=> true %>
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
</head>

<body>
<%= yield %>
</body>
</html>

651:デフォルトの名無しさん
18/01/02 22:13:36.50 NRmrCA2E.net
今時WinでやるならWSLを使おう
どうせ運用はLinuxなんだからそれに慣れる意味でもな
あと、オワコンCoffeeなんか今更使っちゃダメ

652:デフォルトの名無しさん
18/01/02 22:30:29.29 Q+9WD3Xu.net
タイトルでそう思ったけど、ここ初心者スレじゃなかったのか
仕方ない、自分でもうしばらく足掻くか

653:デフォルトの名無しさん
18/01/02 22:32:05.53 ZaEks4dH.net
WSL使おうってアドバイスがあるのにさらっと無視するようじゃ、初心者スレ云々の問題じゃないかと思われる

654:デフォルトの名無しさん
18/01/02 22:37:12.02 IA96dLm2.net
すべてのwindowsでWSL使えるわけじゃないのに何言ってるの

655:デフォルトの名無しさん
18/01/02 22:42:47.77 ZaEks4dH.net
だったらWSL使えないって言えよ
そしたらVMWare使えってアドバイスもらえるんだからさ

656:デフォルトの名無しさん
18/01/02 22:44:20.68 IA96dLm2.net
答えのわからない質問に、的はずれな回答しなくていいから
わからないなら黙ってなさい

657:デフォルトの名無しさん
18/01/03 00:44:42.35 0mS9Giqv.net
原因わかったよ、鋸使わなかったから
鋸使ったらうまくいった
あとで調べたらWSLは互換性がどうたらとか書いてたし、VM使うほど容量に余裕ないんで
でもまあwindowsよりLinux使えってのが大きなヒントになったのは確か

658:デフォルトの名無しさん
18/01/03 00:53:49.79 BK81yZAH.net
互換性はWSLの方が遥かにマシだぞ
WinのRubyなんか動いたらラッキーレベルのおまけ

659:デフォルトの名無しさん
18/01/03 06:24:30.41 LyakWDNT.net
>>620
に書いておいた
The MSYS2 DevKit などで、
Windows のネイティブコードにコンパイルしているようなものは、基本的に使えない。
それに、コンパイルできても、正常に動くとは限らないし
Nokogiri などの各gem が、バージョンアップに対応しないから、
Rails 5 などは使えない
各gem を作っている人は、皆手弁当でやっているから、
OS のバージョンアップに一々、対応していられない
Ruby の対応状況と、各gem の対応状況は、全く違うし、作者も別人。
とにかく、gem を使うものは、gem のバージョンに合わせて、
Ruby, Rails のバージョンを下げないといけない
Ruby 使いは、vagrant, chef を使う。
または、WSL, Docker など

660:640
18/01/03 08:15:54.66 LyakWDNT.net
基本的に、gem の作者が、Windows10 用のバイナリを配布していない、
gem は、作者によって動作が保証されていない
それを、The MSYS2 DevKit などで、ユーザーが勝手に、
Windows のネイティブコードにコンパイルして、動かしているようなものは、
基本的には安全ではない。
コンパイルできても、正常に動くとは限らないから
gem の作者でもないユーザーが、勝手にコンパイルして動かしても、安全性を証明できない
gem の作者が配布している、バイナリのバージョンまで、
Ruby, Rails のバージョンを下げる必要がある
Windows10 の場合は、RubyInstallers に、最初から入っている、
erb, irb, minitest, sinatra などで遊ぶ。
gem も、ユーザーがコンパイルする必要のない、gem の範囲で、遊ぶのが良い

661:デフォルトの名無しさん
18/01/03 12:59:19.24 vVUVg3Hi.net
gemの範囲で遊ぶのが良い までは読んだ
まあ遊びというか入門勉強用にしとけばいいわけだな。遊びでも触っておけば、本番で構築が必要になった時
いくらでも応用利くから。MVCも他のフレームワークとあまり変わらなさそうだし

662:デフォルトの名無しさん
18/01/03 13:59:57.88 7RCD6iyC.net
何故、荒らしはアンチスレに帰らないで本スレで自演してるの?
さみしいの?

663:デフォルトの名無しさん
18/01/03 14:12:30.27 xfm5wXWm.net
>>643
アンチもクソも、現実を直視しよう
Rubyのコアのコミュニティに行くとWin使いには人権ないぞ
このスレはまだマシな方だよ

664:デフォルトの名無しさん
18/01/03 14:57:18.33 vVUVg3Hi.net
人権とかいう排他的な言い方しなくても、win環境には適応しきれていないのはわかったよ
rails new hogehogeコマンドで新たなアプリケーション作ってもまともに動かないことも分かったし
社内PCにはVMぐらいは作ってあるから、そっちでいくらでも試せる
今度はサーバ設定ツールにvagrant、chef、Docker、WSLとか書かれてるけど
どれが一番オススメかは聞いておきたい

665:デフォルトの名無しさん
18/01/03 15:31:56.84 SZxPYOzJ.net
なんかもう言ってることがすごいな
>The MSYS2 DevKit などで、ユーザーが勝手に、
>Windows のネイティブコードにコンパイルして、動かしているようなものは、
>基本的には安全ではない。

666:デフォルトの名無しさん
18/01/03 16:02:22.19 Z3K4Tirs.net
サーバー設定はchef-soloが簡単かなー
鯖は最終借りて使うことになるし
AWS,VPSなんかに使いまわしできる。
dockerなんかも便利
web系はLinuxは必須。

667:デフォルトの名無しさん
18/01/03 16:02:34.32 vVUVg3Hi.net
結局Vagrant使ってVB入れて続きを動かしてみることにした

668:デフォルトの名無しさん
18/01/03 19:09:04.58 7RCD6iyC.net
自演で伸ばしてくれるのはありがたいけど、
はやくアンチスレへ帰りなよ

669:デフォルトの名無しさん
18/01/03 19:29:07.03 tD4HLGIX.net
>>647
ansibleの方がマシ
ただ俺に言わせりゃ冪等性が必要ない
使い捨てマシンの設定はシェルスクリプトでいい

670:デフォルトの名無しさん
18/01/03 20:20:36.21 vVUVg3Hi.net
>>649
アンチスレとかあるんか?そんな技術どうこうに、わざわざアンチとか騒いで
何か開発上のメリットでもあるのか?

671:デフォルトの名無しさん
18/01/03 22:02:49.25 ML6+3XhW.net
嘘を吹聴してる荒らしはまだおるんか?
はよーアンチスレへ帰れ
初心者スレで嘘ばっかりつきやがって

672:デフォルトの名無しさん
18/01/03 23:03:06.29 vVUVg3Hi.net
そこまで言うなら
他のスレに貼り付けてやろうか?
Ruby開発者はこんな連中ばっかりだと
Pythonスレとかあたりに

673:デフォルトの名無しさん
18/01/03 23:07:20.10 vVUVg3Hi.net
俺はPHPとかJavaScriptはMVCフレームワーク含めて経験あるし、納品実績もあるけど
RubyやRailsは本当に初心者だよ、去年まではRailsなんて名前しか知らんかった
一応上司に勉強しといた方がいいって勧められて、せっかくの正月休みなんで
意気込んで勉強してたんだよ
こんなところで質問した自分が心底馬鹿だったわ
初心者を罵倒するスレに改名してくれ

674:デフォルトの名無しさん
18/01/03 23:08:40.92 ML6+3XhW.net
おまえ、
他のスレを荒らすのもええ加減にやめろ
みんな迷惑しとるやろうが

675:デフォルトの名無しさん
18/01/03 23:21:54.41 dC+KJDFP.net
>648デフォルトの名無しさん2018/01/03(水) 16:02:34.32ID:vVUVg3Hi
>結局Vagrant使ってVB入れて続きを動かしてみることにした
例の荒らしがとうとう他スレに移住してくれるわけか
これはめでたい

676:デフォルトの名無しさん
18/01/04 00:11:00.11 Db2jLLtK.net
Docker、2016、オライリー
実践 Vagrant、Mitchell Hashimoto、2014、オライリー
Vagrant, Packer などで有名な、HashiCorp の創始者

Chef実践入門 - コードによるインフラ構成の自動化、2014
cookbookは各社が公開している
Chef社のopscode、Railsを作っている Basecamp社、
Berkshelfを作っている Riot Games社、
Pivotal Trackerを作っている Pivotal Sprout社、
aws, engine yard

677:デフォルトの名無しさん
18/01/04 00:18:08.10 Y2aN+Ibt.net
まーた誤爆してる
ログ残すのがそんなに大好きなのかな

678:640
18/01/04 01:01:51.01 Db2jLLtK.net
CentOS は、64ビット版のみで、32ビット版はもうやっていない。
Linux も徐々に、32ビット版を作らなくなってきた
Ruby で、ユーザーが勝手に、ソースコードからコンパイルしているような、
32ビット版のgem は、使えなくなってくる
gem の作者がほったらかしで、64ビット版をサポートしていないから、
こういうgem に依存しているアプリは、Linux でも動かなくなっていく

679:デフォルトの名無しさん
18/01/04 01:49:10.10 Y2aN+Ibt.net
何他人を語ってるんだよお前

680:デフォルトの名無しさん
18/01/04 02:54:14.07 IBQXDyQ6.net
これ、朝になったらアンチが発狂して自演繰り返すパターンだわ
俺知ってる

681:540
18/01/04 07:31:26.40 Db2jLLtK.net
Windows10 Home で、RubyInstallers の、7-Zip Archives の所からダウンロードした、
Ruby 2.4(x64) ポータブル版、The MSYS2 DevKit 無しで、
Nokogiri をインストールしたら、
コンパイル無しで、Windows用のバイナリgem がインストールできたのか?w
The MSYS2 DevKit は、インストールしていないけど
PS C:\Users\Owner\Documents\Ruby\proj01> bundle install
Fetching gem metadata from URLリンク(rubygems.org)
Resolving dependencies...
Using bundler 1.16.1
Fetching mini_portile2 2.3.0
Installing mini_portile2 2.3.0
Fetching nokogiri 1.8.1 (x64-mingw32)
Installing nokogiri 1.8.1 (x64-mingw32)
Bundle complete! 1 Gemfile dependency, 3 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
Post-install message from nokogiri:
Nokogiri is built with the packaged libraries: libxml2-2.9.5, libxslt-1.1.30, zlib-1.2.11, libiconv-1.15.

682:540
18/01/04 10:00:23.11 Db2jLLtK.net
Windows10 Home で、RubyInstallers の、7-Zip Archives の所からダウンロードした、
Ruby 2.4(x64) ポータブル版 (The MSYS2 DevKit 無し)に、最初から、
libxml2-2.9.5, libxslt-1.1.30, zlib-1.2.11, libiconv-1.15
などのコンパイル済みライブラリが入っているみたい
なので、The MSYS2 DevKit が無くても、
Nokogiri gem を入れるだけで動く
やってみたら、Nokogiri は、確かに動いた!
インストールの最難関と言われる、Nokogiri が、簡単にインストールできた!w
Ruby 2.4, gem, Nokogiri などの進化を感じた

683:デフォルトの名無しさん
18/01/04 10:31:04.56 M7dikhfh.net
>ID:Db2jLLtK
何度も言うが自演を繰り返して荒らすなら
アンチスレへ行け

684:デフォルトの名無しさん
18/01/04 14:21:55.97 0iUUJ0bW.net
質問
Arrayで事足りるケースにしかまだ出会ってないけど
Enumerableってどういう時に使うの?

685:デフォルトの名無しさん
18/01/04 19:16:52.27 q0THGQuz.net
>>665
p ([].each).class.ancestors

686:デフォルトの名無しさん
18/01/04 22:09:15.03 ByuqHChs.net
初歩の初歩な質問ですけど…
配列に0から99までの数字を一括で格納したいです
a = [0,1,2...と記述していてはとても長くなるので…
どうすれば良いのでしょうか?

687:デフォルトの名無しさん
18/01/04 22:18:08.37 gbqCK9B9.net
>>667
(0..99).to_a

688:デフォルトの名無しさん
18/01/04 22:19:23.96 E5yE4mKi.net
[*0..99]という書き方も

689:デフォルトの名無しさん
18/01/04 22:21:04.48 gbqCK9B9.net
そういえば (0..99).to_a で気づいたけど、>>665 のいう Enumerable は Range クラスも持ってるな
ちょうどいい例じゃね?

690:デフォルトの名無しさん
18/01/04 22:29:13.42 ByuqHChs.net
できました
ありがとうございました

691:デフォルトの名無しさん
18/01/05 01:12:43.58 DBj0On7v.net
EnumerableならPrimeクラスの使い方見てみるのもいいかもね

692:540
18/01/05 10:23:43.97 JCua7yNV.net
Windows10 Home 64ビット版に、
RubyInstallers の、7-Zip Archives の所からダウンロードした、
Ruby 2.4(x64)ポータブル版、The MSYS2 DevKit 無しで、
コンパイルせずに入れられる gem だけで、遊んでみた
以下は、入れた gem です
先に、bundler を入れて、以後のgem は、bundle install で入れた
rack-test は、sinatra のテストに使う。
Nokogiri
VS Code の拡張機能用の、solargraph
入れたgem と、irb, erb, minitest, sinatra が、正常に動いた

693:デフォルトの名無しさん
18/01/05 21:48:51.55 cNE023Or.net
#{hoge}などの形で入力をそのまま正規表現に入れた場合に、入力に正規表現が含まれていると意図しない挙動が起こると聞いたのですが、どのように回避するのが良いのでしょうか?

694:デフォルトの名無しさん
18/01/05 22:03:0


695:5.29 ID:Z2M9SnI/.net



696:デフォルトの名無しさん
18/01/05 22:28:18.08 wqtMql/4.net
>>674
#{hoge}などの形で入力をそのまま正規表現に入れない。
具体的には、Regexp.escape などでエスケープ処理した文字列を利用する。

697:デフォルトの名無しさん
18/01/05 23:28:05.64 MlGJfS7x.net
空港のwifiからアクセスした際にログイン出来ないという報告がありましてログを見たところ
ActionController::InvalidAuthenticityTokenというエラーが出ていました
CSRF対策の仕組みが関係することは分かったのですが
なぜこれが発生するのか分かる方いらっしゃいませんでしょうか

698:デフォルトの名無しさん
18/01/06 02:50:42.13 nSHs9ovb.net
空港やホテルは、設定が厳しい。
LAN 内ですら、お互いに通信できないだろ
隣の人のスマホと、アクセスできないだろ

699:デフォルトの名無しさん
18/01/06 02:53:50.34 qWm4dftC.net
>>678
つまり何が原因なのですか?

700:デフォルトの名無しさん
18/01/06 04:48:47.53 nSHs9ovb.net
空港やホテルの、wifiは危険だから、設定が厳しい
「空港 wifi セキュリティ」で検索!

701:540
18/01/06 07:03:24.91 nSHs9ovb.net
Windows10 Home 64ビット版に、
RubyInstallers の、7-Zip Archives の所からダウンロードした、
Ruby 2.4(x64)ポータブル版、The MSYS2 DevKit 無しで遊んでみた
日本語については、
Windows の設定画面から、ユーザー環境変数へ追加します。変数名・値は、
RUBYOPT
--encoding=UTF-8
これで外部エンコーディング・Encoding.default_external が、
Windows-31J から、UTF-8 へ変更されるので、
Ruby 起動時のコマンドライン引数に、日本語を使えます
ただし、この環境変数を追加すると、irb が動かなくなる。
この環境変数が無ければ、
irb -E CP932
で、Windows-31J で、正常に動くので、
irb を使う人は、環境変数を追加せずに使う

702:デフォルトの名無しさん
18/01/06 10:01:00.08 UsOHfVJQ.net
>>681
大変申し訳ないが一回だけ言うね
日記の続きは貴方の個人的なブログでお願いしたい
ここはみんなのスレなのでご理解ください

703:デフォルトの名無しさん
18/01/06 12:53:30.03 HbY4/bGY.net
続きはCMのあとで

704:デフォルトの名無しさん
18/01/06 12:58:28.05 jet593Ss.net
備忘録とか日記のネタとか書くのは問題ないだろ
普段はそこまで賑わっているスレじゃないんだから
雑談OKなわけだし、初心者にはありがたい情報じゃないのかな

705:デフォルトの名無しさん
18/01/06 13:52:44.37 FAOceAzc.net
レス読んでないけど、情報共有するならここに書くよりかQiitaにあげた方が有益だと思うけどね
まぁどっちでもいいわ

706:540
18/01/06 14:44:04.22 nSHs9ovb.net
irb のソースコードを見て、誰か、
外部エンコーディング・Encoding.default_external が、
UTF-8 でも動くように、修正してくれないかな?
それと、Windows で、Ruby を使っている人も、書き込んでほしい。
Windows の、Ruby 使いが少ない

707:デフォルトの名無しさん
18/01/06 14:49:07.31 ul9KuZX2.net
自分で直してPull Reques出せ
基本的にWin使いに人権はないので、Winのためにソースを汚すことは嫌われるから注意

708:デフォルトの名無しさん
18/01/06 16:19:36.81 wARzH3D0.net
I’m like pp, just like pp

709:540
18/01/06 16:33:25.64 nSHs9ovb.net
irb がクソみたいな描画ライブラリを使わずに、
GUI だけを、PowerShell を使ってくれたら良いのに。
PS なら、UTF-8 だし
ロジック・GUI が分離できていて、
簡単に、PS に切り替えられたら良いのに

710:デフォルトの名無しさん
18/01/07 10:13:45.01 X58Odkk6.net
お前は何を言ってるんだ
RubyはUNIXにべったり密結合している
それを良く思っていないのはRuby村においては被差別民であるWin使いだけ

711:デフォルトの名無しさん
18/01/07 16:15:03.18 Jk6U4+ev


712:.net



713:デフォルトの名無しさん
18/01/09 00:08:55.57 TW5vurZJ.net
Windows で、Headless Chrome でテストしている香具師いる?
Windows 10, Ruby, Chrome, Selenium WebDriver は、64ビット版だけど、
Windows 用の、ChromeDriver は、32ビット版しかないけど、これで正常に動くの?

714:デフォルトの名無しさん
18/01/09 05:18:26.25 l1AA5LW3.net
rubyからOpenGLを扱うgemがいくつかあるけど、
どれが一番使われてるの?

715:デフォルトの名無しさん
18/01/09 07:11:34.91 mcq0XcNK.net
RubyはRailsにしか使われてないよ

716:デフォルトの名無しさん
18/01/09 14:13:43.58 mJzCa8Tc.net
Unicodeコードポイントにスケープされた4バイト文字をJSON..#parseすると怒られるんだけど、何かいい方法ないかな?
愚直にgsubするしかないのかな
URLリンク(ideone.com)

717:デフォルトの名無しさん
18/01/09 14:17:01.33 hZWQBtrg.net
断交が良い

718:デフォルトの名無しさん
18/01/09 23:30:05.47 .net
>>695
RubyのJSON.parseがUnicodeコードポイントエスケープに未対応なのかな?
「¥u{XXXXX}」を「¥uXXXX¥uXXXX」に変換してやればよさそうだけどね

719:692
18/01/10 07:38:19.49 8FRtzSYP.net
Windows 10 Home, Ruby, Chrome, Selenium WebDriver は、64ビット版で、
ChromeDriver (32ビット版)も使えるけど、
Chrome v63 を、headless で使うと、エラーになる
「failed to launch gpu process.」
--headless, --disable-gpu を設定する必要がある
selenium-webdriver は、コンパイル無しで、gem を簡単にインストールできた
>>695-697
Ruby 2.4 からは、5バイト以上の絵文字なども、正規表現で使えると聞いた。
JSON では、そういう文字も使えないの?

720:デフォルトの名無しさん
18/01/10 12:32:40.29 8FRtzSYP.net
ReactDOM.render(
<div>
<h1>Hello, world!</h1>
<h2>texttext</h2>
</div>,
document.getElementById('app')
);
JavaScript の中に、直接HTML を書ける、
JSX みたいな書き方が、Ruby にある?
出来れば、erb のような書き方は、避けたい

721:デフォルトの名無しさん
18/01/10 16:07:42.64 STPlaxcQ.net
ヒアドキュメントは?

722:デフォルトの名無しさん
18/01/12 18:18:49.39 nl8PJm0M.net
iCloud 9のコマンドプロンプト打っても俺のパソコンに反映されないんですが助けて

723:デフォルトの名無しさん
18/01/12 22:23:27.82 .net
>>698
規格上は使えるけどRubyのJSONライブラリがまだ対応していないっぽい

724:デフォルトの名無しさん
18/01/21 21:58:25.57 Ycn/1JW2.net
改訂2版 パーフェクトRuby、Rubyサポーターズ、2017
この本は、ツールの説明なども多いから、読むのに時間がかかる

725:デフォルトの名無しさん
18/01/22 21:44:30.05 q3uir/RO.net
keyには現状:aか:bしか来ないけど将来的には増えるかもしれないとする。
ダックタイピングを意識して次みたいに書いてみたんだけどこれだと、
keyの種類が増えた時にそれに対応するクラスだけじゃなくてcase文も増やさないといけなくなる。
上手い書き方無いかな?
def hoge(key, value)
 x = case key
   when :a then A.new(value)
   when :b then B.new(value)
   end
 x.huga
 x.hage
end

726:デフォルトの名無しさん
18/01/22 22:06:22.86 LFdS7sNk.net
def hoge(key, value)
x = {a: A, b: B}[key].new(value)
x.huga
x.hage
end

727:デフォルトの名無しさん
18/01/22 22:32:29.51 O82cRrzF.net
def hoge(key, value)
x = Kernel.const_get(key.capitalize).new(value)
x.huga
x.hage
end

728:デフォルトの名無しさん
18/01/22 22:52:38.55 pYe1Cwj7.net
それは、典型的なオブジェクト指向の利点
派生クラスを使えば、switch~case 文が無くなるから、
その部分の修正もしなくてよい
各派生クラスで、クラス内でオーバーライドされた、同名のメソッドを呼ぶだけ

729:デフォルトの名無しさん
18/01/22 23:04:44.47 cFg1Yiat.net
レンタルサーバーにRubyをインストールする手順に関する質問はここで良いでしょうか?
Railsの方が良いでしょうか?

730:デフォルトの名無しさん
18/01/22 23:35:54.90 /Sj7yLHe.net
Webサイトちょっと動かしたいだけなら自分で運用構築なんて時間の無駄だからPaaS使うことを強くお勧めする

731:デフォルトの名無しさん
18/01/23 13:19:28.04 CDVCaOOu.net
環境構築には、vagrant, chef は、Ruby でレシピ(手順書)を書ける。
Docker もある
仮想環境コンテナ総合スレ Docker、Vagrant等 [無断転載禁止]c2ch.net
スレリンク(tech板)

732:デフォルトの名無しさん
18/01/23 20:57:16.21 STirpdQ8.net
FJORD BOOT CAMP(フィヨルドブートキャンプ)
URLリンク(bootcamp.fjord.jp)
無職なら誰でもオンライン無料学習

733:デフォルトの名無しさん
18/01/23 23:03:46.38 CDVCaOOu.net
Ruby の女神・池澤あやかは、島根県のRuby合宿で、Rubyを極めたらしい

734:デフォルトの名無しさん
18/01/24 23:02:47.87 ap7jtKrX.net
今日mechanizeを使い出したんだけどいいなこれ
なんで今まで使わずにスクレイピングしてたんだろってくらい感動した

735:デフォルトの名無しさん
18/01/25 03:45:42.62 1frilWR+.net
本の虫: 60%の人間はプログラミングの素質がない
URLリンク(cpplover.blogspot.jp)

736:デフォルトの名無しさん
18/01/25 15:25:13.47 d3UPMMWN.net
バージョン2.2.0以降次のコードがSecurityErrorにならないんだけど、仕様が変わってマニュアルの情報が古くなってるのかな?
$ ruby -ve '$SAFE = 1; open(ARGV[0])' hoge
Traceback (most recent call last):
2: from -e:1:in `<main>'
1: from -e:1:in `open'
-e:1:in `initialize': No such file or directory @ rb_sysopen - hoge (Errno::ENOENT)

737:デフォルトの名無しさん
18/01/25 18:01:16.77 SW6+fB/4.net
>>714
fizzbuzz

738:デフォルトの名無しさん
18/01/25 19:53:33.66 8RoLWIQ9.net
>>715
ARGVの文字列がexternal_str_new_cstr()で作られてるみたいだけど、
windowsだとUTF8_PATHが真になって、文字列がrb_external_str_new_cstr()で作られてないから
taintになってないっぽい

739:デフォルトの名無しさん
18/01/26 19:35:15.96 ywFtALU+.net
atomのautocomplete-rubyが動かないです
rsenseのパスは通しているのですがエラーが出ます
rsense startを実行後、localhost:47367にアクセス出来ないことから
rsenseのエラーだとは思うのですが対策がわかりません。
ruby 2.4.1、rsense 0.5.18 です
URLリンク(teratail.com)
ではJRuby 1.7.26にしてからrsenseをインストールするとできると書いてありましたが、JRuby 1.7.26ではrsenseがインストールできませんでした。
エラーは下記
autocomplete-ruby: exec error: Error: Command failed: ~/.rbenv/versions/2.4.1/bin/rsense
start --port 47367 --path /Users/{ユーザー名}/Programming/ruby-book
rsense version 0.5.18
Usage: rsense <start|stop|restart>
/bin/sh: line 1: start: command not found
(You might need to set the rsense path, see the readme)

740:デフォルトの名無しさん
18/01/26 22:16:50.68 lWqampzR.net
>/bin/sh: line 1: start: command not found
start コマンドは存在しない
>(You might need to set the rsense path, see the readme)
rsense のユーザー環境変数PATH を設定しないといけないのかな?
まあ、readme を読んで
>autocomplete-ruby: exec error: Error: Command failed: ~/.rbenv/versions/2.4.1/bin/rsense
> start --port 47367 --path /Users/{ユーザー名}/Programming/ruby-book
これは全体で、1行のコマンドじゃないのか?
これを、rsense の後ろで、改行して打ったのか?
1行で打つか、または行末で改行を、\(バックスラッシュ)でエスケープすれば?
行末を「rsense \」とする

741:デフォルトの名無しさん
18/01/26 22:22:02.58 lWqampzR.net
端末・コマンドプロンプトなどで、
which rsense, where rsense などと打てば、
rsense の実行ファイルがあるディレクトリが、
環境変数PATH に設定されているかどうかがわかる

742:デフォルトの名無しさん
18/01/26 22:26:40.41 lWqampzR.net
rsense の実行ファイルがあるディレクトリが、
環境変数PATH に設定されているなら
~/.rbenv/versions/2.4.1/bin/rsense のように、パスを付けて書かなくても、
単に、rsense と打っても、実行ファイルを探せる
rsense start --port 47367 --path /Users/{ユーザー名}/Programming/ruby-book
だから、こう打てばよい

743:692
18/01/26 22:52:43.92 lWqampzR.net
Windows10 で、poltergeist のインストールに失敗
Fetching websocket-driver 0.7.0
Installing websocket-driver 0.7.0 with native extensions
MSYS2 could not be found.
websocket-driver-0.7.0-java.gem をダウンロードしたけど、MSYS2 を入れていないから。
(MSYS2 は、2GB 近くあるらしいので、わざと入れていない)
このgem ファイルは、Windows用のコンパイル済みバイナリではないの?
Anemone, mechanize は、静的なHTML用じゃないの?
JavaScript も解釈できるの?
poltergeist から、phantomJS を使おうとしたけど、インストールできないから、
>>698
で書いたように、Chrome のヘッドレスモードを使っている

744:718
18/01/26 23:10:28.98 ywFtALU+.net
>>719
atomでの話とターミナルでの話が混ざっていてすみません。
atomでパスを ~/.rbenv/versions/2.4.1/bin/rsenseと書くと718で書いたエラーが出ます。
エラー内容はstartコマンドがないと言っているので確認のため
ターミナルで$ rsense startと打つとプロセスは走ります。
ただプロセスが走っているのにlocalhost:47367にアクセスできません。

745:デフォルトの名無しさん
18/01/26 23:32:26.03 lWqampzR.net
localhost は、つながらないとか、色々とバグるから、
127.0.0.1:47367 を使うこと
rsense start で、サーバーは確かに、47367 ポートで起動しているのか?
lsof とかで、開いているポートを調べる

746:デフォルトの名無しさん
18/01/26 23:46:55.80 lWqampzR.net
>atomでパスを ~/.rbenv/versions/2.4.1/bin/rsenseと書くと718で書いたエラーが出ます
漏れも、VS Code を使っているけど、
VS Code 内のPowerShell では、よくバグるから、
外部でPowerShell を起動して使っている
外部から、コマンドプロンプト・端末・PowerShell を起動してやれば?

747:デフォルトの名無しさん
18/01/26 23:58:30.46 lWqampzR.net
>atomでパスを ~/.rbenv/versions/2.4.1/bin/rsenseと書くと718で書いたエラーが出ます
~(チルダ)が、自分のホームディレクトリに解決できないとか?
.rbenv って、探索パスの順序を入れ替える、仮想化技術だろ。
環境変数PATH の一番前に、追加しているから、危険で影響が大きそう。
.rbenv について、よく調べた方が良いかも
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
また、rbenvでrubyをインストールしたり、gemでパッケージをインストールした後は、
rbenv rehashを実行しなければならないとか

748:デフォルトの名無しさん
18/01/27 00:21:43.19 PF3DsJ0N.net
> .rbenv って、探索パスの順序を入れ替える、仮想化技術だろ。
なにも仮想化してないので、仮想化技術ではない

749:デフォルトの名無しさん
18/01/27 01:59:43.65 lUeqkPr+.net
pyenv, virtualenv(venv)などのPythonの仮想環境構築も、これと同じ
環境変数PATH の前方に、パスを追加して、実行するコマンドの探索パスを変えることで、
実行されるファイルを変える

750:718
18/01/27 19:34:18.97 sDN5LFGv.net
rsenseがどうにも動かないのでatomでは他の補完パッケージを使うことにしました

751:デフォルトの名無しさん
18/01/27 20:20:50.96 lUeqkPr+.net
bundle exec を付けないと、パスが探せないとか

752:718
18/01/27 20:33:08.71 sDN5LFGv.net
>>730
ターミナルではコマンドが実行できるのでパスは通っているはずなんですが
指定されたポートのローカルサーバーにアクセス出来ない。
($ rbenv which rsense で ~/.rbenv/versions/2.4.1/bin/rsense が出ます)
atomではパスを通す前はno such directryのエラーがパスを通すとcommand not foundになるので
パス自体は通っているとは思うのですがコマンドが見


753:つからない理由がわからない。 すみません、いろいろ言ってもらったのですが改善できなそうでした。



754:デフォルトの名無しさん
18/01/28 23:07:14.79 +HoRx5lM.net
Rubyスクリプト内から別のRubyスクリプトを実行して、エラーが出ても元のRubyスクリプトの処理を止めない方法はありますか?

755:デフォルトの名無しさん
18/01/28 23:22:35.75 ALu/+v8Q.net
シェルコマンドでruby実行すればいいだろ
所詮Rubyなんか書捨てスクリプトなんだからスマートさなんか気にしないで手っ取り早い方法を選べばいい

756:デフォルトの名無しさん
18/01/29 00:28:48.72 3fqaX6d7.net
UNIXならProcessクラス使えば

757:デフォルトの名無しさん
18/01/31 00:19:33.04 ah9e2u9N.net
>>719
にも書いたけど、
>autocomplete-ruby: exec error: Error: Command failed: ~/.rbenv/versions/2.4.1/bin/rsense
> start --port 47367 --path /Users/{ユーザー名}/Programming/ruby-book
これを、1行で打たないといけない!
これを、rsense の後ろで、改行したらダメ!
それか、{ユーザー名} のユーザー名に全角文字を使ったとか、半角空白が入っているとか。
どこかに半角空白が入っていると、そこで区切られるから、引数が多くなるのでエラーになる。
だから、" " で囲う必要がある
--path "/Users/{ユーザー名}/Programming/ruby-book"
これを、" " で、囲ってみ
>>731
エラーメッセージが、no such directry から、command not found に変わったなら、
rsense コマンドは使えるけど、たぶん、そのサブコマンドが間違っている
>Usage: rsense <start|stop|restart>
rsense の後に、これらのサブコマンドを正しく続けなければならない
>>721
にも書いたけど、
~/.rbenv/versions/2.4.1/bin/rsense のように、パスを付けて書かなくても、
単に、rsense と打っても、実行ファイルを探せる
rsense start --port 47367 --path "/Users/{ユーザー名}/Programming/ruby-book"
それと、Linux なら、/var/log の下にあるログファイルを見て、
もっと詳しいエラーメッセージを取得して検索する

758:デフォルトの名無しさん
18/01/31 01:31:31.84 ah9e2u9N.net
>>732-734
外部コマンドをバッククォートで囲むとか、IO.popen を使って、
終了ステータス「$?」で分岐する
Rubyで外部コマンドを実行して結果を受け取る方法あれこれ
URLリンク(qiita.com)
resText = ""
IO.popen("where notepad") { |io| resText = io.read }
puts "終了ステータス : #{$?}"
puts resText
出力結果
終了ステータス : pid 9872 exit 0
C:\Windows\System32\notepad.exe
C:\Windows\notepad.exe

759:デフォルトの名無しさん
18/02/07 21:03:36.63 /4oaORK0.net
Windows向けのRubyバイナリですが
ASRの2.5はいつ出るんでしょうか?
RubyInstallerはOLEがうまく動かないのでASRを使っています。

760:デフォルトの名無しさん
18/02/07 21:24:44.94 N9vep8wO.net
RubyはWindowsで使うものではない
WinでRubyなんてプロダクションでは全く使われていないので、最新バージョンに追従しなければ何かまずいことになるというプレッシャーは無く、
有志が気が向いたときに遊びでやってるだけだ
そんなものに期待するのがそもそもの間違い
いい加減諦めてWSLかVMかMacに移行しなさい

761:デフォルトの名無しさん
18/02/07 21:42:14.34 ZXClH+OJ.net
WindowsでRuby使うとかマゾもいいとこ。
おとなしくPythonにしとけばいいのに。
日本語の情報が豊富!とか言って初心者釣ってたやつらにも責任がある。
コミュニティがシェア9割のWindowsを親の仇のように嫌ってる時点で初心者向けなんか有り得ないというのに。

762:デフォルトの名無しさん
18/02/08 04:05:47.94 31uXy/SD.net
Windows10 Home で、WSL(Windows Subsystem for Linux)正式版を簡単に導入できた
MS Store から簡単に、Ubuntu 16.04 をダウンロードできた。
サイズは、200MB ほど
パッケージマネージャーで、Ruby 2.3 も簡単にインストールできた

763:デフォルトの名無しさん
18/02/08 04:50:05.31 lklijtOD.net
できたんだ

764:デフォルトの名無しさん
18/02/08 06:54:03.75 ZE8Ol0Sg.net
>>737
OLEがうまく動かないってどういうこと?

765:737
18/02/08 18:58:35.45 zFeCrx9M.net
>>742
リモートのデータベースに接続できない

766:デフォルトの名無しさん
18/02/08 19:31:35.11 x393c3Y0.net
最近のwindowsは32bit版のODBCと64bit版のODBC分かれてるから
データソース作るときにどっちか逆になると繋がらないことがたまによくある

767:737
18/02/08 20:06:16.19 zFeCrx9M.net
環境はwindows7の32bitだ
そんで同じスクリプトで
ASRなら繋がるけどRubyInstallerだと繋がらないんだ

768:デフォルトの名無しさん
18/02/09 01:32:56.68 JPCfoDnF.net
まず、エラーメッセージを取得して、それで検索することから始める

769:デフォルトの名無しさん
18/02/09 01:36:30.27 ZFL6conz.net
そして5年前の情報とかしかなくて終わる

770:デフォルトの名無しさん
18/02/09 18:48:38.40 g1sd4Kag.net
AWSのCloud9のRubyで アラーム代わりにwavやmp3を再生したいんですけど、かんたんにできるでしょうか

771:デフォルトの名無しさん
18/02/09 19:25:09.92 FL1yxC1J.net
bokete みたいなwebサイト作りたいんですけど何種類かアイデアあるんすけど
ruby ➡ Ror
php ➡ WordPress
どっちがいいっすか?

772:デフォルトの名無しさん
18/02/10 01:08:50.39 TNdj3qFT.net
ruby -e "puts 'abc'"
ruby -e 'puts "abc"'
1-liner で、上はWindows、下はLinux でのクォーテーションだけど、
簡単に相互を置換する方法はない?
ruby -e "puts 'abc'"
例えば、これの、" を' に置換すると、
ruby -e 'puts 'abc''
となって、区別できなくなる
>>749
もちろん、Rails

773:デフォルトの名無しさん
18/02/10 01:37:14.21 dbzbK1DZ.net
>>748
Ruby関係ない
純粋にJavaScriptやHTML5の話

774:デフォルトの名無しさん
18/02/10 08:42:39.65 BVqOrgag.net
>>750
WindowsだろうがLinuxだろうがワンライナーならどちらのクォーテーション・マークでも動作するから置換する必要はない
それでも置換するなら、簡単なものなら..tr('"\'','\'"')
真面目にやるなら式中の"を%Qに'を%qにでもすればいいんじゃない

775:デフォルトの名無しさん
18/02/10 17:44:21.82 3K6ZWpKd.net
Array#zipに関する質問です。
aを二次元座標[x, y]の配列として
a[0].zip(*a[1..-1])と同じ動作を効率的にできるだけ短く書くコードを教えてください。

776:デフォルトの名無しさん
18/02/10 17:55:38.94 eFhUfahp.net
>>753
そんなところをハックしてもパフォーマンスは一ミリも改善しません
速くしたいなら他の言語を使うか、SQLをチューニングましょう

777:デフォルトの名無しさん
18/02/10 20:29:37.87 Jen4nAbv.net
aの要素数が滅茶苦茶多いと、引数に渡すだけで大変そう

778:デフォルトの名無しさん
18/02/10 21:53:50.96 ELWGSSBQ.net
引数を渡すかわりに引導を渡してみては?

779:デフォルトの名無しさん
18/02/10 22:18:46.37 BVqOrgag.net
速いかは知らないけど
a.transposeでいいんじゃないの

780:デフォルトの名無しさん
18/02/11 18:24:55.59 ONLKHfKt.net
>>757
transposeなんてメソッド存在していたとは……知らなかった。
というかriのArray#zipで言及して欲しい。

781:デフォルトの名無しさん
18/02/11 20:12:19.15 aLeqVhz7.net
残念だが手遅れ

782:デフォルトの名無しさん
18/02/11 20:17:25.63 JLQLPcxv.net
よく使うクラスだけでもマニュアル全部読んでおくといいよ大した量じゃないし

783:デフォルトの名無しさん
18/02/12 13:39:48.05 S+p/PDus.net
普通は、transpose ぐらいあるだろ。
R なんて、行列が逆だから、transpose が無かったら、混乱する
module Enumerable だけは、読んでおけ

784:デフォルトの名無しさん
18/02/14 16:44:54.84 gwupYb1h.net
Windows10 の、Chrome の自動操作で、
SeleniumWebDriver では、Ruby から起動したブラウザが、閉じてしまう。
sleep で、待つ事はできるけど
ブラウザが閉じないように、出来ないの?
それか、iMacros を使うしかないのか?

785:デフォルトの名無しさん
18/02/17 22:07:32.61 IU1gsQgu.net
ActiveRuby (Beta 版)と言う、Rails など、40 gem、有用なライブラリ一式をまとめた、
Windows 用の、Precompiled Ruby があるね
Ruby 2.3.4 で、容量は、1GB

786:デフォルトの名無しさん
18/02/17 22:10:01.26 C+rXeEsA.net
何で句読点そんななの?

787:デフォルトの名無しさん
18/02/19 08:06:13.46 FUvFB9Jm.net
URLリンク(www2.ske48.co.jp)
これをみたまえ

788:デフォルトの名無しさん
18/02/19 08:14:01.13 NxG0QMWB.net
戦場カメラマンかよ

789:デフォルトの名無しさん
18/02/21 12:00:51.75 YvXKEUAS.net
RubyのClassクラスはObjectクラスのインスタンス。
そんでもって、自作MyClassクラスを作れば、Classクラスのインスタンスとなる。同時に、Objectクラスを継承する。
ってことは、Objectのインスタンスメソッド、ClassのインスタンスメソッドをMyClassのインスタンスは継承している。

790:デフォルトの名無しさん
18/02/21 20:05:24.59 HEIjAjBo.net
Classクラスのクラスメソッドは、
自作MyClassクラスのクラスメソッドとなるか?

791:デフォルトの名無しさん
18/02/21 20:07:58.08 gGEObxum.net
なるよ

792:デフォルトの名無しさん
18/02/21 21:00:07.80 HEIjAjBo.net
Classクラスの特異クラスのインスタンスメソッドは、
自作MyClassクラスのクラスメソッドとなるか?

793:デフォルトの名無しさん
18/02/21 21:07:50.97 HEIjAjBo.net
オブジェクトの特異クラスのメソッドは、
そのオブジェクトの特異メソッドとなる。
では、オブジェクトの特異クラスのそのまた特異クラスのメソッドは、
そのオブジェクトの特異クラスメソッドとなるか?

794:デフォルトの名無しさん
18/02/21 21:13:10.82 6K5cWIBm.net
ご覧ください。
こういう処理すべき本質と離れた下らないことしか話すことのないクソ言語とハエ信者たちです。

795:デフォルトの名無しさん
18/02/21 22:26:16.94 No3TMOHA.net
ご覧ください
こういうプログラミングの話題でない煽りしかできない底辺です

796:デフォルトの名無しさん
18/02/21 22:42:56.90 gGEObxum.net
簡単に実装できるんだから自分で試せばいいのに

797:デフォルトの名無しさん
18/02/22 18:58:12.64 mWjDtu6E.net
>>772 に言わせれば:
・以下の記事の内容は「処理すべき本質と離れた下らないこと」であり、
・以下の記事に登場するのは「クソ言語」であり、
・以下の記事の著者は「ハエ信者」なんだろね
Pythonのオブジェクトとクラスのビジュアルガイド – 全てがオブジェクトであるということ
URLリンク(postd.cc)

798:デフォルトの名無しさん
18/02/22 19:49:41.37 w/32fA/q.net
pythonごときクソ言語に劣等感抱いててワロタwww
追い詰められ過ぎwww消えそうwwwww

799:デフォルトの名無しさん
18/02/22 22:20:20.36 3IU5aIfi.net
クソだろうが何だろうが使われたもの勝ち

800:デフォルトの名無しさん
18/02/22 22:26:35.15 K6gwUVsb.net
Ruby にも、アルゴリズム・数学系のライブラリが揃っていれば、
蛇には負けぬものを。ぐぬぬぬぬ
実際、プログラミングコンテスト・パズル系は、Rubyで説明することが多いのに

801:デフォルトの名無しさん
18/02/23 04:41:21.61 rDH2T2Uu.net
今日からRubyの勉強する
楽しみ

802:デフォルトの名無しさん
18/02/24 23:08:36.72 ysq1mmzI.net
Ruby 2.6.0-preview1 リリース
URLリンク(www.ruby-lang.org)

803:デフォルトの名無しさん
18/02/25 04:05:29.41 pcyqC+jB.net
numbers = (1..7).to_a
この配列を、前から走査して、ある数字が見つかった時、
その数字より前の配列と、その数字を含めて、その数字より後ろの配列に、
1-pass で分ける、簡潔な書き方はありますか?
partition, group_by, each_with_object とか?
例、4 が見つかった場合
[1,2,3]
[4,5,6,7]

804:デフォルトの名無しさん
18/02/25 04:12:39.42 OLqFO2yC.net
ありまぁす!

805:デフォルトの名無しさん
18/02/25 08:53:07.29 Mg3bT8JO.net
元の配列に4が1つしかなくてソート済みならpartitionでいいんじゃない
numbers.partition{|e| e < 4}
そうじゃないなら素直にやるしかないかと
i = numbsers.find_index(4)
numbers[0...i]
numbers[i..-1]
もしくは
numbers.take_while{|e|e != 4}
numbers.drop_while{|e|e != 4}

806:781
18/02/25 08:59:55.65 pcyqC+jB.net
SASS, HAML, Markdown とか、皆どれを使っているの?
>>783
ありがとう。素直にやるしかないですか

807:デフォルトの名無しさん
18/02/25 10:55:59.02 mAmrOOAm.net
Rails6開発開始

808:デフォルトの名無しさん
18/02/25 11:54:19.33 OLqFO2yC.net
>>784
ありまぁす!って言ってんだろうが

809:デフォルトの名無しさん
18/02/25 11:58:14.59 OLqFO2yC.net
[1, 2, 3, 4, 5, 6, 7].slice_before(4).to_a
=> [[1, 2, 3], [4, 5, 6, 7]]

(to_aはEnumeratorをそのまま使うようにすれば不要)

810:デフォルトの名無しさん
18/02/25 12:22:26.69 caIICGcE.net
これからRuby on RAILS勉強するんですけど
なんかいい参考書とかHPありますか?

811:781
18/02/25 12:57:24.51 pcyqC+jB.net
>>787
(1..7).slice_before(4).to_a
=> [[1, 2, 3], [4, 5, 6, 7]]
[1,2,4,5,4,6].slice_before(4).to_a
=> [[1, 2], [4, 5], [4, 6]]
slice_before だと、探している数字が複数回あると、
そこから新たに、グルーピングが始まる
>>788
改訂3版 基礎 Ruby on Rails、黒田努・佐藤和人、2015
実践Ruby on Rails 4: 現場のプロから学ぶ本格Webプログラミング、黒田努、2014
黒田の本は、わかりやすい。
ただし、他の著者で、Rails 5 の本も出ているかも

812:デフォルトの名無しさん
18/02/25 13:36:01.35 OLqFO2yC.net
> slice_before だと、探している数字が複数回あると、
> そこから新たに、グルーピングが始まる
仕様どおりだろ

813:デフォルトの名無しさん
18/02/27 16:15:39.63 shVfNcyg.net
erbとかのテンプレートを元に画像を生成するgemってありませんか?
thinreportsでpdfではなくbmp,pngなどの画像を出力する感じです

814:デフォルトの名無しさん
18/02/27 21:18:11.05 PLAOSS1/.net
「selenium webdriver screenshot」で検索!
Electron でも出来る

815:デフォルトの名無しさん
18/02/27 21:25:08.90 +EUBPr3t.net
inline_svg とか?

816:デフォルトの名無しさん
18/02/28 00:12:23.88 mWE0Cmql.net
>>784
AsciiDoc/Asciidoctor

817:デフォルトの名無しさん
18/02/28 19:08:53.94 acVWAXbg.net
シェルコマンドでimagemagick呼べばいいよ
gemすら使わずに一瞬でできる

818:デフォルトの名無しさん
18/02/28 21:12:02.76 mIXPiXOq.net
TSVデータを処理したいんですが
末尾の空白文字(タブ)がいつの間にか消えてしまいます
splitが自動削除するのは分かったけど他でも消えてる様です
この暗黙の空白削除現象を検索しても引っかからないんですがいい検索単語はないですか?
あと勝手に削除する理由はなんなんでしょう

819:デフォルトの名無しさん
18/02/28 21:36:50.04 bddDF+sp.net
URLリンク(docs.ruby-lang.org)

820:796
18/02/28 22:18:52.36 mIXPiXOq.net
原因分からなかったけど解決しました
ループ内で毎回Hashに加えていくのを一旦stringにまとめてから
ループ後のHashに加えるようにしたら"\txxxxx\t\n"の後ろのタブが消えなくなりました

821:796
18/02/28 22:22:19.89 mIXPiXOq.net
前に壊したデータ読み直してました

822:デフォルトの名無しさん
18/03/02 00:03:53.83 7c4/pzB6.net
windows環境でrRubyinstaller2でインストールしてruby.exeのパスに非アスキー文字が含まれていると
requireしたときに$LOAD_PATHの非アスキー部分が文字化けしてload errorが起きるんですけど何か対処法はありませんでしょうか?
その場的に今はUTF-8で書いたコードの中で$LOAD_PATHに対応するパスを挿入して動かしてるんですが。。。
諸事情によりrubyはアスキー文字配下にインストールできないものとします

823:デフォルトの名無しさん
18/03/02 03:54:56.19 QlU5Q+B8.net
今すぐアンインストールしてWSLを入れよう

824:デフォルトの名無しさん
18/03/02 05:39:12.36 xypD9Mi9.net
>>800
バグ報告してくるんだ

825:デフォルトの名無しさん
18/03/02 07:54:43.19 mIGjbFX+.net
Windows のirb でも、ascii 以外は正常に動かないから、
irb を使う時だけ、WSL・Ubuntu の方を使っている
UTF-8 では、cp932(shift-jis)が読めないのだろう
起動時オプションで、cp932 を指定すれば、読めるかも知れないけど、
逆にRuby 内部で、cp932 はヤバイのじゃないか?
UTF-8以外を使うと、他のアプリと通信できないとか、バグりそう
とにかく、PC のユーザー名・パス名などに、半角英数字以外を使うと、
多くのアプリでバグる

826:803
18/03/02 11:51:22.61 mIGjbFX+.net
Windows のPowerShell から、Ruby の1-liner を実行すると、ファイル名だけが\x 表示された。
PowerShellのデフォルト文字コードが、UTF-8 だから、フォルダ名は正常に表示された
> ruby -rfileutils -e "puts FileUtils.pwd"
C:/Users/Owner/Documents/あいう
> ruby -e "p Dir.glob('*')"
["\x{8345}\x{8343}\x{838B}\x{8358}.txt", "\x{8376}\x{838D}\x{834F}\x{838C}.txt"]
> ruby -E :shift_jis -e "p Dir.glob('*')"
起動オプションに、外部エンコーディングをUTF-8のままで指定せず、
内部エンコーディングだけをshift_jis に指定すると、正常に表示された
["ウイルス.txt", "プログレ.txt"]
漏れは一々、起動時やファイル内に、文字コードを指定するのが面倒なので、
Windowsのユーザー環境変数に、RUBYOPT を追加して、--encoding=UTF-8 を設定している。
ただし、こうすると、irb が動かなくなるので、Windows10 のWSL・Ubuntu のirb を使っている
一方、WSL・Ubuntu・bash から、上記を実行すると、
デフォルトで、どちらも正常に表示された
Windows で実行する場合は、PowerShellはUTF-8、コマンドプロンプトはCP932 がデフォルトだから、
これらのシェルの文字コードか、Ruby側の文字コードを指定する
まあ、shift_jis の処理は、危険だと思う。
①などのWindows独自のCP932文字(環境依存文字)があって、
shift_jis・CP932は微妙に異なるから、どこまで正常に動くか分からない

827:デフォルトの名無しさん
18/03/02 12:00:42.65 OCKmRFPd.net
なにをごちゃごちゃやってんだ?
こういうのは変換すべきレイヤーで変換するだけの話だろ
Rubyのスクリプト(に限らないが)は
どこでも同じように動かすんだから
ソースコードも内部も UTF-8だ
画面への入出力時に変換させればいいだけ
コマンドプロンプトをUTF-8に変換するって手もある
海外じゃCP932という日本専用の文字コード使ってないことぐらいわかるだろ?

828:デフォルトの名無しさん
18/03/02 12:39:35.62 vnF4MMGw.net
元々はwindowsのワイド文字をうまくutf8に変換してやってこうという方針だったのに
nobuがロケールに変換させまくって動かないだけ
まあ誰もバグ報告しないのも悪いけど

829:803
18/03/02 13:14:57.35 mIGjbFX+.net
Rubyist は、RubyでGem を作れるけど、C で低レベルなI/O を書けるわけじゃない
また、Linux・Windows の両方に対応させるのは、難しい

830:803
18/03/02 16:17:45.17 mIGjbFX+.net
library irb/input-method
URLリンク(docs.ruby-lang.org)
class IRB::ReadlineInputMethod のソースコードを見れば良いの?
それとも、GNU Readline のソースコードかな?
Windows のirb で、日本語がバグるのは、
根本的に、GNU Readline が、Windowsの日本語を考慮していないからじゃないの?

831:デフォルトの名無しさん
18/03/02 16:40:11.45 ypGJ9h8+.net
というかrubyコミュニティがwindowsを考慮してない。
むしろ怨み、蔑み、嫌っている。昔から。

832:デフォルトの名無しさん
18/03/02 17:18:20.26 0lL3/u0V.net
>>809
そだねー

833:803
18/03/02 17:55:40.44 mIGjbFX+.net
console.log("あ");
Windows で、node (REPL)を実行したけど、
日本語を入力しても、PowerShell・コマンドプロンプトの両方で、正常に動く

834:デフォルトの名無しさん
18/03/02 23:07:42.42 wSJnGqkk.net
RubyはLinuxで動かすようにすればいいよ
WindowsでちょこっとしたやりたいことがあるならC#使え、と
どうせ仕事でやってるRubyはLinuxで動くんだからさ
Windowsマシンでの開発ならVMかDocker使えばすべて解決

835:デフォルトの名無しさん
18/03/03 01:14:23.68 vdurK0jv.net
ありがとうございました
ググってみたら結構前から報告されていたバグみたいなので諦めることにします

836:デフォルトの名無しさん
18/03/03 01:19:41.29 GGmAMA7z.net
>>800
$LOAD_PATHをforce_encoding()で環境に適応したエンコーディングを設定したら?
あるいは、バイナリに設定して、むりやりそれっぽいバイトデータをつっこむとか?

837:デフォルトの名無しさん
18/03/03 01:21:46.51 GGmAMA7z.net
>>808
chcp 65001とかしてもダメかね?

838:デフォルトの名無しさん
18/03/03 15:41:40.19 VQ/a88pK.net
cmd で chcp 65001 するくらいなら
git for windows インスコして git bash (mintty) 使うと幸せになれるぞ

839:デフォルトの名無しさん
18/03/03 15:43:54.56 x/6oRrTp.net
65001 は右端とか折り返し表示がバグるね

840:803
18/03/03 15:49:49.91 HcfLoqAp.net
Ruby の起動オプションに、外部・内部エンコーディングか、RUBYOPT で指定できる。
ファイル内でも指定できる
それと、PowerShell・コマンドプロンプト、WSL・Ubuntu・bash で指定できる
これらの組み合わせの中で、文字化けしない組み合わせを探す
または、$LOAD_PATH の辺りで、指定するとか

841:デフォルトの名無しさん
18/03/03 17:58:14.02 URsJSGy/.net
Rubyの2.5.0p2をRubyインストーラーでインストールしたらRubyの2.5.0p0だった・・・

842:デフォルトの名無しさん
18/03/03 18:17:52.81 A+Ivs8ru.net
patchlevelはもう無いよ

843:デフォルトの名無しさん
18/03/03 18:26:46.78 VQ/a88pK.net
>>818
そんな試行錯誤は一番あかんやつや

844:デフォルトの名無しさん
18/03/03 21:39:09.27 rw2aiDdk.net
そうそう。結局 Rubyやirb に問題が有るんじゃなくて
単に >>803 が理解してないだけ

845:デフォルトの名無しさん
18/03/03 21:55:10.06 GRjh9/QH.net
そういうことだから理解できない初心者は間違ってもrubyなんか使おうと思わないようにね。
初心者や子供にruby勧めてくるのは例外なくマウント取りたいだけのクズだぞ。

846:デフォルトの名無しさん
18/03/03 21:56:04.27 ETPjeMg1.net
書籍のサンプルコードの一部です
この@memoという変数はいわゆる辞書形式のデータ構造で
[remain, pre]は辞書のキー(複合キー?)という理解でいいんでしょうか
ちなみに@を付けないとどうなりますか
変数名に記号が付くのが凄く気になります
@memo = {}
# 計算結果をメモする
@memo[[remain, pre]] = cnt

847:デフォルトの名無しさん
18/03/03 22:30:11.11 gHPIEkfR.net
>>824
[remain, pre]は辞書のキーって理解であってる
irb等のREPLで試すとすぐ分かる
@はインスタンス変数に付けるプレフィクス

848:デフォルトの名無しさん
18/03/04 00:30:02.17 99M3BGnn.net
>>825
ありがとうございました

849:デフォルトの名無しさん
18/03/04 02:42:13.82 Oz1ASWrr.net
キーに配列が使えるのか・・・

850:デフォルトの名無しさん
18/03/04 04:12:18.75 aAfADGFK.net
オブジェクトはなんでもイケるんじゃなかったっけ?
ハッシュ値さえちゃんと返せば。

851:デフォルトの名無しさん
18/03/04 11:33:10.30 7gUy2hud.net
キーにした配列を変化させた時はrehashしないとキーが一致しなくなる
文字列のキーは変化させても、キーはセットしたときのまま

852:デフォルトの名無しさん
18/03/04 11:34:10.89 Oz1ASWrr.net
なるほどね。先入観として[a,b]ってかいたら毎回newされて、
キーとしては未定義値のnil固定か、別オブジェクト扱いで不定になるか、と思えた

853:デフォルトの名無しさん
18/03/05 16:37:38.89 62GuhFZ7.net
str = <<'EOT'
str = << 'EOT'
here doc で、下のように、<< の後ろに半角空白があると、文法エラーになる
それと、WSL のUbuntu 側にインストールしたRuby で、
Windows 側にあるCSV ファイルを処理すると、
改行コードが異なるから、不正な形式のファイルと言われる。
改行コードを、LF だけに変えると、正しく処理できる

854:デフォルトの名無しさん
18/03/05 22:15:57.90 xs+Qg6beE
便乗して報告するよ。
exp()の前後でxの正負が逆転します。
たぶん、Cで書き換えてからだと思う。

$ irb
irb(main):001:0> require "bigdecimal"
=> true
irb(main):002:0> x = BigDecimal("-50")
=> -0.5e2
irb(main):003:0> BigMath.exp(x, 50)
=> 0.19287498479639177830173428165270125747528326512303e-21
irb(main):004:0> x
=> 0.5e2

855:デフォルトの名無しさん
18/03/05 17:53:15.03 aK37pZ+C.net
mode: 'rt'
で読み込めばいいじゃん

856:831
18/03/05 19:10:41.11 62GuhFZ7.net
options に行区切りを指定したら、
WSL のUbuntu 側にインストールしたRuby で、
Windows 側にあるCSV ファイルを処理できた
row_sep: "\r\n" では出来たが、
row_sep: :auto では、エラーになる

857:デフォルトの名無しさん
18/03/05 21:53:10.11 K/Y9LwEe.net
require ‘pry’
def foo;@a = 1;end
binding.pry
このコードを実行し、出て来たプロンプトで
> cd Object
> instance_methods(false)
=> [:to_yaml, :to_yaml_properties, :pry, :__binding__, :psych_to_yaml]
と出ました。fooメソッドが見つかりません。
トップレベルで定義したfooメソッドはObjectのメソッドに成るのでは?
ちなみにコマンドラインでpryとタイプして
[1] pry(main)> def foo;@a=0;end
=> :foo
[2] pry(main)> cd Object
[3] pry(Object):1> instance_methods(false)
=> [:to_yaml, :to_yaml_properties, :pry, :__binding__, :psych_to_yaml, :foo]
[4] pry(Object):1>
ちゃんとfooが見えます。

858:デフォルトの名無しさん
18/03/05 22:05:54.92 K/Y9LwEe.net
自己解決しました。
[1] pry(main)> self.private_methods(false)
とすれば見えました。

859:デフォルトの名無しさん
18/03/11 14:39:13.23 veKfJdlp.net
1

860:デフォルトの名無しさん
18/03/15 18:29:02.24 5enxwtKu.net
RubyからDB扱うときって皆は何のライブラリ使ってるの?

861:デフォルトの名無しさん
18/03/15 19:28:59.60 tIXtXy4E.net
RubyでDBを扱う場合、プロダクションで使われているのは世界で唯一ActiveRecordのみ

862:デフォルトの名無しさん
18/03/15 21:18:59.56 OYGfq7D7.net
インターフェースじゃん。
バックでmysqlとか動いてるぞ。
いいからちゃんと勉強しろよ。

863:デフォルトの名無しさん
18/03/15 21:31:02.48 rmXeLovx.net
>>840
ライブラリで答えてください

864:デフォルトの名無しさん
18/03/15 23:24:57.24 xG9lbsTH.net
>>838
ActiveRecordが大半なのは間違いない
ORMを求めてるならsequel、rom、hanami等
素のDBライブラリならmysql2, sqlite3-ruby, ruby-pg
ArelでSQLを構築してDBライブラリ使ってSQL実行してもいい

865:デフォルトの名無しさん
18/03/16 15:24:05.43 3ma6aQHv.net
sqlite3

866:デフォルトの名無しさん
18/03/16 18:23:28.28 2Gd98HT2.net
>>840
Rails屋がSQLすら書けなさそうに見えて腹立つのは分からんでもないけど、今はDBインターフェースの話しかしてないぞ

867:デフォルトの名無しさん
18/03/16 23:22:04.16 yiSYhWxU.net
「Node.js超入門、掌田津耶乃、2017」を読んでいるけど、JavaScript の基本は、Ruby
Ruby のSinatra, JS のNode.js を、full scratch で書くと、ほぼ同じ
Rails, JSのExpress + Bookshelf が、ほぼ同じ

868:デフォルトの名無しさん
18/03/16 23:24:51.12 3NuYtiCt.net
掌田津耶乃ってダメな本じゃなかったか?

869:844
18/03/17 00:05:48.37 nxO/ldT7.net
プログラミング本では、掌田が第一人者。
Unity, UE4 などのゲームエンジンから、最近は、Python, Node.js にも進出
売れる・成長する分野には、必ず掌田が参入してくる。
業界の風見鶏
「Node.js超入門、掌田津耶乃、2017」
この本で、Sinatra, Rails を学ぶ方が簡単。
20時間ほどで読める
後は、YouTube の動画で、OK

870:デフォルトの名無しさん
18/03/17 00:10:02.58 6ii9LbbD.net
やっぱ掌田津耶乃ってだめな人だった
調べたらわかったよ

871:デフォルトの名無しさん
18/03/17 00:34:45.99 4Xu/HAYS.net
今の時代、開発速度が速すぎて誰も良い本なんか書けないよ
それを書き終わる頃には時代遅れになってるんだから

872:デフォルトの名無しさん
18/03/17 00:38:04.22 6ii9LbbD.net
いや掌田がとりわけレベル低いだけ

873:デフォルトの名無しさん
18/03/17 01:55:30.84 +wQGtQt+.net
掌田津耶乃はだめな本
山田 祥寛は良い本
という評価が一般的
掌田津耶乃は何冊か読んでいるけど、
見比べてみるとたしかにダメダメなんだなぁ。

874:デフォルトの名無しさん
18/03/17 02:08:55.36 6ii9LbbD.net
山田 祥寛もダメだろ

875:デフォルトの名無しさん
18/03/17 05:35:09.75 77P/HBnW.net
掌田津耶乃はHyoerTalkなまりのコード

876:デフォルトの名無しさん
18/03/17 09:18:19.49 nxO/ldT7.net
最近は、Python にも、なでしこの作者・クジラ飛行机、
大津真、掌田も、乗り込んできた
この辺は、売れ筋には参入してくる著者
中でも掌田は、ゲームエンジン・言語・Javaのフレームワーク・Node.js など万能

877:デフォルトの名無しさん
18/03/17 12:59:20.73 OC0Ef+g3.net
またあらぶっとるんか糞荒らし
はやくRubyコミュで発言しろよ屑

878:デフォルトの名無しさん
18/03/17 14:32:15.41 +wQGtQt+.net
要はね
掌田の出版本を見てみるとわかるが、
初心者を食い物にしている
初心者専用の作者なわけよ、
だからレビューとかで
表面だけかじって書いたかのような本とか
書かれちゃうわけよ。
深く知りもしないであれだけの数の本を書けるわけないよね。
だから掌田はおすすめできないんだわ。
初心者にはいいかもしれないよ?
初心者向けの本ばかり何冊も何年も書き続けているから。

879:デフォルトの名無しさん
18/03/17 15:47:30.97 uAf5LbgY.net
商売としては全然アリだね
とっかかりが欲しい初心者いるだろうし

880:デフォルトの名無しさん
18/03/17 16:43:12.02 cWw1OMJa.net
>>856
ほんそれ

881:844
18/03/17 19:43:45.96 nxO


882:/ldT7.net



883:デフォルトの名無しさん
18/03/18 09:45:02.22 JzaiKxSG.net
>>856
食い物とか、被害妄想凄いな。
お前さんがもっとマシな解説ブログでも開いたら?w

884:デフォルトの名無しさん
18/03/18 12:36:10.41 Gg1K6bSi.net
>>860
頭使ってる?
掌田津耶乃が何冊初心者用の本を出しているか知っている?
ちょっと考えれば、
英語、ドイツ語、フランス語の言語学習の本を書いたとしたら
その言語のことをどこまで知っていて本を書いているんだろうとか気にならないの?
もし気にならないんだったら、表面的な知識だけで満足しているお前とは合わないのでバイバイ ノシ
Amazon.co.jp: 掌田 津耶乃:作品一覧、著者略歴
URLリンク(www.amazon.co.jp)
掌田津耶乃(しょうだつやの)。ほぼ男性。テクニカルライター兼3流プログラマ。
自分でも3流プログラマと認めているのに、まったく信者って奴は・・・

885:デフォルトの名無しさん
18/03/18 12:52:44.19 QAeUSVF3.net
こんなスレがあったで
掌田津耶乃って何者? (Late 2012)
URLリンク(anago.2ch.sc)

886:デフォルトの名無しさん
18/03/18 12:55:57.40 QAeUSVF3.net
基本的に流行ってるものを、ざっと調べてまとめただけなんだろうな
だから初心者レベルのところまでしか書けない
概要を知るところまでで、あれを参考にしてコードを書いてはいけない

887:デフォルトの名無しさん
18/03/18 16:36:38.11 Aq9RvNC1.net
HypaerCardの本も出してたから もう30年以上初心者向けの本出してるベテラン 

888:デフォルトの名無しさん
18/03/18 19:04:35.10 Pu83I0V3.net
Amazonのレビューでよく思うけど、海外の人は褒めるのが上手。いい面を見てる
日本人は100点じゃなきゃ糞みたいな心の狭い人が多い
初心者向けの本なんかにケチつけなくてもいいだろうに
今は公式サイトのドキュメントが充実してる時代なんだから、ほぼ公式くらいのことしか書かんだろうよ

889:デフォルトの名無しさん
18/03/18 19:43:48.34 Gg1K6bSi.net
そうだな、ネイティブと喋れない、英検準2級、TOEIC500点ぐらいの人が教えているって感じ。
そんなイメージが掌田津耶乃さん。

890:デフォルトの名無しさん
18/03/18 20:16:15.41 i3culXas.net
ご尊顔
URLリンク(interview-bookscan.s3-ap-northeast-1.amazonaws.com)

891:デフォルトの名無しさん
18/03/18 21:55:23.04 JzaiKxSG.net
>>861
いや長文必死にならなくても、お前さんが自分で解説するだけの知力すら無いってのは分かったから。

892:デフォルトの名無しさん
18/03/18 21:59:08.72 QAeUSVF3.net
なんで作者本人が自分で三流ですって言ってるのに、
他人が三流であると解説する必要があるんだ?

893:デフォルトの名無しさん
18/03/18 23:16:11.58 Gg1K6bSi.net
>>868
自己紹介乙

894:デフォルトの名無しさん
18/03/18 23:24:43.53 JFJ3EKTR.net
Java, Ruby のフレームワークを書ける人は、少ない。
山田祥寛(よしひろ)、掌田津耶乃、宮本信二、黒田努など
山田は会社向けの、1日4万円の講座などを開いている
一方、掌田は初心者向け。
Unity, UE4 などのゲームエンジン、
Python などの売れ筋言語、
Spring などのJavaのフレームワーク、
Node.js + Express などのJavaScript のフレームワークなど、万能
山田は会社員、掌田は初心者と、ターゲットが異なる。
もし、同じターゲットなら、両雄並び立たずで、共倒れするから

895:デフォルトの名無しさん
18/03/18 23:54:42.62 3ZuC3w8U.net
自演注意
自演注意
自演注意

896:デフォルトの名無しさん
18/03/19 04:32:11.24 csFbH6Mx.net
File.open('test.txt', 'r+') do |io|
text = io.read
io.rewind
io.write 'あ'
p io.pos #=> 3
io.truncate io.pos
end
読み書き両用ファイルの、ファイルサイズを減らして、上書きできた
io.rewind で、ファイルポインタを先頭に巻き戻す。
io.truncate io.pos で、現在のファイルポインタの位置で、ファイルを切り詰める

897:デフォルトの名無しさん
18/03/20 23:14:51.84 QfE06Qcj.net
>>870
反論すら出来ない奴は、つまらんね。

898:デフォルトの名無しさん
18/03/21 00:56:42.17 p8DsWgGG.net
変なこと聞くけどさ、rspecでさ、まあ適当にサンプル書くけど
describe "hoge do
 before do
  ・・・
 end
 context do
  let(:a) { 1 }
  ・・・
  it 'hage' do
   expect(a).to be 1
  end
 end
end
コレに限った話じゃなくて、rspecの使い方で内側のブロック(例えばitの中)から
外側のブロック(例えばcontextの中)の状態(例えば変数)を
書き換えるのを禁止にしても何の問題もないよね?もちろん参照するのはOK。
テストはどう有るべきかを考えたら、むしろそうした方が良いぐらいじゃないかって思うんだけどどうかな?

899:デフォルトの名無しさん
18/03/21 01:22:34.72 qUqb4QSc.net
ネストしたcontextで
内側のcontextが外側のcontextで設定した状態を
書き換えるような形でテストを書いても別にいいと思うけどな

900:デフォルトの名無しさん
18/03/21 01:57:04.18 p8DsWgGG.net
>>876
でもそうするとテストケース一つとか実行した時におかしくならない?

901:デフォルトの名無しさん
18/03/21 04:11:05.87 rJLoGwxo.net
>>874
自己紹介乙

902:デフォルトの名無しさん
18/03/21 07:02:14.53 wxFTzoek.net
外部への依存が少なければ、個々のテストの独立性が高いから、
バグが減るし、テストを並行実行できる
それが理想だけど、実現するのは難しそう

903:デフォルトの名無しさん
18/03/21 16:09:18.41 qUqb4QSc.net
>>877
おかしくならないよ
let(:a) { 2 }とかで上書きしてみればわかるでしょ

904:デフォルトの名無しさん
18/03/21 16:22:28.39 p8DsWgGG.net
>>880
上書き?
letは新たにローカル関数を作るようなもので
親ブロックのaを上書きなんかしてないよ

905:デフォルトの名無しさん
18/03/21 16:24:44.94 qUqb4QSc.net
>>881
それ分かってるんなら
何がおかしくなると思ってるの?

906:デフォルトの名無しさん
18/03/21 16:47:19.64 p8DsWgGG.net
>>882
内側のブロックで外側のブロックの変数に値を入れた場合だよ

907:デフォルトの名無しさん
18/03/30 15:22:33.47 87KFZNYL.net
Chrome 65 になったら、selenium webdriver が動かなくなったので、
chrome driver 2.37 を、ダウンロードしてみた
これで動くかどうかは、まだ試してないけど

908:883
18/03/30 20:31:06.53 87KFZNYL.net
新しいバージョンの、chrome driver にしたら動いた

909:デフォルトの名無しさん
18/04/01 16:44:40.27 0KaYXtgi.net
すみません、質問があります。
他人様の書いたコードを読んで写経しながら勉強していた所、
begin
#何らかの処理A(特に例外を出しそうな処理ではない)
end until hoge
という記述があったのですが、この書式の意味というか意図がいまいちつかめなくて困っています。
自分でコードを書いて試してみた所、この記述はhogeがtrueでもfalseでも処理Aを実行しており、
特に「until hoge」の部分で何を制御したいのかがわかりません。
(begin
#処理
end) until hoge
例えば、↑の書き方だと単純なuntil文の後置修飾になるので意味がわかるのですが、
上述のような書式で書く理由や、こう書くとどういうメリットがあるかを教えていただけますと嬉しいです。
よろしくお願いいたします。

910:デフォルトの名無しさん
18/04/01 16:51:30.58 1KgD14Zs.net
(と)の二文字省略できる

911:デフォルトの名無しさん
18/04/01 17:15:27.40 9myXjpPz.net
>>886
下のAとBは同じことをするんだけど、Aだと1行目と4行目が同じでもやっとするのでBのように書いているのでは
個人的にはbegin~endをメソッドにしてこうは書かないけど
begin~end untilのほかにもbegin~end whileも同様
# A
i = Time.now.sec
until i % 3 == 0
p i
i = Time.now.sec
end
# B
begin
i = Time.now.sec
p i
end until i % 3 == 0

912:デフォルトの名無しさん
18/04/01 17:18:46.83 9myXjpPz.net
訂正
# A
i = Time.now.sec
p i
until i % 3 == 0
i = Time.now.sec
p i
end
# B
begin
i = Time.now.sec
p i
end until i % 3 == 0

913:デフォルトの名無しさん
18/04/01 17:32:20.95 0KaYXtgi.net
>>888-889
ご回答頂きどうもありがとうございます。
なるほど、この書式だとbegin~end内の処理が1回は必ず実行されて、
その後に条件文で判定されるようになるので、同じ処理(例だと代入処理)を2度書かなくて済むようになるんですね。
とても勉強になりました。
個人的にはコード行数が増えたり同じ処理が連続するよりも、
ひと目で意図する処理が他人に伝わらないのはちょっと嫌なのでこの書き方は真似しないようにします……。

914:デフォルトの名無しさん
18/04/01 17:40:44.12 KXX7rc47.net
いや、それはおかしい。
リトライやリドゥーみたいな処理で、必要であれば、ためらわずそう書くべき。多少わかりにくくても。
いずれ慣れるから。
なんなら、先頭にコメントをつけとけば。

915:デフォルトの名無しさん
18/04/01 17:57:12.31 //EuH1G7.net
絶対的なルールではないけどこんなものもあるんで参考までに
ruby-style-guide
>後判定ループの場合、begin/end/untilやbegin/end/whileより、
>break付きのKernel#loopを使いましょう。
URLリンク(github.com)

916:デフォルトの名無しさん
18/04/01 18:00:28.18 ZcGM330i.net
(なにかしら).method
do
なにかしら
end メソッド

みたいなもんだからRuby規則に沿っているだろ

917:デフォルトの名無しさん
18/04/01 18:17:17.82 A31P7FUz.net
>>892
後判定ループを行うのにbegin-end-while/untilが好ましくない理由を俺に教えて欲しい

918:デフォルトの名無しさん
18/04/01 18:21:45.55 hwmab9Mq.net
>>894
英語的にキモいからだろ
end until ってさすがに非ネイティブの俺でも不自然に感じるぞ

919:デフォルトの名無しさん
18/04/01 18:27:29.70 Aa3HndXz.net
英語的な自然さを求めるなら、loopをendのエイリアスということにして loop while/until かな
VBがそんな感じだったはず
まあジャップ製言語だから仕方ないね

920:デフォルトの名無しさん
18/04/01 18:31:46.49 //EuH1G7.net
>>894
beginの中が長いと上から読んでてループするんだかrescueするんだかわかりにくいからじゃない?



921:ruby-style-guideはコメントを極力書かないで済むようにするのが目的の一つだから まあ個人的には首肯しかねるルールもいくつかあるけどね



922:デフォルトの名無しさん
18/04/01 18:43:23.68 hwmab9Mq.net
>>897
それもあるね
日本人からすると「~~(長い長い手続き)~~をループさせろ」は自然な流れだけど、
向こうの人からすると「結論から話せやファッキンジャップ」だろうな

923:デフォルトの名無しさん
18/04/01 21:03:13.03 A31P7FUz.net
>>897
ああ、なるほど
そういう観点だったのね
ありがとう

924:デフォルトの名無しさん
18/04/02 12:57:38.84 g/2XFKpH.net
ブロッキング条件なら後に来るの自然に感じる
長過ぎるとってのはどんなブロックでも同じ

925:デフォルトの名無しさん
18/04/02 13:03:59.66 KugB3K+A.net
SV
これは第一文型なんだから
文章.method
SをVするで普通の英語じゃん?

926:デフォルトの名無しさん
18/04/02 13:11:22.76 6hj+x7xd.net
おいおい…
「を」は対格を作る格助詞だぞ。
記号で書くとV(=verb=動詞)O(=object=目的語)だ。
SVは
S(=subject=主語)V(=verb=動詞)で、
S「が」Vする、だ。

927:デフォルトの名無しさん
18/04/02 13:22:58.60 g/2XFKpH.net
自然言語なんて例外だらけなんだからどうでもいい

928:デフォルトの名無しさん
18/04/02 13:41:31.43 eDlvSPE1.net
sendを使う度にモヤモヤした気持ちになる

929:デフォルトの名無しさん
18/04/02 14:10:59.70 HZoT/r0A.net
それより>>895だろうな
begin~end系言語で結びにend whileなんて書くのrubyくらいじゃないか?
たいてい>>896みたいにendを別の単語に変えてる

930:デフォルトの名無しさん
18/04/02 18:13:06.38 TBzY9DYT.net
そりゃそもそもend書かせる主流言語が少ないし

931:デフォルトの名無しさん
18/04/03 03:47:06.97 hZewAlsv.net
>>890
同じ処理を、別の場所に2回書くと、
修正時に、2か所とも修正しないといけないから、
どちらかを修正し忘れる事があるので、危険

932:デフォルトの名無しさん
18/04/03 04:10:23.05 8HWTUUN8.net
Donot
Repeat
Yourself


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch