在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
,但是我继续删除测试数据库,重新创建它,然后运行迁移,重新启动服务器而它没有解决它。
仍然对出了什么问题感到困惑。
答案 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