eager_load给出了NameError

时间:2014-02-27 19:40:08

标签: ruby-on-rails ruby

我正在使用Ruby on Rails v4.0.3(Ruby 2.1.0p0),今天下午我的项目完全正常工作,直到我决定清理我的控制器及其路由(自定义控制器和管理员和用户页面的路由)。

现在,这一切在我的开发版本中运行良好,但我无法在我的网络服务器上启动应用程序(使用Apache en Passenger)。启动应用程序时,它给出了以下错误:

uninitialized constant PayPal::SDK::REST::API::V1 (NameError)
  /Volumes/Projects/iosfy/website/app/controllers/api/v1/query_controller.rb:1:in `<top (required)>'
  /Users/depl0y/.rvm/gems/ruby-2.1.0/gems/railties-4.0.0/lib/rails/engine.rb:465:in `block (2 levels) in eager_load!'
  /Users/depl0y/.rvm/gems/ruby-2.1.0/gems/railties-4.0.0/lib/rails/engine.rb:464:in `each'
  /Users/depl0y/.rvm/gems/ruby-2.1.0/gems/railties-4.0.0/lib/rails/engine.rb:464:in `block in eager_load!'
  /Users/depl0y/.rvm/gems/ruby-2.1.0/gems/railties-4.0.0/lib/rails/engine.rb:462:in `each'
  /Users/depl0y/.rvm/gems/ruby-2.1.0/gems/railties-4.0.0/lib/rails/engine.rb:462:in `eager_load!'
  /Users/depl0y/.rvm/gems/ruby-2.1.0/gems/railties-4.0.0/lib/rails/engine.rb:347:in `eager_load!'
  /Users/depl0y/.rvm/gems/ruby-2.1.0/gems/railties-4.0.0/lib/rails/application/finisher.rb:56:in `each'
  /Users/depl0y/.rvm/gems/ruby-2.1.0/gems/railties-4.0.0/lib/rails/application/finisher.rb:56:in `block in <module:Finisher>'
...
more stack trace ending in my environment.rb (Application.initialize!)

有趣的是,我的query_controller中没有对PayPal SDK的引用。

在我的配置文件中关闭eager_load后,网站就会运行(包括错误中提到的API)。

我怀疑我的路线是导致此错误的原因:

constraints :subdomain => /^api.*/ do
    namespace :api, path: nil, defaults: {format: "json"} do
        namespace :v1 do

            match '/settings', to: 'query#settings', via: 'get'
...more routes

        end
    end
end

因为API :: V1不是PayPal SDK的一部分。

有人可以给我任何关于在哪里寻找的指示吗?我环顾了两个小时,但我似乎无法找到原因。


修改 好的,经过一些实验,似乎我的query_controller确实有问题。

我给了我的query_controller API :: V1 ::前缀(因为路由?)并删除它使我的应用程序重新启动。因此,应用程序再次启动,但调用API现在是一个问题。

我打电话给它,它仍然给我以下错误:

uninitialized constant PayPal::SDK::REST::API::V1

编辑2: 好吧,似乎我的命名空间API与PayPal使用(API)的命名空间冲突,因此崩溃和烧伤。

将我的API命名空间重命名为“服务”神奇地使它工作。我真的很想看到这个问题的解决方案。

如何正确地将我的命名空间“API :: V1”与PayPal :: SDK :: REST :: API命名空间分开?

0 个答案:

没有答案