メッセージの送信に twilio gem を使用しています。遅延なしで関数を直接実行しようとすると、メッセージが特定の番号に送信されますが、遅延ジョブで実行しようとすると、 # の未定義のメソッド「メッセージ」としてエラーが発生します
コードで「twilio-ruby」を要求しましたが、効果がありません。
ジョブを手動で呼び出そうとするとDelayed::Job.where(:id => 21501).first.invoke_job
、エラーなしで実行されます。このため、正確なエラーがどこにあるかを考えると、私はより混乱しています。
TwilioBase.rb
require 'twilio-ruby'
module Common
module Sms
class TwilioBase < Base
def initialize(phone, client:, associate_with: nil)
account_sid = twilio_settings[:account_sid]
auth_token = twilio_settings[:auth_token]
@twilio_object = Twilio::REST::Client.new(account_sid, auth_token)
end
def call_api(query_hash)
res = @twilio_object.account.messages.create(query_hash['query_hash'])
end
end
end
end
SmsJob.rb ファイル
class SmsJob
def self.create!(sms_gateway_object, queued_sms, opts={}, delayed_job_opts={})
q_sms = queued_sms
sms_job = self.new(q_sms.id, sms_gateway_object, opts)
job = Delayed::Job.enqueue(sms_job, delayed_job_opts)
q_sms.update_attributes!({:delayed_job_id => job.id})
return sms_job
end
def perform
q = Common::QueuedSms.find(@queued_sms_id
@sms_gateway_object.deliver_sms(@opts)
end
private
def initialize(queued_sms_id, sms_gateway_object, opts)
@queued_sms_id = queued_sms_id
@opts = opts
@sms_gateway_object = sms_gateway_object
end
end
遅延ジョブの呼び出し
SmsJob.create!(self, @q_sms, deliver_sms_opts)
- 編集 -
** これは、遅延ジョブ トレースで確認できる唯一のエラーです **
[Worker(host:ankita-Inspiron-5520 pid:9080)] Job SmsJob (id=21501) FAILED (4 prior attempts) with ValidationError: undefined method `messages' for #<Twilio::REST::Client:0x0000000000000>