【问题标题】:rails 4 - active job - wrong number of arguments (0 for 1) even though im passing 1 argumentrails 4 - 活动作业 - 参数数量错误(0 代表 1),即使我传递了 1 个参数
【发布时间】:2017-12-15 19:29:55
【问题描述】:

这里我称之为工作-传递过程:

ProcedureDayAfterJob.set(wait_until: reminder_for_jo).perform_later(procedure)

这是工作本身 - 以过程为参数:

class ProcedureDayAfterJob < ActiveJob::Base
 queue_as :mailers

 def perform(procedure)
    return if procedure.upcoming?


  Admin::NotificationMailer.procedure_day_after(procedure).deliver_later
 end
end

这是邮件程序中的方法 - 以过程为参数:

def procedure_day_after(procedure)
  @procedure = procedure
  mail(
    # hiding who im sending to
  )
end

这是我得到的错误:

2017-12-15T19:25:57.365Z 9222 TID-oxvg7jsso ERROR: !!! ERROR HANDLER 
THREW AN ERROR !!!
2017-12-15T19:25:57.365Z 9222 TID-oxvg7jsso ERROR: wrong number of 
arguments (0 for 1)
2017-12-15T19:25:57.365Z 9222 TID-oxvg7jsso ERROR: 
/Users/foreverlabs/foreverlabs/app/jobs/procedure_day_after_job.rb:4:in 
`perform'

我将参数传递给每个方法,所以任何人都可以弄清楚发生了什么?

【问题讨论】:

  • 您确定您正在查看堆栈跟踪中的正确行吗?

标签: ruby-on-rails rails-activejob


【解决方案1】:

我看到发生这种情况是由于在作业中调用的服务/类的初始化程序中的拼写错误。

通常会误导单行错误,其中唯一有用的信息是行号和出错的文件。有了它,并查看您的队列日志,它显示它来自执行方法本身内部的第 4 行,并且代码已被编辑。

检查你在这一行调用的类,看看“initialize”是否以某种方式拼写错误(我自己不时这样做),因为这样做会导致构造函数被禁用,以及导致类期望零参数。

我确定你已经解决了这个问题,但希望这会在未来对其他人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多