Я решил это, наконец, после долгих раздумий.Короткая версия того, что я сделал, пропустив множество экспериментов, была такова:
1) измените Gemfile, указав Rake 0.8.7
#in Gemfile
gem "rake", "0.8.7"
2) Уберите взлом, которыйРанее я добавил в Rakefile на основе вопроса переполнения стека Проблемы с Ruby on Rails и Rake: неинициализированная константа Rake :: DSL :
Итак, мой Rakefile теперь вернулсячтобы быть стандартным Rakefile для моего приложения:
# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
require File.expand_path('../config/application', __FILE__)
require 'rake'
MyApp::Application.load_tasks
3) Измените Heroku для запуска моего приложения на Ruby 1.9.2:
heroku stack:migrate bamboo-mri-1.9.2 --app myapp
git push heroku master
И теперь все в порядке - запланированный cronзадача в любом случае выполняется.
РЕДАКТИРОВАТЬ: Это сделал работает нормально, один раз, а затем взорвался снова в следующий раз, когда я что-то нажал!Arrgh.Я думаю, что я исправил это сейчас, с добавлением драгоценного камня delayed_job
, основанного на разговоре Не знаю, как создавать задания задачи: работа .
Установка delayed_job
не кажется отличным решением, но оно сработало, и я, возможно, захочу использовать его когда-нибудь, особенно, когда у Хероку есть раз в час задание cron (которое просто не достаточно часто - тамвещи, которые я, вероятно, хочу запускать каждые пять минут).После того, как я установил гем delayed_job
, мне пришлось выполнить его настройку, в противном случае Heroku жалуется на отсутствующую таблицу delayed_jobs
:
#add to gemfile
gem 'delayed_job'
#at command line
bundle install
rails g delayed_job
rake db:migrate
git add -A
git commit -a -m "added delayed_job gem"
git push
heroku rake db:migrate --app myapp
heroku restart --app myapp