Настройки конфигурации для active_merchant для совместимости с приложением Rails 3

Я подписан на 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)

person Christian Fazzini    schedule 25.08.2011    source источник


Ответы (3)


Похоже, вам просто нужно избавиться от блока config.after_initialize do - после этого он должен нормально инициализироваться.

person Jon-Paul Lussier    schedule 25.08.2011

Вы можете поместить этот код в файл своей среды, например 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
person Mohd Anas    schedule 18.02.2014
comment
Добавление этого кода в файл config/environments/<environment>.rb относится к рельсам 2 и не полностью совместимо с рельсами 3. Из-за этого возникли проблемы в другом месте при обновлении приложения для рельсов 2.3. Способ Rails 3 заключается в том, чтобы поместить всю эту конфигурацию в файл инициализатора. - person Prakash Murthy; 28.11.2014

Вам нужно изменить config.after_initialize на ApplicationName::Application.config.after_initialize, и он должен работать.

person madgen    schedule 02.04.2013