Mi piacerebbe eseguire un'attività rake (apn: notifiche: consegna dalla gemma apn_on_rails) da un delayed_job. In altre parole, mi piacerebbe accodare un lavoro in ritardo che chiamerà l'apn: notifications: deliver rake task.Come posso eseguire un'attività di rake da un delayed_job
Ho trovato questo codice http://pastie.org/157390 da http://geminstallthat.wordpress.com/2008/02/25/run-rake-tasks-with-delayedjob-dj/.
ho aggiunto questo codice come DelayedRake.rb alla mia cartella 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
Tutto funziona bene fino a quando le piste delayed_job e si lamenta:
[ERRORE]: attività "APN: notifiche: consegnare "fallito. Non so come creare task "apn: notifications: deliver"
Come faccio a sapere di apn_on_rails? Avevo provato richiedere 'apn_on_rails_tasks' in cima alla DelayedRake che non hanno fatto nulla. Ho anche provato a cambiare la directory delle attività di rake in ./lib/tasks/*.rake
Sono un po 'nuovo a Ruby/Rails. Questo è in esecuzione su 2.3.5 su heroku.
Che ha lavorato grande! Come posso inviare @options all'attività? In questo momento sto chiamando: – rmw
sistema "rastrello # {@ compito}" potevo fare sistema "rastrello # @ {task} # {@} opzioni"? – rmw