2012-11-09 80 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中。

您或許可以在那裏包含該文件,而不是移動整個內容。