如何修复/调试'期望的x.rb来定义Rails中的X.rb'

Pat*_*hie 22 ruby ruby-on-rails

我已经看到这个问题出现在许多不同的情况下,并希望获得在StackOverflow上修复/调试它的最佳实践.

为了使用现实世界的例子,我今天早上发现了这个例子:

expected announcement.rb to define Announcement
Run Code Online (Sandbox Code Playgroud)

该类在开发,测试生产控制台方面表现良好,但在生产的Mongrel中失败了.这是班级:

class Announcement < ActiveRecord::Base
  has_attachment :content_type => 'audio/mp3', :storage => :s3
end
Run Code Online (Sandbox Code Playgroud)

我想在答案中解决的问题并不是解决这个特定的问题,而是如何正确调试以使Rails给你一个有意义的错误,如预期的那样x.rb定义X.rb'通常是一个红色的鲱鱼.. .

编辑(到目前为止有3个很棒的回复,每个都有部分解决方案)

调试:

  1. 来自Joe Van Dyk:尝试通过导致错误的环境/实例上的控制台访问模型(在上面的情况下:脚本/控制台生产然后键入'Announcement'.

  2. 来自Otto:尝试通过初始化程序设置最小插件集,例如:config.plugins = [:exception_notification,:ssl_requirement,:all]然后一次重新启用一个.

具体原因:

  1. 来自Ian Terrell:如果您使用attachment_fu,请确保安装了正确的图像处理器.即使您没有附加图像,attachment_fu也会要求它.

  2. 来自Otto:确保您没有命名与内置Rails类冲突的模型,例如:Request.

  3. 来自Josh Lewis:确保您的应用程序(或Gem列表)中某处没有重复的类或模块名称.

Joe*_*Dyk 11

这是一个棘手的问题.

通常对我有用的是在生产服务器上运行"脚本/控制台生产",然后键入:

Announcement

这通常会给你一个更好的错误信息.但你说你已经尝试过了吗?