我正在编写一个依赖于正在运行的应用程序中的配置信息的 ruby gem。
我正在尝试遵循基于此思想机器人文章 或此堆栈溢出问题的模式
我可以看到我在外部应用程序中的配置/初始化程序数据确实加载了,但问题是,我的代码依赖于在初始化程序设置被 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
有任何想法吗?