在Rails.application.configure里面设置

时间:2015-01-10 15:23:41

标签: ruby-on-rails ruby-on-rails-4

在我正在开发的Rails4项目中,

在development.rb文件(以及其他环境)中, 在配置块内:

Rails.application.configure do
  ...
  config.foo = 'foo'
end

我可以使用我想要的任何设置器,例如config。 foo =

(我想一些动态代码)

那是什么的?它是如何运作的?我没有找到任何关于它的文档。

感谢任何帮助以理解它。

1 个答案:

答案 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