tnodaの日記: 「メタプログラミング Ruby 」読書ノート - 第5章金曜日: コードを記述するコード
日記 by
tnoda
Ruby について今日学んだこと:
* Kernel#eval()
- Kernel#binding() #=> Binding オブジェクトもどうぞ
- TOPLEVEL_BINDING
- irb は特定のオブジェクトで irb セッションをネストして開ける
- コードインジェクション
- オブジェクトの汚染レベルとセーフレベル
- サンドボックス
proc {
$SAFE = @safe_level
eval( ...
}.call
* フックメソッド
- Class#inherited()
- Module#included()
- Module#extend_object()
- Module#method_added()
- Module#method_removed()
- Module#method_undefined()
- クラス拡張ミックスイン
# Merb の例。include をフックして extend
module Merb::Cache::CacheMixin
def self.included(base)
base.extend(ClassMethods)
end
module ClassMethods
def cache(*actions)
# ...
「メタプログラミング Ruby 」読書ノート - 第5章金曜日: コードを記述するコード More ログイン