Saya mendapatkan kesalahan serupa dengan yang di ini pertanyaan , kecuali tambang yang terjadi pada Heroku :
2011-05-30T09:03:29+00:00 heroku[worker.1]: Starting process with command: `rake jobs:work`
2011-05-30T09:03:30+00:00 app[worker.1]: (in /app)
2011-05-30T09:03:30+00:00 heroku[worker.1]: State changed from starting to up
2011-05-30T09:03:33+00:00 app[worker.1]: rake aborted!
2011-05-30T09:03:33+00:00 app[worker.1]: uninitialized constant Rake::DSL
2011-05-30T09:03:33+00:00 app[worker.1]: /app/.bundle/gems/ruby/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:8:in `<class:TaskLib>'
Jawaban dalam pertanyaan tersebut sepertinya ditentukan gem 'rake', '0.8.7'
karena versi 0.9 menyebabkan masalah.
Ketika saya mencoba menambahkan gem 'rake', '0.8.7'
ke gemfile saya dan mendorong ke Heroku, saya mendapatkan kesalahan ini:
Unresolved dependencies detected; Installing...
You have modified your Gemfile in development but did not check
the resulting snapshot (Gemfile.lock) into version control
You have added to the Gemfile:
* rake (= 0.8.7)
FAILED: http://devcenter.heroku.com/articles/bundler
! Heroku push rejected, failed to install gems via Bundler
error: hooks/pre-receive exited with error code 1
To git@heroku.com:my_app.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to '[email protected]:my_app.git'
Gemfile saya biasanya berfungsi dengan baik di Heroku. Apa yang harus saya lakukan?
Jawaban:
Taruh ini di Rakefile Anda di atas membutuhkan 'rake':
sumber
require
baris ke rakefile (dan berkomitmen ulang dan mendorong kembali ke github dan Heroku) menyelesaikannya. @David, saya menggunakan Windows dengan kerangka RoR dari RailInstaller 1.2.0.Setiap kali Anda mengubah Gemfile Anda, Anda perlu
bundle install
memperbarui file kunci Anda (Gemfile.lock). Kesalahan yang Anda dorong tidak spesifik untuk mengubah versi rake.Perhatikan pesan kesalahan yang Anda terima:
sumber
Saya menyelesaikan ini, akhirnya, setelah banyak penyia-nyiaan. Versi singkat dari apa yang saya lakukan, kehilangan banyak eksperimen, adalah ini:
1) ubah Gemfile untuk menentukan Rake 0.8.7
2) Keluarkan retasan yang sebelumnya saya tambahkan ke Rakefile berdasarkan pertanyaan Stack Overflow Ruby on Rails and Rake problems: Rake: DSL konstan yang tidak diinisialisasi :
Jadi, Rakefile saya sekarang kembali menjadi Rakefile standar untuk aplikasi saya:
3) Ubah Heroku untuk menjalankan aplikasi saya di Ruby 1.9.2:
Dan sekarang tampaknya baik-baik saja - tugas cron terjadwal tetap berjalan.
EDIT: Ini tidak berjalan baik, sekali, kemudian meledakkan lagi lain kali aku mendorong sesuatu! Arrgh. Saya rasa saya memperbaikinya sekarang, dengan tambahan
delayed_job
permata, berdasarkan percakapan Tidak tahu bagaimana membangun tugas pekerjaan: bekerja .Menginstal
delayed_job
sepertinya bukan solusi yang bagus, tetapi TELAH berhasil, dan saya mungkin ingin menggunakannya kapan-kapan, terutama dengan tugas cron sekali per jam Heroku (yang tidak cukup sering - ada hal-hal yang saya ' Anda mungkin ingin berlari setiap lima menit). Setelah saya menginstaldelayed_job
permata saya harus melakukan pengaturan untuk itu, jika tidak Heroku mengeluh tentangdelayed_jobs
tabel yang hilang :sumber
Saya memiliki aplikasi Rails 3.0.11, yang menentukan versi rake 0.8.7 di Gemfile untuk mengatasi masalah Rake :: DSL versi 0.9.2.
Setelah saya mengonversi aplikasi ke Rails 3.2.0 (tumpukan Heroku Cedar), saya mengalami masalah dengan pekerja (tugas menyapu) yang mogok. Saya mengubah "gem 'rake', '0.8.7'" menjadi "gem 'rake'", yang menggabungkan rake versi 0.9.2.2. Pekerja berhenti mogok dengan versi baru.
sumber
Masalah Anda disebabkan oleh tidak menghapus
Gemfile.lock
file dan tidak spesifik untuk Heroku. MenghapusGemfile.lock
seharusnya memperbaiki masalah ini, tetapi akan mengarahkan Anda langsung ke masalah lain:Sayangnya, saya belum menemukan solusi untuk masalah itu, karena menurunkan versi Rake ke 0.8.7 sepertinya tidak berfungsi di sini. Jika orang lain memiliki jawaban, saya akan sangat menghargainya.
sumber