Rails:你不能有多个Rails :: Application(RuntimeError)

时间:2013-10-28 18:33:45

标签: ruby-on-rails ruby ruby-on-rails-3

我安装了一个带有初始化文件的pesapal gem,看起来像这样;

# Load Pesapal config file when applicatin is loaded ... the config can then be
# accessed from PesapalRails::Application.config.yaml
module PesapalRails
  class Application < Rails::Application
    config.yaml = YAML::load(IO.read("#{Rails.root}/config/pesapal.yml"))
  end
end

当我使用它时,我得到这样的错误;

/usr/local/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/application.rb:63:in ``inherited'``: You cannot have more than one Rails::Application (RuntimeError)

部分痕迹看起来像这样;

from /var/www/html/webapp/config/initializers/pesapal.rb:4:in `<module:PesapalRails>'
from /var/www/html/webapp/config/initializers/pesapal.rb:3:in `<top (required)>'

1 个答案:

答案 0 :(得分:0)

<强>修正

升级gem,v1.2.1应解决问题(changelog

简短说明

简单版......我的方法错了 - 真诚道歉。 Ruby的新手。 Rails的新手。

长解释

初始化程序旨在创建一个可以在rails应用程序中访问的全局变量。就我而言,它是PesapalRails::Application.config.yaml。在你的情况下,我认为它是不同的。

gem认为该全局变量设置正确,这会带来错误,因为在您的应用PesapalRails中不存在(正如您所知,初始化程序仅在应用程序启动时运行,因此这有点安全的假设)。由于my demo app实际上使用的是PesapalRails命名空间,因此在我的案例中未检测到这一点。

请求

希望你下次会filed an issue on Github - here(这真是我偶然发现了这一点)......这样其他开发者可能会为讨论/解决方案做出贡献。我愿意尽快审查并推动更新。