web-dev-qa-db-fra.com

NameError: constante non initialisée Article :: ImageUploader lors de l'utilisation de Carrierwave on Rails 4.1.5

J'apprends Rails 4.1.5

J'ai eu cette erreur:

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>'

mon fichier: article.rb

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

J'ai eu une erreur lors de l'exécution de Rails console

lorsque j'écris un mot ' Article ' sur la console, cela soulève une erreur ci-dessus, mais il fonctionne correctement lorsque cette ligne mount_uploader :image, ImageUploader dans le fichier article.rb est supprimée.

lorsque cette ligne est restaurée, l'erreur se reproduit. il semble donc que l'erreur soit due à cette ligne, mais je ne suis pas sûr.

n'importe qui peut résoudre ce problème, s'il vous plaît ...

merci d'avoir lu et répondu :-)

26
Didin Ahmadi

Je sais que nous avons quelques mois de retard, mais je suis tombé sur ce problème moi-même. Ma solution était de coller 

nécessite 'carrierwave/orm/activerecord'

dans le fichier config/environment.rb. Il suffit de l'ajouter à la fin.

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

68
Max Rogers

J'ai ajouté ceci à application.rb

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

Rails 4.2.0, Ruby 2.2.2, Carrierwave 0.10.0

30
PGill

Je vais le mettre ici, juste au cas où ..

SI vous utilisez spring gem, vous devez le "redémarrer" en changeant config/application.rb ou fermer et ouvrir le terminal, ou: $ bin/spring stop

Vous pouvez consulter la durée de vie de ses processus ici (défilement vers la droite):

$ 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

Et tuez-le si nécessaire.

Plus d'infos sur: https://github.com/Rails/spring

21
alexey_the_cat

Utilisez-vous le printemps?

J'ai deux fenêtres de terminal, une pour le serveur, l'autre pour la console.

Après avoir redémarré mon serveur et entré à nouveau dans la console, l'erreur a disparu.

Et je n'ai ajouté aucune ligne dans application.rb

Rails 4.2.4, Ruby 2.3.0, Carrierwave 0.10.0 a2c93fe

7
hungmi

Je suppose que vous utilisez la pierre précieuse CarrierWave pour le téléchargement de fichiers. Avez-vous vérifié qu'il était correctement installé? Vous pouvez lancer la commande pour vérifier: 

bundle show carrierwave

Dans mon cas, le kit est installé sur un autre terminal sur lequel j'ai exécuté la console Rails. HTH!

4
Maki

Autre astuce: ouvrez le fichier téléchargé qui vient d'être généré. Assurez-vous que le nom de la classe de téléverseur correspond au nom de la classe que vous avez ajoutée dans votre modèle. 

3
Adam Kalnas

Si une erreur apparaît dans les spécifications de l'application Rails, il se peut que vous manquiez

require 'Rails_helper'

au sommet :)

2
Artur79

Quittez et redémarrez votre console . Dans ce cas, rechargez! ne résoudra pas.

1
Seralto

essayez ceciin appliccation.rb nom de module correct résoudre le même problème pour moi

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

Dans mon cas, j'ai oublié d'exécuter Rails g uploader image. Une fois cela fait, ça fonctionne bien.

0
John Doe

Je recevais cette erreur et puis cela a fonctionné après le redémarrage du serveur. 

0
GraySmith00