2012-11-09 76 views
0

我正在写一个红宝石宝石,它依赖于正在运行的应用程序中的配置信息。自定义红宝石宝石不服从配置信息

我试图按照在此基础上this thoughtbot articlethis stack overflow question

一个模式,我可以看到我的外应用程序配置/初始化数据做负载,但问题是,我有一些代码是依赖于在初始化器设置被gem拾取之前运行的初始化器。

如何保证初始化数据及时加载?

这里是我的配置/初始化代码:

MbSharedScoreboard.configure do |config| 
    config.foo = "bar" 
end 

和这里的,其中为了我在宝石中读取数据:

require "mb_shared_scoreboard/configuration" 
require "mb_shared_scoreboard/version" 
require "mb_shared_scoreboard/models/service" 
require "mb_shared_scoreboard/models/subject" 
require "mb_shared_scoreboard/models/foo" 

module MbSharedScoreboard 

    def self.root 
    File.expand_path('../..', __FILE__) 
    end 

end 

和这里的configuration.rb - 加载的第一个文件:

module MbSharedScoreboard 

    class Configuration 
    attr_accessor :foo 
    def initialize 
     @foo = "foo" 
    end 
    end 

    class << self 
    attr_accessor :configuration 
    end 

    def self.configure 
    self.configuration ||= Configuration.new 
    yield configuration 
    puts "startup configuration: #{self.configuration.to_s}" 
    end 
end 

任何想法?

回答

0

按照official documentation

如果您的应用程序需要运行加载之前 Rails的本身的一些代码,把它调用上述要求的罕见事件“轨道/全部” 在配置/ application.rb中。

您或许可以在那里包含该文件,而不是移动整个内容。