2010-02-05 5 views
6

Я пытаюсь засеять мою базу данных стандартным методом db/seeds.rb. Это отлично работает на моей машине развития, но на моем сервере, я получаю:db: seed not loading models

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

Но когда я проверить в консоли, модель не существует:

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

Что я забыть?

+0

Обратите внимание, что он работает нормально в среде разработки на моем сервере производства. – Eli

+0

Как выглядит ваш seeds.rb? –

+0

Я исправил его. Я отключил 'threadsafe!'. – Eli

ответ

6

Его можно устранить, отключив threadsafe! в конфигурации окружающей среды.

2

Я просто столкнулся с хорошим подходом к этой проблеме in this article. Я подведу итог, чтобы люди могли (надеюсь) найти это быстрее.

Идея заключается в том, чтобы отключить поточно в производственной среде, первый путем редактирования конфигурации/сред/production.rb:

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

Вы установите THREADSAFE = выкл при выполнении задач рек.

10

В комментарии к блогу Написал связан выше, и здесь снова: http://www.builtfromsource.com/2011/02/09/getting-rake-dbseed-and-config-threadsafe-to-play-nice/

Брюс Адамс упоминает, что можно назвать:

config.threadsafe! если только $ rails_rake_task

включить только потокобезопасность, если не работает задача рейка.

Но поскольку проблема в том, что threadafe отключает dependency_loading, вы можете просто добавить эту строку после config.threadsafe! чтобы оставить его включенным, но все равно загружайте среду, как вы ожидаете.

config.dependency_loading = верно, если $ rails_rake_task