ruby-on-rails - 参数数量错误 - resque
问题描述
我有一份工作 create_site_map.rb 如下所示:
class CreateSiteMap
@queue = :create_site_map
def self.perform(slct_common_path, http_host, site_id)
end
end
还有一个 rake 文件:
require "resque/tasks"
require "resque/scheduler/tasks"
namespace :create_site_map do
desc "Create site map"
task create_site_map: :environment do
Resque.enqueue CreateSiteMap, 0, "a", 1071
end
end
当我在 Termial 中运行 resque 时:
Resque.enqueue_to(:high, CreateSiteMap, 0, "abc", 1071)
或者:
Resque.enqueue(CreateSiteMap)
它的显示错误是这样的:wrong number of arguments (given 0, expected 3)
请帮助我如何在 resque 中传递参数?
解决方案
通过查看这里的代码
https://github.com/resque/resque/blob/master/lib/resque.rb#L386
看起来,如果你正在使用enqueue
,你应该传递类名和参数
# https://github.com/resque/resque/blob/master/lib/resque.rb#L402
def enqueue(klass, *args)
enqueue_to(queue_from_class(klass), klass, *args)
end
或者,如果您正在使用enqueue_to
,
- 队列 -> 队列名称作为字符串
- 类->类
- *args -> 参数
# https://github.com/resque/resque/blob/master/lib/resque.rb#L415
def enqueue_to(queue, klass, *args)
所以,在你的情况下,
# using enqueue
Resque.enqueue(CreateSiteMap, 0, "abc", 1071)
# using enqueue_to
Resque.enqueue_to('high', CreateSiteMap, 0, "abc", 1071)
注意: enqueue_to 中的队列是一个字符串
推荐阅读
- firebase - Firebase 托管重定向到子文件夹
- python - Pygame“定时事件”功能
- c# - Visual Studio 2017 中没有扩展菜单
- javascript - 如何更新对象数组中的对象字段?
- r - 有没有办法将饼图的标准颜色替换为图片?
- azure - PowerBi:流数据加密(REST API)
- javascript - jquery-ui 在图像地图上可拖动导致 android 上 Firefox 中可点击区域的问题
- c++ - 为什么我的 long long int 算术会以这种方式表现?
- python - 我在 Pandas 的 Dataframe 中添加了一行 3 次。但是,只添加了最后一行
- regex - 正则表达式查找重复阶段