NameError:在rails 4.1.5上使用Carrierwave时未初始化的常量Article :: ImageUploader

Did*_*adi 29 carrierwave ruby-on-rails-4

我正在学习rails 4.1.5

我收到了这个错误:

2.1.1 :008 > Article
NameError: uninitialized constant Article::ImageUploader
    from /Volumes/disk0s4/www/rails/blog/app/models/article.rb:4:in `<class:Article>'
    from /Volumes/disk0s4/www/rails/blog/app/models/article.rb:1:in `<top (required)>'
    from (irb):8
    from /Users/didin/.rvm/gems/ruby-2.1.1/gems/railties-4.1.5/lib/rails/commands/console.rb:90:in `start'
    from /Users/didin/.rvm/gems/ruby-2.1.1/gems/railties-4.1.5/lib/rails/commands/console.rb:9:in `start'
    from /Users/didin/.rvm/gems/ruby-2.1.1/gems/railties-4.1.5/lib/rails/commands/commands_tasks.rb:69:in `console'
    from /Users/didin/.rvm/gems/ruby-2.1.1/gems/railties-4.1.5/lib/rails/commands/commands_tasks.rb:40:in `run_command!'
    from /Users/didin/.rvm/gems/ruby-2.1.1/gems/railties-4.1.5/lib/rails/commands.rb:17:in `<top (required)>'
    from /Volumes/disk0s4/www/rails/blog/bin/rails:8:in `<top (required)>'
    from /Users/didin/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /Users/didin/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from -e:1:in `<main>'
Run Code Online (Sandbox Code Playgroud)

我的档案:article.rb

class Article < ActiveRecord::Base    
    validates_presence_of :title, :body
    belongs_to :user
    mount_uploader :image, ImageUploader
end
Run Code Online (Sandbox Code Playgroud)

我跑步时遇到错误 rails console

当我在控制台上写一个单词' Article '时,它会引发上面的错误,但是当mount_uploader :image, ImageUploaderarticle.rb文件中的这一行被删除时它工作正常.

当该行恢复时,错误再次出现.所以似乎错误是由那条线引起的,但我不确定.

有人可以解决这个问题,请...

谢谢你的阅读和回答:-)

小智 70

我知道这已经晚了几个月但我自己偶然发现了这个问题.我的解决方案是粘贴

需要'carrierwave/orm/activerecord'

进入config/environment.rb文件.只需将其附加到最后.

我的环境:Ruby 2.1.2p95; Rails 4.1.7; Carrierwave-0.10.0


PGi*_*ill 31

我添加了这个 application.rb

require 'carrierwave'
require 'carrierwave/orm/activerecord'
Run Code Online (Sandbox Code Playgroud)

Rails 4.2.0,Ruby 2.2.2,Carrierwave 0.10.0


ale*_*cat 25

我把它放在这里,以防万一..

如果您使用的是springgem,则必须通过更改config/application.rb或关闭并打开终端来"重启"它,或者:$ bin/spring stop

您可以在此处检查其进程生命周期(向右滚动):

$ ps aux | grep spring
alexey           55936   0.0  0.9  2645908  78440   ??  Ss   Thu06PM   0:13.17 spring app    | myapp | started 26 hours ago | development mode
alexey           81963   0.0  0.0  2481764   1608   ??  S    Sat11PM   0:01.91 spring server | myapp | started 141 hours ago
Run Code Online (Sandbox Code Playgroud)

如果需要可以杀死它.

更多信息请访问:https://github.com/rails/spring

  • 添加空间到config/application.rb并保存为我工作! (2认同)

小智 10

你在用春天吗?

我有两个终端窗口,一个用于服务器,另一个用于控制台.

我之后重新启动我的服务器,然后再次进入控制台,错误消失.

我没有在application.rb中添加任何行

Rails 4.2.4,Ruby 2.3.0,Carrierwave 0.10.0 a2c93fe


Mak*_*aki 4

我假设您正在使用 CarrierWave gem 进行文件上传。您检查过它是否安装正确吗?您可以发出命令来检查:

bundle show carrierwave
Run Code Online (Sandbox Code Playgroud)

就我而言,我已将捆绑包安装在运行 Rails 控制台的不同终端上。哈!