我正在開發一個處理與第三方的OAuth機制的Rails引擎。我想有一個結構屬性,所有的配置,因此所有的引擎配置數據存儲在一起:Rails引擎配置
require 'rails'
module ThirdParty
class Engine < ::Rails::Engine
initializer "third-party.some_init_task" do |app|
ThirdPartyConfig = Struct.new(:uri, :client_id, :client_secret, :redirect_uri)
app.config.thirdparty = ThirdPartyConfig.new
app.config.thirdparty.uri = "https://thirdparty.com"
app.config.thirdparty.client_id = ""
app.config.thirdparty.client_secret = ""
app.config.thirdparty.redirect_uri = ""
end
end
end
一些配置,應在應用程序級初始化定義:
class Application < Rails::Application
config.thirdparty.client_id = <valid_client_id>
config.thirdparty.client_secret = <valid_client_secret>
config.thirdparty.redirect_uri = <redirect_uri>
end
但是由於config.thirdparty在加載應用程序初始化程序時仍然未定義,所以失敗。
感謝@cowboycoded!我已將應用程序配置數據更改爲初始化程序,而不是將其寫入application.rb中。另外,我已經按照你的建議爲Rails Engine中的:before參數設置了一個有效的值。真的值得你的幫助! – juandebravo 2011-06-15 22:26:17
@juandebravo你對':before'入口有什麼價值? – vemv 2013-09-26 06:24:51