在Ruby中设置和访问变量

时间:2013-11-02 05:57:41

标签: ruby-on-rails ruby

module YourApp
   class Application < Rails::Application
      config.my_custom_variable = :custom_value
   end
end

这适用于我的Rails应用程序。我只想从ruby的角度理解这是如何工作的。根据我的最小ruby知识,在config(Rails :: Application :: Configuration)对象中必须有my_custom_variable的getter和setter(my_custom_variable =)。由于这是我的自定义变量,因此它不会出现在Configuration对象实例中。它是如何动态创建/添加的。 ?

有人可以解释一下吗?请指导我使用正确的文件来理解这一点。

2 个答案:

答案 0 :(得分:2)

Rails在这里使用method_missing来捕获config上调用的任何方法。 然后,它只是将它添加到选项的散列中。

您可以看到相关的源代码here

答案 1 :(得分:0)

不是Rails如何实现它,而是在Ruby中实现类似的功能

require 'ostruct'

module YourApp
    class Application
        @@config = OpenStruct.new

        def self.config
           return @@config
        end
    end
end

YourApp::Application.config.my_custom_variable = :custom_value
puts YourApp::Application.config.my_custom_variable
>> custom_value