0

我正在编写一个依赖于正在运行的应用程序中的配置信息的 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

有任何想法吗?

4

1 回答 1

0

根据官方文档

在极少数情况下,您的应用程序需要在 Rails 本身加载之前运行一些代码,请将其放在 config/application.rb 中的 require 'rails/all' 调用之上。

您可以只在其中包含该文件,而不是移动整个内容。

于 2012-11-09T06:05:45.077 回答