2014-09-07 7 views
21

Ich lerne Schienen 4.1.5Nameerror: nicht initialisierte Konstante Artikel :: ImageUploader bei der Verwendung von Carrierwave auf Schienen 4.1.5

ich diesen Fehler habe:

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

meine Datei: article.rb

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

ich habe Fehler beim rails console

läuft, wenn ich ein Wort schreiben Artikel 'auf der Konsole, löst Fehler oben, aber es funktioniert gut, wenn diese Zeile mount_uploader :image, ImageUploader bei article.rb-Datei entfernt.

Wenn diese Zeile wiederhergestellt wird, kommt der Fehler erneut. so scheint es, dass der Fehler diese Linie verursacht, aber ich bin mir nicht sicher.

jeder kann dies beheben, bitte ...

Sie zum Lesen danken und beantworten :-)

Antwort

4

Ich nehme an, Sie CarrierWave Juwel für das Hochladen von Dateien verwenden. Haben Sie überprüft, dass es richtig installiert wurde? Sie könnten den Befehl zu überprüfen:

bundle show carrierwave 

In meinem Fall habe ich Bündel auf einem anderen Terminal installiert, wo ich Schienen Konsole lief. HTH!

+0

Genau. Vielen Dank! – Raza

64

Ich weiß, das ist ein paar Monate zu spät, aber ich bin selbst über dieses Thema gestolpert. Meine Lösung war

in die Datei config/environment.rb einfügen. Füge es einfach am Ende an.

Mein Env: Ruby 2.1.2p95; Schienen 4.1.7; Carrierwave-0.10.0

+1

Danke, ich überspringe das und folge dem Guide. – John

+0

Es löste mein Problem! Vielen Dank :) –

3

Ein weiterer Tipp versuchen: Öffnen Sie die hochgeladen, die gerade generiert wurde. Stellen Sie sicher, dass der Name der Uploader-Klasse mit dem Namen der Klasse übereinstimmt, die Sie in Ihrem Modell hinzugefügt haben.

27

Ich habe diese zu application.rb

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

Rails 4.2.0 Ruby 2.2.2, 0.10.0 Carrierwave

+0

Ich möchte in der CarrierWave-Dokumentation darauf hinweisen: "Stellen Sie sicher, dass Sie CarrierWave nach dem Laden Ihres ORM laden, andernfalls müssen Sie die entsprechende Erweiterung manuell anfordern" – Tommyixi

+0

Erste Zeile ist am wahrscheinlichsten nicht benötigt. Es wird als Teil der Zeile "Bundler.require (* Rails.groups)" ausgeführt. –

1

verlassen und die Konsole neu starten. In diesem Fall einfach neu laden! wird nicht lösen.

4

Verwenden Sie Feder?

Ich habe zwei Terminalfenster, eines für Server, das andere für die Konsole.

Nachdem ich meinen Server neu gestartet und erneut die Konsole eingegeben habe, verschwand der Fehler.

Und ich habe hinzufügen keine Linie in application.rb

Rails 4.2.4 Ruby 2.3.0, Carrierwave 0,10.0 a2c93fe

15

Ill legte es hier, nur für den Fall ..

WENN Sie spring gem verwenden, dann müssen Sie auf "Neustart" durch config/application.rb oder schließen und öffnen Terminal zu ändern, oder: $ bin/spring stop

Sie können hier die Lebensdauer des Prozesses überprüfen (nach rechts scrollen):

$ 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 

Und töten Sie es bei Bedarf.

Mehr Infos unter: https://github.com/rails/spring

+2

Hinzufügen von Leerzeichen zu config/application.rb und Speichern funktioniert für mich! –

+0

Es lohnt sich zu erwähnen, ich habe versucht, den Server neu zu starten, und bewachen, aber die 'application.rb' Datei zu ändern hat es für mich gemacht (Leerzeichen). Ich habe nie versucht, das Terminal neu zu starten, aber jetzt vermute ich, dass es das auch getan hätte. –

0

wurde ich diesen Fehler und es funktionierte dann nach dem Neustart des Servers.

0

versuchen, diese in appliccation.rb richtigen Modulnamen das gleiche Problem beheben für mich

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

Wenn Fehler in Rails-Anwendung erscheint nur‘specs Sie

require 'rails_helper' 

auf die möglicherweise fehlen oben :)

Verwandte Themen