配置 active_merchant 以与 Rails 3 应用程序兼容
Posted
技术标签:
【中文标题】配置 active_merchant 以与 Rails 3 应用程序兼容【英文标题】:Config settings for active_merchant to be compatible with a Rails 3 app 【发布时间】:2011-11-03 22:50:11 【问题描述】:我关注http://railscasts.com/episodes/145-integrating-active-merchant
如何设置配置设置以与 Rails 3 应用程序兼容。
我尝试将以下内容放入config/initializers/active_merchant.rb
if Rails.env == 'development'
config.after_initialize do
ActiveMerchant::Billing::Base.mode = :test
::GATEWAY = ActiveMerchant::Billing::PaypalGateway.new(
:login => 'seller12341234zxcv.foobar.com',
:password => 'pasword',
:signature => 'abc123'
)
end
elsif Rails.env == 'test'
config.after_initialize do
ActiveMerchant::Billing::Base.mode = :test
::GATEWAY = ActiveMerchant::Billing::BogusGateway.new
end
elsif Rails.env == 'production'
config.after_initialize do
ActiveMerchant::Billing::Base.mode = :test
::GATEWAY = ActiveMerchant::Billing::PaypalGateway.new(
:login => 'seller12341234zxcv.foobar.com',
:password => 'pasword',
:signature => 'abc123'
)
end
end
以下呈现错误:
config/initializers/active_merchant.rb:2:in `<top (required)>': undefined local variable or method `config' for main:Object (NameError)
【问题讨论】:
【参考方案1】:看起来您只需要删除 config.after_initialize do
块——之后应该可以正常初始化。
【讨论】:
【参考方案2】:您可以将此代码放在您的环境文件中,即 config/environments/development.rb、production.rb 等只需使用
config.after_initialize do
ActiveMerchant::Billing::Base.mode = :test
::GATEWAY = ActiveMerchant::Billing::PaypalGateway.new(
:login => 'seller12341234zxcv.foobar.com',
:password => 'pasword',
:signature => 'abc123'
)
end
【讨论】:
在config/environments/<environment>.rb
文件中添加此代码是rails 2 的事情,并且与rails 3 不完全兼容。因此在升级rails 2.3 应用程序时在其他地方遇到了问题。 Rails 3 的方法是将所有这些配置放在一个初始化文件中。【参考方案3】:
您需要将config.after_initialize
更改为ApplicationName::Application.config.after_initialize
,它应该可以工作。
【讨论】:
以上是关于配置 active_merchant 以与 Rails 3 应用程序兼容的主要内容,如果未能解决你的问题,请参考以下文章
如何配置 Spring Security SAML 以与 Okta 一起使用?
如何为 keycloak 配置数据源以与 galera 集群配合使用?
dropwizard 应用程序中的配置更改以与 react browserHistory 一起使用
配置 Flash 播放器以与在 Maven 发布期间执行的 Flexmojos 一起使用:执行