我似乎找不到任何有关如何执行以下操作的文档:我需要为使用我的引擎的任何应用程序提供一个配置变量,以便它们可以轻松地将设置传递给我的引擎。
有没有人有任何链接到正确或可接受的方式来做到这一点?
编辑:作为更新,我想出了一个不错的方法来做到这一点。代码如下。
# file: lib/my_engine.rb
module MyEngine
class Engine < Rails::Engine
initializer "my_engine.configure_rails_initialization" do |app|
# Engine configures Rails app here, this is not what my question was about
end
end
# This is what I was trying to figure out
def self.config(&block)
@@config ||= MyEngine::Configuration.new
yield @@config if block
return @@config
end
end
这允许任何使用我的引擎的应用程序在他们的任何初始化程序或他们的 environment.rb 文件中配置它,如下所示,调用MyEngine::Configuration
类中定义的任何方法:
MyEngine.config do |config|
config.some_configuration_option = "Whatever"
end