我想從delayed_job運行rake任務(apn:notifications:從apn_on_rails gem提供)。換句話說,我想入隊一個延遲的工作,它會調用apn:notifications:傳遞rake任務。我如何從delayed_job運行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:deliver'
如何讓它知道apn_on_rails?我曾嘗試在DelayedRake的頂部請求'apn_on_rails_tasks',它沒有做任何事情。我也嘗試將rake任務的目錄更改爲./lib/tasks/*.rake
我對Ruby/Rails有點新鮮。這在heroku上運行在2.3.5上。
這很棒!我將如何發送@options到任務?現在我打電話: – rmw 2010-11-15 16:34:24
系統「耙#{@任務}」我可以做系統「耙#{@任務}#{@選項}」? – rmw 2010-11-15 16:34:59