2008-10-20 3 views
2

У меня есть незавершенный проект, который разработчик просто не закончил и не оставил никакой документации об установке. Я скачал каталог продукции для того чтобы мои окна машины (работает InstantRails 2), я создал базы данных в соответствии с требованиями в database.yml и я попытался запустить rake:db:migrate --trace, но я получаю следующее сообщение об ошибке:Rake db: migration aborted

(in D:/projects/broke2) 
** Invoke db:migrate (first_time) 
** Invoke environment (first_time) 
** Execute environment 
** Execute db:migrate 
rake aborted! 
uninitialized constant Admin 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activesupport-2.1.1/lib/active_support/dependencies.rb:279:in `load_missing_constant' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activesupport-2.1.1/lib/active_support/dependencies.rb:468:in `const_missing' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activesupport-2.1.1/lib/active_support/dependencies.rb:480:in `const_missing' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activesupport-2.1.1/lib/active_support/inflector.rb:285:in `constantize' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activesupport-2.1.1/lib/active_support/inflector.rb:284:in `each' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activesupport-2.1.1/lib/active_support/inflector.rb:284:in `constantize' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activesupport-2.1.1/lib/active_support/core_ext/string/inflections.rb:143:in `constantize' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/migration.rb:481:in `migrations' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/connection_adapters/mysql_adapter.rb:15:in `inject' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/migration.rb:465:in `each' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/migration.rb:465:in `inject' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/migration.rb:465:in `migrations' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/migration.rb:431:in `migrate' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/migration.rb:373:in `up' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.1/lib/active_record/migration.rb:356:in `migrate' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rails-2.1.1/lib/tasks/databases.rake:99 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:617:in `call' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:617:in `execute' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:612:in `each' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:612:in `execute' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:578:in `invoke_with_call_chain' 
D:/InstantRails-2.0-win/ruby/lib/ruby/1.8/monitor.rb:242:in `synchronize' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:571:in `invoke_with_call_chain' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:564:in `invoke' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:2019:in `invoke_task' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1997:in `top_level' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1997:in `each' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1997:in `top_level' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:2036:in `standard_exception_handling' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1991:in `top_level' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1970:in `run' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:2036:in `standard_exception_handling' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1967:in `run' 
D:/InstantRails-2.0-win/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/bin/rake:31 
D:/InstantRails-2.0-win/ruby/bin/rake:19:in `load' 
D:/InstantRails-2.0-win/ruby/bin/rake:19 

Я обычный разработчик Rails (это не мое первое приложение), но я никогда не видел эту ошибку, и у меня нет подсказки, с чего начать отлаживать.

ответ

2

Иногда Rails генерирует эту ошибку, если есть синтаксическая ошибка, определяемая администратором.

Попробуйте найти admin.rb и убедитесь, что он анализирует.

Кроме того, вы можете попробовать выполнить миграцию по одному (rake db:migrate VERSION=1 и т. Д.), Чтобы узнать, поможет ли это отслеживать, какая миграция вызывает ошибку, или если это проблема, просто загружая приложение.

1

Я бы сказал, что ваша проблема связана с вашей проблемой миграции в uninitialized constant Admin. Вы пытались найти, где Admin инициализирован, и в том числе путь к нему, где бы вы его ни использовали? (Также, в чем заключается содержимое задачи рейка?)

0

Это не указывает мне, где у меня есть постоянная администратора. Есть способ проверить, по крайней мере, где я должен смотреть? мои модели, контроллеры и т. д.?

rake db: migrate VERSION = 1, дает мне ошибку уже. Как я уже сказал, я просто пытаюсь закончить проект, незавершенный другим парнем.

Как я могу сделать файл миграции для каждого файла?

С уважением,

Виктор

+0

Сделайте резервную копию своей базы данных, затем оставьте ее полностью и попробуйте перейти на VERSION = 1. Затем VERSION = 2 и т. Д. Константа администратора, вероятно, является моделью. Есть ли файл в вашем приложении под названием admin.rb? – 2008-10-20 20:11:49

+0

Странно. У меня есть 001_admin.rb, но нет модели администратора. в моем 001_admin.rb он пытается написать в классе по умолчанию .. смысл? – 2008-10-20 20:29:24

2

Я подозреваю, что у вас была миграция, которая создала таблицу и добавил некоторые данные с помощью модели. Позже в проекте модель была переименована или удалена (как и таблица?). Поскольку модель больше не существовала, миграции не удалось запустить, но никто не заметил, поскольку к этому моменту они выполняли только несколько миграций за раз, а не из чистой базы данных.

Урок здесь ... если вы переименуете модели или таблицы (или обновите их проверки и поля), тогда проверьте, что ваши миграции запускаются с нуля, а также в текущей производственной версии.

0

Вы можете попытаться загрузить схему сразу вместо выполнения каждой миграции:

грабли DB: схемы: нагрузка

Как RichH сказал, что, возможно, произошли изменения в схеме не отражены в миграции