web-dev-qa-db-ja.com

NameError:Rails 4.1.5でCarrierwaveを使用すると、初期化されていない定数Article :: ImageUploader

私は学習しています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>'

私のファイル:article.rb

class Article < ActiveRecord::Base    
    validates_presence_of :title, :body
    belongs_to :user
    mount_uploader :image, ImageUploader
end

Rails consoleの実行中にエラーが発生しました

コンソールでWord 'Article'を記述すると、上記のエラーが発生しますが、article.rbのファイルのmount_uploader :image, ImageUploader行が削除されると正常に動作します。

その行が復元されると、エラーが再び発生します。そのため、エラーはその行が原因のようですが、私にはわかりません。

誰でもこれを修正できます...

読んで答えてくれてありがとう:-)

28
Didin Ahmadi

私はこれが数ヶ月遅れていることを知っていますが、私は自分でこの問題に出くわしました。私の解決策は貼り付けることでした

「carrierwave/orm/activerecord」が必要

config/environment.rbファイルに。最後に追加してください。

私の環境:Ruby 2.1.2p95; Rails 4.1.7; Carrierwave-0.10.0

69
Max Rogers

これをapplication.rbに追加しました

require 'carrierwave'
require 'carrierwave/orm/activerecord'

Rails 4.2.0、Ruby 2.2.2、Carrierwave 0.10.0

30
PGill

念のためにここに置いておきます。

spring gemを使用している場合は、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

必要に応じてそれを殺します。

詳細: https://github.com/Rails/spring

23
alexey_the_cat

あなたは春を使用していますか?

サーバー用とコンソール用の2つのターミナルウィンドウがありました。

サーバーを再起動してコンソールを再入力してくださいの後、エラーは消えました。

そして、application.rbに行を追加しませんでした

Rails 4.2.4、Ruby 2.3.0、Carrierwave 0.10.0 a2c93fe

8
hungmi

ファイルのアップロードにCarrierWave gemを使用していると仮定しています。正しくインストールされたことを確認しましたか?以下を確認するコマンドを発行できます。

bundle show carrierwave

私の場合、Rails console。HTH!

4
Maki

別のヒントとして、生成されたばかりのアップロード済みファイルを開きます。アップローダークラスの名前が、モデルに追加したクラスの名前と一致することを確認します。

3
Adam Kalnas

Railsアプリの仕様のみにエラーが表示された場合、あなたは行方不明になっている可能性があります

require 'Rails_helper'

頂点で :)

2
Artur79

終了して、コンソールを再度起動します。この場合、リロードするだけです!解決しません。

1
Seralto

私にとっては、以下の宝石を両方ともアンインストールしました

gem 'spring'
gem 'spring-watcher-listen', '~> 2.0.0'

appliccation.rbでこれを試してください正しいモジュール名これは私にとって同じ問題を修正します

module CorrectName #OldName  <---------------
     # Do not swallow errors in after_commit/after_rollback callbacks.
    config.active_record.raise_in_transactional_callbacks = true
  end
end
0
Bacho sh

私の場合、Rails g uploader image。完了したら、正常に動作します。

0
John Doe

このエラーが発生していましたが、サーバーを再起動すると機能しました。

0
GraySmith00