【发布时间】:2017-05-16 14:19:00
【问题描述】:
在 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,但我继续删除测试数据库,重新创建它,运行迁移,重新启动服务器并没有修复它.
仍然对出了什么问题感到困惑。
【问题讨论】:
-
我的猜测是,有时重启 rails 服务器是不够的,有时您还需要停止 Spring 预加载器:在命令行中尝试
spring stop并告诉我们是否有帮助。 -
我觉得这可能是问题所在。注意我的更新。我想我是因为在运行测试之前忘记运行 rails db:migrate 造成的。然后在我从环境.rb 文件中添加
require 'carrierwave/orm/activerecord' to my environments.rb file the tests passed. They still passed after I removedrequire 'carrierwave/orm/activerecord'` 之后。仍然不知道是什么原因造成的,这是我的问题,但目前可能无法找到。 -
@BoraMa 我遇到了同样的问题。 “rails test”给了我同样的问题。我做了“spring stop”然后“rails test”,它是固定的。
-
重启 Rails 服务器。这对我有用
标签: ruby-on-rails carrierwave railstutorial.org