gpt4 book ai didi

ruby-on-rails - 如何从 delay_job 运行 rake 任务

转载 作者:行者123 更新时间:2023-12-04 11:15:47 24 4
gpt4 key购买 nike

我想从delayed_job 运行一个rake 任务(apn:notifications:deliver from the apn_on_rails gem)。换句话说,我想排队一个延迟的工作,它将调用 apn:notifications:deliver 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

一切运行正常,直到 delay_job 运行并提示:

[错误]:任务“apn:notifications:deliver”失败。不知道如何构建任务 'apn:notifications:deliver'

我如何让它知道 apn_on_rails?我试过在 DelayedRake 顶部使用 require 'apn_on_rails_tasks',但它没有做任何事情。我还尝试将 rake 任务的目录更改为 ./lib/tasks/*.rake

我对 Ruby/Rails 有点陌生。这是在 heroku 上的 2.3.5 上运行的。

最佳答案

为什么不只做一个系统调用?

system "rake apn:notifications:deliver"

关于ruby-on-rails - 如何从 delay_job 运行 rake 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4183333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com