Проблемы с Ruby on Rails и Rake: неинициализированная константа Rake :: DSL - PullRequest
190 голосов
/ 22 мая 2011

У меня действительно неприятная проблема: Рейк тупой.

Вот как возникает проблема:

$ rails new test_app
$ rails generate scaffold new_scaffold field1:string field2:text

Оба из них работают просто отлично, но потом, когда я делаю это,

$ rake db:migrate

Я получаю следующую ошибку.

(in /home/mikhail/test_app)
rake aborted!
uninitialized constant Rake::DSL
/usr/lib/ruby/1.9.1/rake.rb:2482:in `const_missing'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:8:in `<class:TaskLib>'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:6:in `<module:Rake>'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:3:in `<top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/rdoctask.rb:20:in `require'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/rdoctask.rb:20:in `<top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks/documentation.rake:1:in `require'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks/documentation.rake:1:in `<top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:15:in `load'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:15:in `block in <top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:6:in `each'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:6:in `<top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:214:in `require'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:214:in `initialize_tasks'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:139:in `load_tasks'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:77:in `method_missing'
/home/mikhail/test_app/Rakefile:7:in `<top (required)>'
/usr/lib/ruby/1.9.1/rake.rb:2373:in `load'
/usr/lib/ruby/1.9.1/rake.rb:2373:in `raw_load_rakefile'
/usr/lib/ruby/1.9.1/rake.rb:2007:in `block in load_rakefile'
/usr/lib/ruby/1.9.1/rake.rb:2058:in `standard_exception_handling'
/usr/lib/ruby/1.9.1/rake.rb:2006:in `load_rakefile'
/usr/lib/ruby/1.9.1/rake.rb:1991:in `run'
/usr/bin/rake:31:in `<main>'

Я искал в интернете похожие / те же ошибки, и люди их имели. Просто никто, кажется, никогда не решит проблему!

Как мне исправить эту проблему?

Ответы [ 19 ]

4 голосов
/ 24 мая 2011

Я пользователь Windows XP и у меня была такая же проблема.

Я ввел gem "rake", "0.8.7" в gemfile, а затем набрал в командной строке следующее:

bundle update rake

Это исправило мою проблему.

4 голосов
/ 22 мая 2011

У меня возникла та же проблема, и мне пришлось использовать камень с рейком 0.8.7 вместо 0.9.0.

3 голосов
/ 05 июля 2011

То же, что и Branstar выше - спасибо Branstar!

  • ОС: Windows Vista
  • Уровень: совершенно новый для Ruby on Rails
  • У меня уже был Ruby 1.9.2 установлено

Я следовал инструкциям в Запуск Rails 3 в Windows .

Все работало до "rake db: migrate"часть, которая дала мне тот же вывод, что и исходное сообщение.

Я побежал:

gem install rake

Я побежал снова:

rake db:migrate

Затем я смог запуститьРубин на сервере Rails и все было на месте.

Еще раз спасибо, Бранстар: -)

2 голосов
/ 26 сентября 2011

Удаление с помощью "gem uninstall rake" работало для меня, у меня было установлено 2 версии, поэтому я просто сделал чистую переустановку.

"rake db: create" , чтобы убедиться, что база данных существует, а затем "rake db: migrate" , чтобы заключить сделку.

2 голосов
/ 04 июля 2012

У меня была такая же проблема при использовании Rake 0.9.2.2. Я решил эту проблему с помощью комплекта Exec.

2 голосов
/ 17 июля 2011

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

Что я получил из сообщения об ошибке - это проблема с Rake 0.9.2. Похоже, он не был полностью установлен. Поэтому пришлось переустановить gem install rake -v=0.9.2

Я не был уверен, установлен ли у меня rake -v0.9.1. Поэтому, чтобы убедиться, что я в безопасности, я попытался удалить эту старую версию с gem uninstall rake -v=0.9.1. Но это показывает мне сообщение об ошибке

ERROR:  While executing gem ... (Gem::InstallError)
    cannot uninstall, check `gem list -d rake`

ОК, поэтому я проверил все каталоги Rake на моем компьютере и обнаружил, что у меня был только Rake 0.9.2. Затем, чтобы проверить, все ли прошло нормально, я мигрировал с rake db:migrate. И это сработало:)

Я думаю, что у меня не было Rake 0.9.1, потому что я чисто установил Ruby ( rubyinstaller-1.9.2-p180 - в моей системе Windows 7) и все гемы. В то же время Rake 0.9.2 не был полностью установлен.

0 голосов
/ 25 февраля 2013

Установите грабли 0.8.7 и удалите 0.9.2.2

$ gem install rake -v 0.8.7
$ gem uninstall rake -v 0.9.2.2

Теперь используйте

$ bundle exec rake db:migrate

я думаю, это поможет тебе ;)

0 голосов
/ 18 февраля 2014

Запуск

bundle exec rake db:migrate

у меня работает.

0 голосов
/ 24 января 2013

Для Rails 2.3 редактирование lib/tasks/rspec.rake, как в этом коммите работало для меня:

https://github.com/dchelimsky/rspec-rails/pull/11/files

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...