Проблема с рейком - PullRequest
       4

Проблема с рейком

0 голосов
/ 09 августа 2011

У меня есть проект ruby ​​on rails, и я хочу сделать db: migrate.Но единственный вариант рейка, который я получил, это «Перезагрузить задачи рейка», поэтому, когда я нажимаю на него, он выдает мне эту ошибку.

[rake --tasks] rake aborted!
uninitialized constant Rake::DSL
/usr/lib/ruby/1.8/rake.rb:2503:in `const_missing'
/var/lib/gems/1.8/gems/rake-0.9.2/lib/rake/tasklib.rb:8
/var/lib/gems/1.8/gems/rdoc-3.9.1/lib/rdoc/task.rb:37:in `require'
/var/lib/gems/1.8/gems/rdoc-3.9.1/lib/rdoc/task.rb:37
/var/lib/gems/1.8/gems/railties-3.0.9/lib/rails/tasks/documentation.rake:2:in `require'
/var/lib/gems/1.8/gems/railties-3.0.9/lib/rails/tasks/documentation.rake:2
/var/lib/gems/1.8/gems/railties-3.0.9/lib/rails/tasks.rb:15:in `load'
/var/lib/gems/1.8/gems/railties-3.0.9/lib/rails/tasks.rb:15
/var/lib/gems/1.8/gems/railties-3.0.9/lib/rails/tasks.rb:6:in `each'
/var/lib/gems/1.8/gems/railties-3.0.9/lib/rails/tasks.rb:6
/var/lib/gems/1.8/gems/railties-3.0.9/lib/rails/application.rb:215:in `require'
/var/lib/gems/1.8/gems/railties-3.0.9/lib/rails/application.rb:215:in `initialize_tasks'
/var/lib/gems/1.8/gems/railties-3.0.9/lib/rails/application.rb:139:in `load_tasks'
/var/lib/gems/1.8/gems/railties-3.0.9/lib/rails/application.rb:77:in `send'
/var/lib/gems/1.8/gems/railties-3.0.9/lib/rails/application.rb:77:in `method_missing'
/home/laptop/RubymineProjects/auth/Rakefile:7
/usr/lib/ruby/1.8/rake.rb:2383:in `load'
/usr/lib/ruby/1.8/rake.rb:2383:in `raw_load_rakefile'
/usr/lib/ruby/1.8/rake.rb:2017:in `load_rakefile'
/usr/lib/ruby/1.8/rake.rb:2068:in `standard_exception_handling'
/usr/lib/ruby/1.8/rake.rb:2016:in `load_rakefile'
/usr/lib/ruby/1.8/rake.rb:2000:in `run'
/usr/lib/ruby/1.8/rake.rb:2068:in `standard_exception_handling'
/usr/lib/ruby/1.8/rake.rb:1998:in `run'
/usr/bin/rake:28

Спасибо, Майкл.

Ответы [ 2 ]

3 голосов
/ 09 августа 2011

Это распространенная проблема. Просто выполните следующие действия:

gem install rake -v=0.9.2 (Если у вас есть драгоценный камень 0.9.1)

gem uninstall rake -v=0.9.1 (Если у вас есть драгоценный камень 0.9.1)

Глядя на ваши журналы, я вижу, что у вас есть rake-0.9.2, поэтому я думаю, что вы можете пропустить 2 шага выше.

bundle update

Затем, выполнение db:migrate выдаст вам такую ​​ошибку: WARNING: Global access to Rake DSL methods is deprecated

Чтобы решить эту проблему, вам просто нужно добавить эти две строки в верхнюю часть вашего Rakefile

require 'rake/dsl_definition'

include Rake::DSL

После этого все должно прекрасно работать!

1 голос
/ 03 октября 2011

Вы должны специально добавить версию Rake> = 0.9.1 в свой Gemfile! В некоторых версиях Rails 3 была ошибка, из-за которой вы могли видеть странные ошибки, подобные этой, при использовании более старой версии Rake.

В вашем Gemfile:

gem 'rake' , '>= 0.9.2'

Я бы также порекомендовал вам создать новый набор gemset специально для вашего приложения, например,

rvm gemset create yourproject
rvm gemset use yourproject

или

rvm gemset use yourproject --default

для нового набора гемов вам, возможно, придется добавить «gem install rake» вручную, а затем запустить «комплектную установку»

Использование отдельного набора гемов в дополнение к использованию вашего Gemfile - лучший способ сохранить ваши версии гемов в вашем проекте стабильными и отделенными от других проектов.

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