Tim*_*ord 60 ruby-on-rails ruby-on-rails-3
我有一个初始化程序,可以从yaml文件加载配置设置.我需要在其他初始化程序中使用这些设置.需要它们的初始化程序不会看到这些设置.我认为正在发生的是设置加载得太迟了.如何保证我的配置初始化程序首先被加载?是不是让像初始化者依赖另一个?
谢谢!
Júl*_*tos 80
将初始化程序重命名为01_name.rb,将强制它先前按字母顺序加载.
编辑
引用官方Rails指南进行配置(感谢zetetic的提示):
如果初始化程序中有任何排序依赖项,则可以通过命名来控制加载顺序.例如,01_critical.rb将在02_normal.rb之前加载.
Tyl*_*ong 25
将配置代码放在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!
小智 24
尽管指南建议在初始化文件名前加上数字,但这看起来确实很难看.另一种方法是利用提供的初始化钩子.请参阅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
小智 6
使用require_relative确保首先加载一个文件.
# aaa.rb
require_relative 'bbb'
# ... code using values from bbb.rb ...
| 归档时间: | 
 | 
| 查看次数: | 22371 次 | 
| 最近记录: |