在我正在开发的Rails4项目中,
在development.rb文件(以及其他环境)中, 在配置块内:
Rails.application.configure do
...
config.foo = 'foo'
end
我可以使用我想要的任何设置器,例如config。 foo =
(我想一些动态代码)
那是什么的?它是如何运作的?我没有找到任何关于它的文档。
感谢任何帮助以理解它。
答案 0 :(得分:0)
rails代码库中rails/railties/lib/rails/application/configuration.rb文件中的以下代码设置了有效的配置选项:
attr_accessor :allow_concurrency, :asset_host, :assets, :autoflush_log,
:cache_classes, :cache_store, :consider_all_requests_local, :console,
:eager_load, :exceptions_app, :file_watcher, :filter_parameters,
:force_ssl, :helpers_paths, :logger, :log_formatter, :log_tags,
:railties_order, :relative_url_root, :secret_key_base, :secret_token :serve_static_files, :ssl_options, :static_cache_control, :session_options,
:time_zone, :reload_classes_only_on_change,
:beginning_of_week, :filter_redirect, :x
attr_writer :log_level
attr_reader :encoding
Rails使用上面提到的任何设置,而忽略其余的设置。
dynamic code under the hood
也位于same file
def method_missing(method, *args)
if method =~ /=$/
@configurations[$`.to_sym] = args.first
else
@configurations.fetch(method) {
@configurations[method] = ActiveSupport::OrderedOptions.new
}
end
end