Kum*_*mar 5 ruby amazon-web-services ruby-on-rails-4
文件名 -
app/controllers/invoice/inventory/department/pharmacy_invoices_controller.rb
文件内容-
class Invoice::Inventory::Department::PharmacyInvoicesController < ApplicationController
...
end
Run Code Online (Sandbox Code Playgroud)
我在开发中没有收到错误,但在生产中却收到此错误 -
F, [2016-04-25T13:08:00.754597 #13500] FATAL -- :
LoadError (Unable to autoload constant Invoice::Inventory::Department::PharmacyInvoicesController, expected /xxxxxx/yyyyyyy/app/controllers/invoice/inventory/department/pharmacy_invoices_controller.rb to define it):
Run Code Online (Sandbox Code Playgroud)
我做了 ssh 并检查了服务器上的每个文件。这和开发是一样的,这是显而易见的。我不明白为什么它会在生产中抛出这样的错误。
Rails 文档中对此进行了介绍,特别是在Autoloading 和 Reloading Constants以及Nesting中。
这是因为定义嵌套可以通过两种方式完成,并且在 Rails 的看待方式方面有很大不同。您可以使用以下方法检查Module.nesting:
module Foo
class Bar
Module.nesting
end
end
=> [Foo::Bar, Foo]
class Foo::Bar
Module.nesting
end
=> [Foo::Bar]
Run Code Online (Sandbox Code Playgroud)
如果您想了解更多信息,我推荐 Simon Coffey 写的这篇非常好的博客文章:Rails Autoloading Hell
| 归档时间: |
|
| 查看次数: |
1731 次 |
| 最近记录: |