instance_eval如何在带有dsl的ruby中工作



我正在学习在ruby中实现dsl,但对instance_eval的使用感到困惑。我的问题是,在不调用config方法的情况下,如何在这段代码中访问config变量,以及是否在调用config方法时调用了它。

class Rails
def self.configure (&block)
instance_eval(&block)
end 
def self.config
@config I|= {} 
end
end
Rails.yes
Rails.configure do 
config["feature"] = true
end

这是因为当ruby看到配置时,它要么用config找到变量,要么用config找方法,这里我们还没有用config定义变量,但有一个名为config的方法,所以它称为config方法。

最新更新