如何更改Rails 3中初始化器的加载顺序?
我有一个从yaml文件加载configuration设置的初始化程序。 我需要在其他初始化程序中使用这些设置。 这些设置不会被需要它们的初始化程序看到。 我认为正在发生的是设置得到加载太迟。 我如何保证我的configuration初始化程序首先被加载? 它是不是像初学者依赖另一个?
谢谢!
将初始化程序重命名为01_name.rb
,这将强制它以前按字母顺序加载。
编辑
引用官方的Rails指南进行configuration (谢谢小技巧):
如果您的初始化器中有任何顺序依赖项,则可以通过命名来控制加载顺序。 例如,01_critical.rb将在02_normal.rb之前加载。
将configuration代码放在config / environment.rb文件中,紧接在第一个require语句之后,比如:
# Load the rails application require File.expand_path('../application', __FILE__) # Load global configurations CONFIG = Hashie::Mash.new YAML.load_file(Rails.root.join("config", "application.yml"))[Rails.env] # Initialize the rails application RailsSetup::Application.initialize!
尽pipe本指南build议在数字前面添加初始化文件名,但这看起来很难看。 另一种方法是利用提供的初始化钩子。 请参阅http://guides.rubyonrails.org/configuring.html#initialization-events
例如
# application.rb module YourApp class Application < Rails::Application config.before_initialize do # initialization code goes here end end end
使用require_relative来确保首先加载一个文件。
# aaa.rb require_relative 'bbb' # ... code using values from bbb.rb ...