2017-05-16 97 views
3

在Hartl Rails教程章节13.4.1 Basic image upload中,我们为图片上传添加了carrierwave gem。为什么carrierwave导致NameError:未初始化的常量Micropost :: PictureUploader错误?

但是,我不停地生成上传并添加迁移到微观柱模型后得到在我的测试此错误:

NameError: uninitialized constant Micropost::PictureUploader

周围的Googling我能解决这个问题,加入这之后我environments.rb

require 'carrierwave/orm/activerecord'

但我觉得我做错了什么,因为哈特尔没有做到这一点,他在承担13.4章节的结尾。 1重新启动服务器后应该传递测试。

我做错了吗?

UPDATE:

加入这一行我environments.rb文件,我的测试通过后。然后一旦他们通过,我就能够移除那条线,测试继续通过。这就像一次初始化所需的常量。

我会说在第一次运行测试之前,我忘记运行rails db:migrate,但是我继续丢弃测试数据库,重新创建测试数据库并运行迁移,重新启动服务器,但没有修复它。

对于哪里出了问题仍然感到困惑。

+1

我的猜测是,有时重新启动rails server是不够的,有时你需要停止spring preloader:在命令行尝试'spring stop'并告诉我们是否有帮助。 – BoraMa

+0

我觉得这可能是问题所在。请注意我的更新。我想我是因为忘记运行rails db而导致它的:在运行测试之前进行迁移。然后,在我的environments.rb文件中添加'require'carrierwave/orm/activerecord'后,测试通过。从我的environments.rb文件中删除'require'carrierwave/orm/activerecord'后,它们仍然通过。仍然不知道是什么导致了这一点,这是我的问题,但可能无法在这一点上找出答案。 –

+1

@BoraMa我遇到了这个完全相同的问题。 “铁轨测试”给了我同样的问题。我做了“春天停止”,然后“轨道测试”,它是固定的。 – user782220

回答

0

这有什么更新?我遇到了同样的问题,并通过添加解决方案

require 'carrierwave/orm/activerecord'

to my environments.rb。

相关问题