Я только что обновил Rake до последней версии ( 0.9.0.beta.4
), и rake
команда выдает следующее сообщение об ошибке:
rake aborted!
undefined method `task' for #<Anelis::Application:0x9223b6c>
Вот след:
undefined method `task' for #<Anelis::Application:0x97ef80c>
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/application.rb:214:in `initialize_tasks'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/application.rb:139:in `load_tasks'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/application.rb:77:in `method_missing'
/home/amokrane/Documents/prog/web/learning_rails/anelis/Rakefile:7:in `load_string'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/environment.rb:28:in `eval'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/environment.rb:28:in `load_string'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/environment.rb:16:in `load_rakefile'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:495:in `raw_load_rakefile'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:78:in `block in load_rakefile'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:129:in `standard_exception_handling'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:77:in `load_rakefile'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:61:in `block in run'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:129:in `standard_exception_handling'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:59:in `run'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/bin/rake:31:in `<top (required)>'
/usr/local/rvm/gems/ruby-1.9.2-p136/bin/rake:19:in `load'
/usr/local/rvm/gems/ruby-1.9.2-p136/bin/rake:19:in `<main>'
Кто-нибудь испытывал такую же проблему? Что могло быть не так? Обратите внимание, что я работаю Rails 3.0.3
, вы также можете быть заинтересованы в содержании моего Gemfile:
source 'http://rubygems.org'
gem 'rails', '3.0.3'
gem 'sqlite3-ruby', :require => 'sqlite3'
gem 'mysql2'
gem 'legacy_data'
gem 'resources_controller', :git => 'git://github.com/ianwhite/resources_controller'
gem 'will_paginate', '3.0.pre' # pagination
gem 'jquery-rails', '>= 0.2.6'
gem "rmagick" # sudo aptitude install libmagick9-dev
gem "paperclip", "~> 2.3"
gem "nested_form", :git => "git://github.com/madebydna/nested_form.git"
gem "meta_search"
gem "hirb"
gem "devise"
gem "rails_admin", :git => "git://github.com/sferik/rails_admin.git"
Как я могу решить эту проблему?
ruby-on-rails-3
rake
Амокране Чентир
источник
источник
Ответы:
У меня было такое же исключение при запуске версии Rake 0.9.0.beta.4. Похоже, новый
Rake::DSL
не загружается должным образом.Поэтому я добавил в свой Rakefile следующий код:
Таким образом, я снова смог запускать свои задачи Rake.
Я знаю, что это не изящное решение. Но если вам нужно использовать
--pre
версию Rake, можно использовать этот быстрый способ.источник
require 'rake'
иMyApp::Application.load_tasks
Как объясняется в ответе Мордаросо , в Rake 0.9.0 есть проблема. Чтобы этого избежать, необходимо временно понизить рейтинг рейка:
run:
gem uninstall rake -v 0.9
(добавьте,sudo
если вы не используетеrvm
)добавьте в свой Gemfile:
gem 'rake', '~> 0.8.7'
а затем запустить:
bundle update
Вы можете пропустить первый шаг, но тогда вы должны работать ,
rake
используяbundle exec
, например:В противном случае вы получите следующую ошибку.
Обновить
Как заметил Алекс Чаффи в комментарии к ответу Пабло Кантеро , вам может потребоваться сделать следующее, чтобы удалить Rake, если вы все еще видите проблему
Также попробуйте решение, предложенное в ответе герцога .
источник
bundle exec rake
чтобы использовать рабочую версию из комплекта.bundle exec rake
необходим только в том случае, если rake-0.9 не был удален. В этом случае выдается сообщение об ошибкеrake aborted! You have already activated rake 0.9.0, but your Gemfile requires rake 0.8.7. Consider using bundle exec.
gem 'rake', '~> 0.8.7'
Примечание: это было исправлено в Rails 3.0.8.
Новая версия Rake больше не помещает свои команды DSL (task, file, desc, import и т. Д.) В корень пространства имен Object (размещение их в Object означает, что у каждого объекта есть команда задачи, не очень хорошая. DSL команды доступны путем подмешивания в
Rake::DSL module
любой модуль, нуждающийся в командах.Пока Ruby on Rails не будет обновлен для работы с Rake 0.9.x, добавьте в свой проект Rakefile после "require rake" и перед вызовом
Application.load_tasks
:источник
Я создал проблему для rails_admin по поводу этой же ошибки.
Ответ :
Проблема в Rake (0.9.0), анонсировали DHH в Twitter.
источник
gem uninstall rake --version 0.9.0 && gem install rake --version 0.8.7
(вторая установка - вернуть исполняемый файл).rvm use @global && gem uninstall rake --version 0.9.0 && rvm use @ && gem uninstall rake --version 0.9.0 && gem install rake --version 0.8.7
Это было исправлено в Ruby on Rails 3.0.8.rc1, который должен быть выпущен через несколько дней.
источник
Только что был выпущен Rake 0.9.1, который отменяет изменение, вызвавшее эту ошибку, но добавляет предупреждение об устаревании: https://github.com/jimweirich/rake/commit/44aec3ceac085740bce0c385bccd65fc4d1d911c
источник
Я использую rvm, но удаление мне не помогает. Итак, я вручную удаляю все файлы 0.9 из
.rvm/gems/ruby@global
каталога, и все становится как прежде!источник
без удаления Rake 0.9.x добавьте
в свой Gemfile и просто введите
источник