ruby on rails 4 - multiple - NameError: constante no inicializada Artículo:: ImageUploader cuando se usa Carrierwave on rails 4.1.5
carrierwave wiki (12)
¿Estás usando primavera?
Tengo dos ventanas de terminal, una para el servidor y la otra para la consola.
Después de reiniciar mi servidor e ingresar consola nuevamente , el error desapareció.
Y no agregué ninguna línea en la aplicación.rb
Rails 4.2.4, Ruby 2.3.0, Carrierwave 0.10.0 a2c93fe
Estoy aprendiendo los carriles 4.1.5
Tengo este error:
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>''
mi archivo: article.rb
class Article < ActiveRecord::Base
validates_presence_of :title, :body
belongs_to :user
mount_uploader :image, ImageUploader
end
Recibí un error al ejecutar la rails console
cuando escribo una palabra '' Artículo '' en la consola, provoca el error anterior, pero funciona bien cuando esta línea mount_uploader :image, ImageUploader
en el archivo de mount_uploader :image, ImageUploader
elimina.
cuando esa línea se restablece, el error viene de nuevo. así que parece que el error es causado por esa línea, pero no estoy seguro.
cualquiera puede arreglar esto, por favor ...
gracias por leer y responder :-)
Añadí esto a application.rb
require ''carrierwave''
require ''carrierwave/orm/activerecord''
Rails 4.2.0, Ruby 2.2.2, Carrierwave 0.10.0
En mi caso, olvidé ejecutar la rails g uploader image
. Una vez hecho, funciona bien.
Estaba recibiendo este error y luego funcionó después de reiniciar el servidor.
Lo pondré aquí, por si acaso ...
SI está utilizando la gema de spring
, tiene que "reiniciarla" cambiando config/application.rb
o cerrar y abrir la terminal, o: $ bin/spring stop
Puede inspeccionar la vida útil de sus procesos aquí (desplazarse a la derecha):
$ 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
Y matarlo si es necesario.
Más información en: https://github.com/rails/spring
Otro consejo: abre el archivo que acaba de generar. Asegúrese de que el nombre de la clase de carga coincida con el nombre de la clase que agregó en su modelo.
Sé que esto es unos meses más tarde, pero me encontré con este problema yo mismo. Mi solución fue pegar
requiere ''carrierwave / orm / activerecord''
en el archivo config / environment.rb. Solo agrégalo al final.
My Env: Ruby 2.1.2p95; Rieles 4.1.7; Carrierwave-0.10.0
Salga y comience su consola de nuevo. En este caso, ¡solo vuelve a cargar! no resolverá
Si aparece un error en las especificaciones de la aplicación Rails, es posible que falte
require ''rails_helper''
en la cima :)
Si todo lo demás falla, actualice la gema carrierwave a su última versión (modificando su Gemfile y eliminando cualquier número de versión específico relacionado con él y luego $ bundle install
)
Supongo que está utilizando la gema de CarrierWave para subir archivos. ¿Has comprobado que se haya instalado correctamente? Puede emitir el comando para verificar:
bundle show carrierwave
En mi caso, he paquete instalado en una terminal diferente donde ejecuté la consola de rieles. HTH!
intente esto en el nombre del módulo correcto de appliccation.rb este arreglo el mismo problema para mí
module CorrectName #OldName <---------------
# Do not swallow errors in after_commit/after_rollback callbacks.
config.active_record.raise_in_transactional_callbacks = true
end
end