我已经看到这个问题出现在许多不同的情况下,并希望获得在StackOverflow上修复/调试它的最佳实践.
为了使用现实世界的例子,我今天早上发现了这个例子:
expected announcement.rb to define Announcement
该类在开发,测试和生产控制台方面表现良好,但在生产的Mongrel中失败了.这是班级:
class Announcement < ActiveRecord::Base has_attachment :content_type => 'audio/mp3', :storage => :s3 end
我想在答案中解决的问题并不是解决这个特定的问题,而是如何正确调试以使Rails给你一个有意义的错误,如预期的那样x.rb定义X.rb'通常是一个红色的鲱鱼.. .
编辑(到目前为止有3个很棒的回复,每个都有部分解决方案)
调试:
来自Joe Van Dyk:尝试通过导致错误的环境/实例上的控制台访问模型(在上面的情况下:脚本/控制台生产然后键入'Announcement'.
来自Otto:尝试通过初始化程序设置最小插件集,例如:config.plugins = [:exception_notification,:ssl_requirement,:all]然后一次重新启用一个.
具体原因:
来自Ian Terrell:如果您使用attachment_fu,请确保安装了正确的图像处理器.即使您没有附加图像,attachment_fu也会要求它.
来自Otto:确保您没有命名与内置Rails类冲突的模型,例如:Request.
来自Josh Lewis:确保您的应用程序(或Gem列表)中某处没有重复的类或模块名称.
Joe Van Dyk.. 11
这是一个棘手的问题.
通常对我有用的是在生产服务器上运行"脚本/控制台生产",然后键入:
Announcement
这通常会给你一个更好的错误信息.但你说你已经尝试过了吗?
这是一个棘手的问题.
通常对我有用的是在生产服务器上运行"脚本/控制台生产",然后键入:
Announcement
这通常会给你一个更好的错误信息.但你说你已经尝试过了吗?