在Hartl Rails教程章节13.4.1 Basic image upload我们添加了用于图像上传的载波 gem。
但是,在生成 uploader 并将迁移添加到 Microposts 模型后,我的测试中一直出现此错误:
NameError: 未初始化常量 Micropost::PictureUploader
谷歌搜索后,我能够通过将其添加到我的 environments.rb
来解决此问题:
需要'carrierwave/orm/activerecord'
但我觉得我做错了什么,因为 Hartl 没有这样做,他在第 13.4.1 章的末尾假设您的测试应该在重新启动服务器后通过。
我做错了吗?
更新:
将该行添加到我的 environments.rb
文件后,我的测试通过了。然后一旦他们通过了,我就可以删除那条线并且测试继续通过。这就像初始化一次所需的常量。
我会说我第一次运行测试之前忘记运行 rails db:migrate
,但是我继续删除测试数据库,重新创建它,运行迁移,重新启动服务器,它没有修复它。
仍然对哪里出了问题感到困惑。
最佳答案
BoraMa 和 user782220 运行 spring stop
然后 rails test
的建议对我有用。无需将 require
行添加到我的 environments.rb
。
我还通过 WSL 在 Windows 上通过 JetBrains RubyMine 运行 Hartle 的教程。我发现在 RubyMine 中停止应用程序实际上并没有停止服务器。每次我停止和启动服务器时,另一个 Puma 实例开始运行。我必须重新启动整个应用程序才能终止所有潜在服务器。
您可以通过输入 ps aux | 来检查您是否有多余的服务器在运行。 grep puma
进入你的命令行。
似乎与this有关问题
关于ruby-on-rails - 为什么carrierwave会导致NameError: uninitialized constant Micropost::PictureUploader错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44004065/