ほげほげEval

Gemを読むとほげほげeval使ってるのが結構出てくるので、どういうことなのか気になっていた。

class_eval

  • 後からクラス変数を操作出来る。
class HogeClass
end

HogeClass.instance_variable_get :@value
#=>nil

v = 1
HogeClass.class_eval do
  @value = v
end

HogeClass.instance_variable_get :@value
#=>1

instance_eval

class HogeClass
  attr_reader :v
  def initialize
    @v = 1
  end
end

h1 = HogeClass.new
h1.v
#=>1

h1.instance_eval do
  @v = 10
end

h1.v
#=>10

何に使うのがいまいち分からないが、恐らくConfigで設定したものを読み取って使うのだろうか。分からん。

参考

パーフェクトRuby (PERFECT SERIES 6)

パーフェクトRuby (PERFECT SERIES 6)

  • 参考とか言いながらほとんどソースはパクリである