У меня действительно расстраивающая проблема: Грабли глупы.
Вот как возникает проблема:
$ 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>'
Я искал в Интернете аналогичные / те же ошибки, и люди их имели. Просто никто, кажется, никогда не решит проблему!
Как мне решить эту проблему?
ruby-on-rails
rake
HRÓÐÓLFR
источник
источник
bundle update rake
первым. Тогда я проверил сbundle show rake
. Стоит сказать 0.8.7. Потомrake db:migrate
.gem "rake", "!= 0.9.0"
. Это позволяет избежать испорченного выпуска 0.9.0, но будет обновляться до более нового, когда будет опубликован более свежий выпуск (удаление этого позже не повредит, но и сохранение его не должно повредить).heroku rake db:migrate
и это, похоже, исправило ее. не забудьте добавить и зафиксировать эти изменения в git, прежде чем продолжить;)sudo gem install rake
убедиться, чтоrake
версия, которую я вызывал из командной строки, не была 0.8.7.Я сделал некоторые исследования сразу после моего предыдущего ответа (извините, я должен сделать до этого).
Все проблемы решены с помощью Rake Gem 0.9.2. Я выполнил следующие действия:
gem install rake -v=0.9.2
(у меня был драгоценный камень 0.9.1)gem uninstall rake -v=0.9.1
bundle update
затем
db:migrate
показал предупреждение,WARNING: Global access to Rake DSL methods is deprecated. Please....
Это было решено добавлением следующего в файл Rake.
Я опустил
module ::RakeFileUtils extend Rake::FileUtilsExtend
опцию, предложенную @databyte.Это означает, что Rake Gem 0.9.2 работает отлично!
источник
RakeFile
должно быть раньшеrequire 'rake'
- поймали меня :)gem uninstall rake -v=0.9.2
2)gem install rake -v=0.9.2
Проходя главу 2 Railstutorial (demo_app) и столкнулся с этой проблемой. Я попробовал все остальные ответы, перечисленные здесь, но не смог заставить его работать, пока я не сделал это:
Поместите это в ваш Rakefile выше, для этого требуется 'rake'
через Как исправить проблему неинициализированной константы Rake :: DSL на Heroku?
Я также подтвердил и отправил все файлы в Github и Heroku.
источник
Все, что мне нужно было сделать, это использовать:
У меня уже была версия 0.9.2, просто нужно было установить.
источник
Переустановите грабли, и он должен работать нормально:
Если нет, укажите версию '0.8.7' в вашем Gemfile.
источник
Если не используете Bundler:
Затем выберите удалить 0.9.0.
источник
Если, как и я, вы застряли на рейке 0.8.7 и используете Rails 3.2.x, то в railties добавлено требование для Rake :: DSL
Чтобы решить эту проблему, в начало вашего Rakefile вы должны добавить:
источник
Я решил ту же проблему с помощью следующих шагов:
В Gemfile:
Затем запустил это на консоли:
Затем добавил следующие строки в Rakefile:
источник
Rails 3.1.rc1 был обновлен. Для ваших собственных файлов Rake вы можете добавить это перед вызовом load_tasks.
https://gist.github.com/4cd2bbe68f98f2f0249f
ОБНОВЛЕНИЕ: Также заметил, что здесь уже есть ответ: неопределенный метод 'task' с использованием Rake 0.9.0
источник
У меня была та же проблема, и я должен был использовать рейк на 0.8.7 вместо 0.9.0.
источник
Я пользователь Windows XP и у меня была такая же проблема.
Я ввел gem "rake", "0.8.7" в gemfile, а затем набрал следующее в командном окне.
Это исправило мою проблему.
источник
bundle install --path=vendor/bundle
bundle exec rake db:migrate
Для запуска сервера наберите
bundle exec rails s
. Используйте bundle exec, и вы будете уверены, что используете правильные гемы (необходимая версия) для вашего проекта. Также я бы порекомендовал вам добавитьvendor/bundle
в,.gitignore
если вы используетеgit
и сделать псевдоним дляbundle exec
. Если вы используете,zsh
вы можете следовать этому подходуисточник
То же, что Бранстар выше - спасибо, Бранстар!
Я следовал инструкциям в Running Rails 3 для Windows .
Все работало до части "rake db: migrate", которая дала мне тот же результат, что и оригинальная запись.
Я побежал:
Я снова побежал:
Тогда я смог запустить сервер Ruby on Rails, и все было готово.
Еще раз спасибо, Бранстар :-)
источник
Я чувствую к тебе (mikhailvs), это действительно расстраивает. Я схожу с ума почти один полный день. Я даже удалил Ruby и все зависимые от него файлы и выключил компьютер, но у меня все еще возникла та же проблема.
Что я получил из сообщения об ошибке - проблема с Rake 0.9.2. Кажется, что он не был полностью установлен. Так что пришлось переустанавливать
gem install rake -v=0.9.2
Я не был уверен, установлен ли у меня рейк -v0.9.1. Поэтому, чтобы убедиться, что я в безопасности, я попытался удалить эту старую версию с
gem uninstall rake -v=0.9.1
. Но это показывает мне сообщение об ошибкеИтак, я проверил все каталоги Rake на моем компьютере и обнаружил, что у меня был только Rake 0.9.2. Затем, чтобы проверить, все ли прошло хорошо, я мигрировал с
rake db:migrate
. И это сработало :)Я думаю, что у меня не было Rake 0.9.1, потому что я чисто установил Ruby ( rubyinstaller-1.9.2-p180 - в моей системе Windows 7) и все гемы. Тем временем Rake 0.9.2 не был полностью установлен.
источник
Удаление с помощью "gem uninstall rake" работало для меня, у меня было установлено 2 версии, поэтому я просто сделал чистую переустановку.
"rake db: create" , чтобы убедиться, что база данных существует, а затем "rake db: migrate", чтобы заключить сделку.
источник
У меня была такая же проблема с использованием Rake 0.9.2.2. Я решил эту проблему с помощью комплекта Exec.
источник
Для Rails 2.3 редактирование,
lib/tasks/rspec.rake
как в этом коммите, работает для меня:https://github.com/dchelimsky/rspec-rails/pull/11/files
источник
Установите грабли 0.8.7 и удалите 0.9.2.2
Сейчас использую
я думаю это тебе поможет;)
источник
Бегать
меня устраивает.
источник