Подтвердить что ты не робот

NameError: uninitialized constant Article:: ImageUploader при использовании Carrierwave на рельсах 4.1.5

Я изучаю рельсы 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

когда я пишу слово " Article" на консоли, он вызывает ошибку выше, но он отлично работает, когда эта строка mount_uploader :image, ImageUploader в файле article.rb удалена.

когда эта строка будет восстановлена, ошибка снова появится. поэтому кажется, что ошибка вызвана этой строкой, но я не уверен.

любой может исправить это, пожалуйста...

благодарим вас за чтение и ответ: -)

4b9b3361

Ответ 1

Я знаю, что это на несколько месяцев позже, но я сам наткнулся на эту проблему. Моим решением было вставить

требуется "carrierwave/orm/activerecord"

в файл config/environment.rb. Просто добавьте его в конце.

My Env: Ruby 2.1.2p95; Rails 4.1.7; Carrierwave-0.10.0

Ответ 2

Я добавил это к application.rb

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

Rails 4.2.0, Ruby 2.2.2, Carrierwave 0.10.0

Ответ 3

Положите его здесь, на всякий случай.

ЕСЛИ вы используете 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

Ответ 4

Используете ли вы spring?

У меня есть два окна терминала, один для сервера, другой для консоли.

После того, как я перезапустил мой сервер и снова запустил консоль, ошибка исчезла.

И я не добавил строку в application.rb

Rails 4.2.4, Ruby 2.3.0, Carrierwave 0.10.0 a2c93fe

Ответ 5

Я предполагаю, что вы используете CarrierWave gem для загрузки файлов. Вы проверили, что он был правильно установлен? Вы можете выполнить команду для проверки:

bundle show carrierwave

В моем случае я установил пакет на другом терминале, где я запускал консоль rails. НТН!

Ответ 6

Еще одна подсказка: откройте загруженный файл, который был только что сгенерирован. Убедитесь, что имя класса загрузчика совпадает с именем класса, добавленного в вашу модель.

Ответ 7

Если ошибка появляется только в спецификации приложения rails, возможно, вы пропали без вести

require 'rails_helper'

наверху :)

Ответ 8

Выйдите и снова запустите консоль. В этом случае просто перезагрузите! не решит.

Ответ 9

Я получал эту ошибку, а затем работал после перезапуска сервера.

Ответ 10

попробуйте это в правильном имени модуля applcation.rb это исправляет ту же проблему для меня

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

Ответ 11

В моем случае я забыл запустить rails g uploader image. После того, как сделано, все работает отлично.

Ответ 12

Для меня я удалил оба драгоценных камня ниже

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