eval
参考:
module function Kernel.#eval (Ruby 2.6.0)
module_eval / class_eval
モジュールのコンテキストで文字列、もしくはブロックを評価して、評価した値を返す。
A.class_eval(<<~RUBY, __FILE__, __LINE__ + 1) def #{method_name} puts "This is #{method_name}." end RUBY
参考:
Ruby の #class_eval と #module_eval の違い – Qiita
class_eval, module_eval (Module) | Rubyリファレンス (ref.xaio.jp)
instance method Module#class_eval (Ruby 2.6.0)
module_exec / class_exec
参考:
異色の Ruby メソッド: `Module.class_exec` 翻訳 | TechRacho
instance method Module#class_exec (Ruby 2.6.0)
instance_eval / instance_exec
インスタンスのコンテキストで文字列、またはブロックを評価して、評価した値を返す。
instance_exec
を使えばブロックに引数を渡すことができる。
obj.instance_exec(*args, &block)
self
のコンテキストで評価する場合はレシーバーを省略できる。
instance_exec(*args, &block)
参考:
Ruby の #instance_eval と #instance_exec の違い | Secret Garden (Instrumental)
instance_exec でブロックに引数を渡して実行できる | Bye Bye Moore
ブロック実行には instance_exec – Qiita
instance method BasicObject#instance_eval (Ruby 2.6.0)
instance method BasicObject#instance_exec (Ruby 2.6.0)
Wrap a Ruby function – Stack Overflow
特異クラスのコンテキストでコードを評価する
参考:
self.class.class_eval or singleton_class.class_eval – Stack Overflow