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

あーirbでは行ごとにstring_evalされるから、文脈が別になるのか。なので前の行でinclude (refinment name)されていても、refinmentは有効にならないと。 #rubykaigi #rubykaigiB
2015-12-13 13:50:47
Refinements 使ってなくても常に遅くなるってことはあんまりないんじゃないんだっけかな #rubykaigi #rubykaigib
2015-12-13 13:50:50
現在はclass_evalなどではrefinmentを引き継がない。usingしたそのブロック中でのみ有効になる。dynamic scopeではなくlexical scopeになった。 #rubykaigi #rubykaigiB
2015-12-13 13:54:04
usingがdynamicじゃなくてlexical scopeになった ってこと? #rubykaigi #rubykaigiB
2015-12-13 13:54:41
Refinements は (Internal) DSL に使えるか? (常に using するのでなければ) No. convenience method に使えるか? No. method wrapper にはよくマッチする。ふむ、まあそりゃそうだ #rubykaigib
2015-12-13 13:57:26
main usecaseの再確認。DSLは動かない。convenience methodsはsuingしないと有効にならない。method wrapperはうまく動く。 #rubykaigi #rubykaigiB
2015-12-13 13:57:30
これらを総合すると、lexical scopeにすることで、全てのユースケースを単純に置き換えることはできなくなったが、パフォーマンスの問題などは引き起こさなくなった。 #rubykaigi #rubykaigiB
2015-12-13 13:58:29
現状の実装だと “they don’t impact performance or security” が結論なのか。なるほど(聴きとれてなかった) #rubykaigi #rubykaigib
2015-12-13 13:58:34
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

Deep Problem。そもそもDSLを期待しない人にDSLの文脈を提供していいのか。これは言語のデザインの問題。 #rubykaigi #rubykaigiB
2015-12-13 14:02:14
Very nice talk about the problems and benefits of refinements by @nusco at #rubykaigi.
2015-12-13 14:02:37
見てる / ruby/refinements.rdoc at trunk · ruby/ruby github.com/ruby/ruby/blob… #rubykaigiB
2015-12-13 14:05:11
refinementsはめっちゃ実験して言いたいことが一杯あるのだが、今移動中なので駄目だ。 #rubykaigib
2015-12-13 14:06:55
refinementsの復習になったー。正式採用されてから最初使ってみたときに、lexical scopeだってわからなくて混乱したのを思い出した。monkey patchのユースケースの一部しか救えていないのはその通りだよなあ #rubykaigi #rubykaigiB
2015-12-13 14:07:45