Rails gem,initializers 加载顺序问题

hlcfan · 2013年04月23日 · 最后由 hlcfan 回复于 2013年04月23日 · 2892 次阅读

RaisGuides 说 initializers 是在框架,插件,和 gems 加载完之后才加载的,那 weibo_api_key,secret 是写在 initializers 下的。这样就会导致 gems 取不到 key 和 secret,这样的问题怎么解决?

class YourRailtie < Rails::Railtie
  initializer "my_railtie.configure_rails_initialization" do |app|
      ActiveSupport.on_load :xxx do
        something
      end
    end
end

#1 楼 @SharpX 你好, my_railtie.configure_rails_initialization 怎么写? 可以写 Devise.setup 吗?

是否可以覆盖对应的方法实现,或者说设置一个环境变量,或者弄个配置文件实现呢?

我不知道你说的是你的另外一个 gem 取不到,还是你不能理解 weibo 这个 gem 是怎么取到的

https://github.com/ballantyne/weibo/blob/master/lib/weibo/railtie.rb

class Railtie < Rails::Railtie
  config.after_initialize do
    if File.exists?('config/weibo.yml')
      weibo_oauth = YAML.load_file(File.join(Rails.root.to_s, 'config', 'weibo.yml'))[Rails.env || "development"]
      Weibo::Config.api_key = weibo_oauth["api_key"]
      Weibo::Config.api_secret = weibo_oauth["api_secret"]
    end
  end
需要 登录 后方可回复, 如果你还没有账号请 注册新账号