2011-01-11 7 views
0

Ich habe ein seltsames Problem beim Migrieren einer Datenbank im Produktionsmodus aufgetreten. Die anfängliche rake db:migrate wird mit Fehler „Objekt ist nicht konstant Benutzer fehlt“, wo Benutzer eine meiner Models ist, dass in dieser Migration wie folgt zugegriffen:Schienen Migration in der Produktion schlägt fehl mit "Objekt fehlt nicht Constant User"

add_column :users, :feedbacks_count, :integer, :default => 0 
    User.reset_column_information 
    User.all.each do |u| 
     u.update_attribute :feedbacks_count, u.feedbacks.length 
    end 
end 

Die Protokolle folgendes sagen:

Objekt fehlt nicht Konstante Benutzer!

/var/lib/gems/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:417:in `load_missing_constant‘

/var/lib/gems/1.8/gems /activesupport-2.3.4/lib/active_support/dependencies.rb:80:in `const_missing_not_from_s3_library‘

/var/lib/gems/1.8/gems/aws-s3-0.6.2/lib/aws/s3 /extensions.rb:206:in `const_missing '

/var/lib/gems/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:92:in ` const_missing'

/var/lib/gems/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:98:in `senden‘

/var/lib/gems/1.8/gems /activesupport-2.3.4/lib/active_support/dependencies.rb:98:in `const_missing‘

./db/migrate//20100823185519_add_columns_for_counter_caches.rb:5:in `up_without_benchmarks'

/var /lib/gems/1.8/gems/activerecord-2.3.4/lib/active_record/migration.rb:282:in `senden '

/var/lib/gems/1.8/gems/activerecord-2.3.4/lib/active_record/migration.rb:282:in `Migrate‘

/usr/lib/ruby/1.8/benchmark .rb: 293: in `Maßnahme '

/var/lib/gems/1.8/gems/activerecord-2.3.4/lib/active_record/migration.rb:282:in ` wandern'

/var/lib/gems/1.8/gems/activerecord-2.3.4/lib/active_record/migration.rb:365:in `senden '

/var/lib/gems/1.8/gems/activerecord-2.3.4/lib/active_record/migration.rb:365:in `wandern‘

/var/lib/gems/1.8/gems /activerecord-2.3.4/lib/active_record/migration.rb:486:in `Migrate‘

/var/lib/gems/1.8/gems/activerecord-2.3.4/lib/active_record/migration.rb : 562: in `call '

/var/lib/gems/1.8/gems/activecord-2.3.4/lib/active_record/migration.rb: 562: in `ddl_transaction '

/var/lib/gems/1.8/gems/activerecord-2.3.4/lib/active_record/migration.rb:485:in ` wandern'

/var/lib/gems/1.8/gems/activecord-2.3.4/lib/active_record/migration.rb: 472: in `each '

/var/lib/gems/1.8/gems/activerecord-2.3. 4/lib/active_record/migration.rb: 472: in `Migrate‘

/var/lib/gems/1.8/gems/activerecord-2.3.4/lib/active_record/migration.rb:400:in 012.351.`up '

/var/lib/gems/1.8/gems/activerecord-2.3.4/lib/active_record/migration.rb:383:in ` Migrate'

/var/lib/Edelsteine /1.8/gems/rails-2.3.4/lib/tasks/databases.rake:116

/var/lib/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `Aufruf '

/var/lib/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in` ausführen'

/var/lib/gems/1.8/gems /rake-0.8.7/lib/rake.rb:631:in `Jeder '

/var/lib/gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in` ausführen'

/var/lib/gems/1.8/gems /rake-0.8.7/lib/rake.rb:597:in `invoke_with_call_chain'

/usr/lib/ruby/1.8/monitor.rb:242:in ` synchronize‘

/var/lib/gems/1.8/gems/rake-0.8.7/lib/rake.rb: 590: in `invoke_with_call_chain '

/var/lib/gems/1.8/gems/rake-0.8.7/lib/rake .rb: 583: in'Aufruf '

/var/lib/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2051:in `invoke_task‘

/var/lib/gems/1.8/gems/rake -0.8.7/lib/rake.rb: 2029: in `top_level‘

/var/lib/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in ` jeder '

/var/lib/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'

/var/lib/gems/1.8/gem s/Rake-0.8.7/lib/rake.rb: 2068: in `standard_exception_handling‘

/var/lib/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2023: in `top_level '

/var/lib/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2001:in ` run'

/var/lib/Edelsteine ​​/ 1.8/gem/rake-0.8.7/lib/rake.rb: 2068: in `standard_exception_handling '

/var/lib/gems/1.8/gems/rake-0.8.7/lib/rake.rb: 1998: in `run '

/var/lib/gems/1.8/gems/rake-0.8.7/bin/rake:31 /usr/bin/Rake: 19: in` load'

/usr/bin/rake: 19

las ich eine Menge von Artikeln über, die sich auf „Objekt nicht konstant X fehlt“, wo das Problem ist vor allem Modelle Referenzierung von lazy_loading oder Plugins zugreifen. Die Anforderung von 'user.rb' vor der Spalte add_column oder das Hinzufügen einer User.new vor dem Zugriff auf die Tabelle users löst das Problem nicht.

Der Zugriff auf das Benutzermodell in einer Migration vor der fehlgeschlagenen verursacht auch keine Probleme.

Das Merkwürdigste an diesem Problem ist, dass ich den gleichen Code vor einem Tag auf einen anderen Server migriert habe, mit den gleichen Einstellungen und auch in der Produktion, wo die Migration ohne Probleme lief.

jede Hilfe würde geschätzt werden!

Antwort

0

Natürlich soll ich nicht erfordern das User-Modell, aber die User-Klasse in die Migration mit Hilfe

class User < ActiveRecord::Base; end 

das ist alles, was es zu tun ist.

Was noch zu prüfen bleibt, ist, warum User-Modell nicht auf diese Migration bekannt ist ....

0

Etwas falsch konfiguriert in Ihrem Setup Amazon S3. Vermissen Sie eine S3-Konfigurationsdatei aus dem Konfigurationsverzeichnis?

Verwandte Themen