Я бы хотел запустить задачу rake (apn: уведомления: доставить из гема apn_on_rails) из delayed_job.Другими словами, я бы хотел поставить в очередь отложенное задание, которое вызовет задачу apn: notifications: delivery rake.
Я нашел этот код http://pastie.org/157390 из http://geminstallthat.wordpress.com/2008/02/25/run-rake-tasks-with-delayedjob-dj/.
Я добавил этот код как DelayedRake.rb в мой каталог lib:
require 'rake'
require 'fileutils'
class DelayedRake
def initialize(task, options = {})
@task = task
@options = options
end
##
# Called by Delayed::Job.
def perform
FileUtils.cd RAILS_ROOT
@rake = Rake::Application.new
Rake.application = @rake
### Load all the Rake Tasks.
Dir[ "./lib/tasks/**/*.rake" ].each { |ext| load ext }
@options.stringify_keys!.each do |key, value|
ENV[key] = value
end
begin
@rake[@task].invoke
rescue => e
RAILS_DEFAULT_LOGGER.error "[ERROR]: task \"#{@task}\" failed. #{e}"
end
end
end
Все работает нормально, пока не запускается delayed_job, и он жалуется:
[ОШИБКА]: задача "apn: уведомления: доставить" не удалось.Не знаю, как создать задачу 'apn: notifications: delivery'
Как мне сообщить ей о apn_on_rails?Я пытался потребовать 'apn_on_rails_tasks' в верхней части DelayedRake, который ничего не делал.Я также попытался изменить каталог задач rake на ./lib/tasks/*.rake
Я немного новичок в Ruby / Rails.Это работает на 2.3.5 на героку.