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 удалена.
когда эта строка будет восстановлена, ошибка снова появится. поэтому кажется, что ошибка вызвана этой строкой, но я не уверен.
любой может исправить это, пожалуйста...
благодарим вас за чтение и ответ: -)
Ответы
Ответ 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'