Why does carrierwave cause the NameError: uninitialized constant Micropost::PictureUploader error?

Why does carrierwave cause the NameError: uninitialized constant Micropost::PictureUploader error?

在 Hartl Rails 教程章节 13.4.1 Basic image upload 中,我们添加了用于图像上传的载波 gem。

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

NameError: uninitialized constant Micropost::PictureUploader

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

来解决此问题

require 'carrierwave/orm/activerecord'

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

我做错了吗?

更新:

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

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

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

有这方面的更新吗?我 运行 遇到了同样的问题,通过添加

解决了这个问题

require 'carrierwave/orm/activerecord'

给我的 environments.rb.

BoraMauser782220 对 运行ning spring stop 的建议然后 rails test 奏效了为了我。无需将 require 行添加到我的 environments.rb.

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

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

似乎与 this 问题有关

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

rails generate uploader Picture