为什么carrierwave导致NameError:未初始化的常量Micropost :: PictureUploader错误?

时间:2017-05-16 14:19:00

标签: ruby-on-rails carrierwave railstutorial.org

在Hartl Rails教程章节13.4.1 Basic image upload中,我们为图像上传添加了carrierwave gem。

但是,在生成上传器并将迁移添加到Microposts模型后,我在测试中一直收到此错误:

NameError: uninitialized constant Micropost::PictureUploader

在谷歌搜索后,我可以通过将其添加到我的environments.rb

来解决此问题

require 'carrierwave/orm/activerecord'

但是我觉得我做错了,因为Hartl没有这样做,他假设在第13.4.1节末尾你的测试应该在重新启动服务器后通过。

我这样做错了吗?

更新:

将该行添加到我的environments.rb文件后,我的测试通过了。然后,一旦他们通过,我能够删除该线,测试继续通过。这就像一次初始化所需的常数。

我会说我在第一次运行测试之前忘记运行rails db:migrate,但是我继续删除测试数据库,重新创建它,然后运行迁移,重新启动服务器而它没有解决它。

仍然对出了什么问题感到困惑。

3 个答案:

答案 0 :(得分:2)

有关此的任何更新?我遇到了同样的问题,通过添加

解决了这个问题
  

要求'carrierwave / orm / activerecord'

到我的environment.rb。

答案 1 :(得分:0)

BoraMa user782220 的建议是运行spring stop,然后rails test为我工作。无需将require行添加到我的environments.rb

我还通过WSL在Windows上通过JetBrains RubyMine运行Hartle的教程。我发现在RubyMine中停止应用程序实际上并没有停止服务器。每次我停止并启动服务器时,都会运行另一个Puma实例。我必须重新启动整个应用程序才能终止所有潜在服务器。

您可以通过在命令行中输入ps aux | grep puma来检查是否有多余的服务器在运行。

似乎与this问题有关

答案 2 :(得分:0)

您可以尝试再次运行Uploader命令,然后重新启动服务器。为我工作。

rails generate uploader Picture