如何解决Rails引擎配置
| 我正在开发与第三方一起处理OAuth机制的Rails引擎。我想将所有配置都包含在Struct属性中,因此所有引擎配置数据都存储在一起: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在加载应用程序初始化程序时仍未定义,因此将失败。
解决方法
尝试为引擎中的初始化程序指定加载顺序。您应该能够在应用程序配置运行之前强制其加载。这是您要加载初始化程序的猜测
initializer \"third-party.some_init_task\",:before=> :load_config_initializers do |app|
如果那不起作用,请尝试在另一个初始化程序之前加载它。
, 您可以通过主机/主应用程序配置Rails引擎
使用Rails可安装引擎中的gem初始化devolopment.rb环境中的对象
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。