2010-02-05 11 views
6

Ich versuche, meine Datenbank mit der Standard db/seeds.rb Methode zu seed. Dies funktioniert gut auf meiner Entwicklung Maschine, aber auf meinem Server, die ich erhalte:db: Seed nicht laden Modelle

$ sudo rake db:seed RAILS_ENV=production --trace 
** Invoke db:seed (first_time) 
** Invoke environment (first_time) 
** Execute environment 
** Execute db:seed 
rake aborted! 
uninitialized constant Permission 
/usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2503:in `const_missing' 
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:92:in `const_missing' 
/path/.../.../.../.../db/seeds.rb:4 
/usr/local/lib/ruby/gems/1.8/gems/rails-2.3.4/lib/tasks/databases.rake:215:in `load' 
/usr/local/lib/ruby/gems/1.8/gems/rails-2.3.4/lib/tasks/databases.rake:215 
/usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `call' 
... 

Aber wenn ich in der Konsole zu überprüfen, so gilt das Modell existiert:

$ script/console production 
Loading production environment (Rails 2.3.4) 
>> Permission 
=> Permission(id: integer, ..., created_at: datetime, updated_at: datetime) 

Was bin ich vergessen?

+0

Beachten Sie, dass es auf meinem Produktions-Server in Entwicklungsumgebung in Ordnung zu arbeiten. – Eli

+0

Wie sieht dein samen.rb aus? –

+0

Ich habe es behoben. Ich habe 'threadsafe!' Deaktiviert. – Eli

Antwort

6

Es kann durch Deaktivieren von threadsafe! in der Umgebung Konfiguration behoben werden.

2

Ich lief gerade über eine gute Annäherung an dieses Problem in this article. Ich fasse hier zusammen, damit Leute (hoffentlich) es schneller finden können.

Die Idee ist THREAD in der Produktionsumgebung zu deaktivieren, zuerst durch Bearbeiten config/Umgebungen/production.rb:

config.threadsafe! unless ENV['THREADSAFE'] == 'off' 

Sie dann THREAD gesetzt = off, wenn Rake Aufgaben ausgeführt werden.

10

In einem Kommentar im Blog veröffentlicht oben verknüpft und hier wieder: http://www.builtfromsource.com/2011/02/09/getting-rake-dbseed-and-config-threadsafe-to-play-nice/

Bruce Adams erwähnt, dass man das so nennen kann:

config.threadsafe! es sei denn, $ rails_rake_task

nur Threadsafe einschalten, wenn keine Rake-Task ausgeführt wird.

Aber da das Problem wirklich ist, dass threadsafe Dependency_loading deaktiviert, können Sie diese Zeile einfach nach config.threadsafe hinzufügen! Lassen Sie es aktiviert, aber laden Sie Ihre Umgebung immer noch wie erwartet.

config.dependency_loading = true, wenn rails_rake_task $

Verwandte Themen