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

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

有人可以解释一下吗?指导我到适当的文档来理解这一点。

4

2 回答 2

2

Railsmethod_missing在这里使用来捕获任何在config. 然后,它只是将其添加到选项哈希中。

你可以在这里看到相关的源代码。

于 2013-11-02T06:22:31.467 回答
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
于 2013-11-02T06:40:18.750 回答