実行中のアプリケーションの構成情報に依存する ruby 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
何か案は?