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!