rake db: перенос завершается с ошибкой: «удаление прервано! неопределенный метод `устарел» для #»

#ruby-on-rails #rake

#ruby-on-rails #rake

Вопрос:

Провел некоторое время без программирования на rails, и теперь, когда я «вернулся», все пошло не так. Я установил ruby 1.9.2-p0 и придерживался rails 3.0.1. Обновлены все драгоценные камни, и пакет успешно запускается.Создал новое приложение rails и создал миграцию, но при запуске

 rake db:migrate
  

Я получаю:

 rake aborted!
undefined method `deprecate' for #<Rake::Application:0x1e0c6c0>
C:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/rdoctask.rb:4:in `<top (required)>'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.1/lib/rails/tasks/documentation.rake:1:in `require'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.1/lib/rails/tasks/documentation.rake:1:in `<top (required)>'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.1/lib/rails/tasks.rb:15:in `load'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.1/lib/rails/tasks.rb:15:in `block in <top (required)>'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.1/lib/rails/tasks.rb:6:in `each'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.1/lib/rails/tasks.rb:6:in `<top (required)>'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.1/lib/rails/application.rb:213:in `require'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.1/lib/rails/application.rb:213:in `initialize_tasks'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.1/lib/rails/application.rb:139:in `load_tasks'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.1/lib/rails/application.rb:77:in `method_missing'
D:/sites/hebrew_learning/Rakefile:7:in `<top (required)>'
C:/Ruby192/lib/ruby/1.9.1/rake.rb:2373:in `load'
C:/Ruby192/lib/ruby/1.9.1/rake.rb:2373:in `raw_load_rakefile'
C:/Ruby192/lib/ruby/1.9.1/rake.rb:2007:in `block in load_rakefile'
C:/Ruby192/lib/ruby/1.9.1/rake.rb:2058:in `standard_exception_handling'
C:/Ruby192/lib/ruby/1.9.1/rake.rb:2006:in `load_rakefile'
C:/Ruby192/lib/ruby/1.9.1/rake.rb:1991:in `run'
C:/Ruby192/bin/rake:31:in `<main>'
  

Я действительно здесь потерялся, поэтому любой совет будет высоко оценен

Редактировать:

После запуска

 bundle exec rake
  

Я получаю:

 WARNING: 'require 'rake/rdoctask'' is deprecated.  Please use 'require 'rdoc/task' (in RDoc 2.4.2 )' instead.
at C:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/rdoctask.rb
WARNING: Global access to Rake DSL methods is deprecated.  Please include
...  Rake::DSL into classes and modules which use the Rake DSL methods.
WARNING: DSL method HebrewLearning::Application#task called at C:/Ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.1/lib/rails/application.rb:214:in `initialize_tasks'
You have 1 pending migrations:
20111104081644 CreateUsers
Run "rake db:migrate" to update your database then try again.
  

Комментарии:

1. Можете ли вы указать код вашей миграции?

2. Вы имеете в виду файл XXXXXXXXXX_migration_name.rb?

3. @jdeseno Я запускаю bundle exec rake db: migrate, и это сработало. После этого я удаляю свой rake 0.9.2.2, затем переустанавливаю, и теперь он работает с обычным «rake db: migrate»… но я понятия не имею, почему!

Ответ №1:

Если вы используете rails 3.0.1, вы можете попробовать это в своем gemfile :

 gem 'rake' , '0.8.7'
  

или попробуйте перейти на 3.0.9, изменив свой gemfile.

После этого запустите :

 bundle update
  

Пока

Комментарии:

1. Я поддерживаю это.. Я столкнулся с этим с более ранними версиями rails 3. Переключение rake на версию ‘0.8.7’ должно устранить проблему.