Ruby2.0で導入されたRefinementsという機能のメリットとリスクについて #rubykaigi #rubykaigiB

Refinements - the Worst Feature You Ever Loved http://rubykaigi.org/2015/presentations/nusco @nusco
0
さぼ @saboyutaka

#rubykaigiB ActiveRecordは17つの継承してる。

2015-12-13 13:49:06
izumin @izumin5210

REPL中だとscopeが一瞬で切れる? #rubykaigi #rubykaigiB

2015-12-13 13:49:53
さぼ @saboyutaka

#rubykaigiB 話の構成がとてもとてもわかりやすい

2015-12-13 13:50:35
黒曜@Leaner Technologies @kokuyouwind

あーirbでは行ごとにstring_evalされるから、文脈が別になるのか。なので前の行でinclude (refinment name)されていても、refinmentは有効にならないと。 #rubykaigi #rubykaigiB

2015-12-13 13:50:47
nagachika @nagachika

Refinements 使ってなくても常に遅くなるってことはあんまりないんじゃないんだっけかな #rubykaigi #rubykaigib

2015-12-13 13:50:50
プリズムリバーの人 @prismriver

ああ、REPLだと意図した通りに動かないのか。 #rubykaigi

2015-12-13 13:51:13
yuto @jacoyutorius

メタプログラミングRubyの授業受けてる #rubykaigiB

2015-12-13 13:53:55
黒曜@Leaner Technologies @kokuyouwind

現在はclass_evalなどではrefinmentを引き継がない。usingしたそのブロック中でのみ有効になる。dynamic scopeではなくlexical scopeになった。 #rubykaigi #rubykaigiB

2015-12-13 13:54:04
izumin @izumin5210

usingがdynamicじゃなくてlexical scopeになった ってこと? #rubykaigi #rubykaigiB

2015-12-13 13:54:41
nagachika @nagachika

Refinements は (Internal) DSL に使えるか? (常に using するのでなければ) No. convenience method に使えるか? No. method wrapper にはよくマッチする。ふむ、まあそりゃそうだ #rubykaigib

2015-12-13 13:57:26
黒曜@Leaner Technologies @kokuyouwind

main usecaseの再確認。DSLは動かない。convenience methodsはsuingしないと有効にならない。method wrapperはうまく動く。 #rubykaigi #rubykaigiB

2015-12-13 13:57:30
みょうが@揚げ出しエンジニア @mrkn

“War and Peace” という文字列リテラルを選んだのは何故なのか #rubykaigi

2015-12-13 13:58:03
黒曜@Leaner Technologies @kokuyouwind

これらを総合すると、lexical scopeにすることで、全てのユースケースを単純に置き換えることはできなくなったが、パフォーマンスの問題などは引き起こさなくなった。 #rubykaigi #rubykaigiB

2015-12-13 13:58:29
nagachika @nagachika

現状の実装だと “they don’t impact performance or security” が結論なのか。なるほど(聴きとれてなかった) #rubykaigi #rubykaigib

2015-12-13 13:58:34
安川要平/Yohei Yasukawa @yasulab

Talk about Refinements by @nusco, the author of Meta Programming Ruby, at #RubyKaigi. Seems full! pic.twitter.com/u4AeURmYPy

2015-12-13 13:59:15
拡大
Takashi Masuda @masutaka

lexical scope がどこから出てきたのかわからない #rubykaigi #rubykaigiB

2015-12-13 14:00:04
みょうが@揚げ出しエンジニア @mrkn

(2 + 2).should == 4 の行のインデントが1文字足りない気がした #rubykaigi

2015-12-13 14:00:57
黒曜@Leaner Technologies @kokuyouwind

Deep Problem。そもそもDSLを期待しない人にDSLの文脈を提供していいのか。これは言語のデザインの問題。 #rubykaigi #rubykaigiB

2015-12-13 14:02:14
Charles Nutter @headius

Very nice talk about the problems and benefits of refinements by @nusco at #rubykaigi.

2015-12-13 14:02:37
さぼ @saboyutaka

#rubykaigiB メタプログラミングRubyの著者だった…

2015-12-13 14:02:53
かっぱ @kwappa

普通にrefinmentsの勉強になった #rubykaigi

2015-12-13 14:03:40
架慧 @kae_kasui

メタプログラミングrubyのお話でした #rubykaigi

2015-12-13 14:03:56
y-yagi @y_yagi

見てる / ruby/refinements.rdoc at trunk · ruby/ruby github.com/ruby/ruby/blob… #rubykaigiB

2015-12-13 14:05:11
アルフォートおじさん @joker1007

refinementsはめっちゃ実験して言いたいことが一杯あるのだが、今移動中なので駄目だ。 #rubykaigib

2015-12-13 14:06:55
⇔ Satoshi Kojima ⇔ @skoji

refinementsの復習になったー。正式採用されてから最初使ってみたときに、lexical scopeだってわからなくて混乱したのを思い出した。monkey patchのユースケースの一部しか救えていないのはその通りだよなあ #rubykaigi #rubykaigiB

2015-12-13 14:07:45