我正在编写一个ruby gem,它依赖于正在运行的应用程序中的配置信息。
我正在尝试遵循基于此this thoughtbot article的模式 或this stack overflow question
我可以看到外部应用程序中的配置/初始化程序数据确实加载了,但问题是,我的代码依赖于在gem接收初始化程序设置之前运行的初始化程序。
如何保证及时加载初始化数据?
这是我的配置/初始化代码:
MbSharedScoreboard.configure do |config|
config.foo = "bar"
end
这里是我在gem中读取数据的顺序:
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 :(得分:0)
在极少数情况下,您的应用程序需要先运行一些代码 Rails本身已加载,将其置于要求'rails / all'的调用之上 在config / application.rb。
您可以在那里包含该文件,而不是移动整个内容。