Saya baru saja memperbarui Rake ke versi terbaru ( 0.9.0.beta.4
) dan rake
perintah berakhir dengan pesan kesalahan berikut:
rake aborted!
undefined method `task' for #<Anelis::Application:0x9223b6c>
Inilah jejaknya:
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>'
Adakah yang mengalami masalah yang sama? Apa yang mungkin salah? Perhatikan bahwa saya sedang menjalankan Rails 3.0.3
, Anda mungkin juga tertarik dengan konten Gemfile saya:
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"
Bagaimana saya bisa memperbaiki masalah ini?
ruby-on-rails-3
rake
Amokrane Chentir
sumber
sumber
Jawaban:
Saya memiliki pengecualian yang sama ketika menjalankan versi Rake 0.9.0.beta.4. Sepertinya yang baru
Rake::DSL
tidak dimuat dengan benar.Jadi saya menambahkan kode berikut ke Rakefile saya:
Dengan begitu saya bisa menjalankan tugas Rake saya lagi.
Saya tahu ini bukan solusi yang elegan. Tetapi jika Anda harus menggunakan
--pre
versi Rake, boleh saja menggunakan peretas cepat ini.sumber
require 'rake'
danMyApp::Application.load_tasks
Seperti yang dijelaskan dalam jawaban mordaroso , ada masalah di Rake 0.9.0. Anda perlu menurunkan versi Rake sementara untuk menghindarinya:
jalankan:
gem uninstall rake -v 0.9
(tambahkansudo
kecuali Anda menggunakanrvm
)tambahkan ke Gemfile Anda:
gem 'rake', '~> 0.8.7'
lalu jalankan:
bundle update
Anda dapat melewati langkah pertama, tetapi kemudian Anda harus menjalankan
rake
menggunakanbundle exec
, misalnya:Kalau tidak, Anda mendapatkan kesalahan berikut.
Memperbarui
Seperti Alex Chaffee perhatikan dalam komentar untuk jawaban Pablo Cantero , bahwa Anda mungkin perlu melakukan yang berikut untuk menghapus Rake jika Anda masih melihat masalahnya
Coba juga solusi yang disarankan dalam jawaban Duke .
sumber
bundle exec rake
untuk menggunakan versi paket yang berfungsi.bundle exec rake
diperlukan hanya jika rake-0.9 tidak dihapus. Dalam hal ini seseorang mendapat pesan kesalahanrake 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'
Catatan: Ini baru saja diperbaiki di Rails 3.0.8
Versi baru Rake tidak menempatkan perintah DSL-nya (tugas, file, desc, impor, dll) di root namespace Object lagi (menempatkan mereka di Object berarti setiap objek memiliki perintah tugas, tidak terlalu bagus. DSL perintah tersedia dengan mencampur
Rake::DSL module
ke dalam modul apa pun yang membutuhkan perintah.Sampai Ruby on Rails diperbarui untuk bekerja dengan Rake 0.9.x, masukkan yang berikut ini di proyek Anda Rakefile setelah "memerlukan rake" dan sebelum panggilan ke
Application.load_tasks
:sumber
Saya telah membuat masalah untuk rails_admin tentang kesalahan yang sama ini.
Jawabannya :
Ini masalah di Rake (0.9.0), diumumkan oleh DHH di Twitter.
sumber
gem uninstall rake --version 0.9.0 && gem install rake --version 0.8.7
(instalasi kedua adalah untuk mendapatkan kembali dieksekusi).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
Ini telah diperbaiki di Ruby on Rails 3.0.8.rc1 yang harus dirilis dalam waktu beberapa hari.
sumber
Rake 0.9.1 baru saja dirilis yang membalikkan perubahan yang menyebabkan kesalahan ini tetapi menambahkan peringatan penghentian: https://github.com/jimweirich/rake/commit/44aec3ceac085740bce0c385bccd65fc4d1d911c
sumber
Saya menggunakan rvm, tetapi menghapus instalan tidak membantu saya. Jadi saya secara manual menghapus semua file 0,9 dari
.rvm/gems/ruby@global
direktori dan semuanya menjadi seperti sebelumnya!sumber
tanpa perlu menghapus Rake 0.9.x, tambahkan
ke Gemfile Anda dan ketik saja
sumber