Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Ruby | Module | module_eval/class_eval

概要

Module#module_eval(expr, fname = "(eval)", lineno = 1) -> object[permalink][rdoc]
Module#module_eval {|mod| ... } -> object
Module#class_eval(expr, fname = "(eval)", lineno = 1) -> object
Module#class_eval {|mod| ... } -> object

詳細

モジュールのコンテキストで文字列 expr またはモジュール自身をブロックパラメータとするブロックを 評価してその結果を返却。

サンプルコード
module Hogeable
  def hogeable
  end
end

class Hoge
  include Hogeable
  def hoge
    print 'hoge'
  end
end

Hoge.module_eval %Q{
  def hoge2
    puts 'hoge2'
  end
}
Hogeable.module_eval %Q{
  def hogeable2
    puts 'hogeable2'
  end
}

Hoge.new.hoge2
Hoge.new.hogeable2
print Hoge.new.methods.grep /hoge/

出力

出力

hoge2
hogeable2
[:hoge, :hoge2, :hogeable, :hogeable2]