Ruby on rails Rails Sidekiq设置的循环依赖性
Sidekiq和Redis都在本地运行。如果我只使用put语句,Sidekiq将处理作业。如果我将Sidekiq从等式中去掉,rake任务将通过模型发送文本 我有更复杂的任务要设置,所以我想让Sidekiq开始应用程序。我正在学习这个教程 当我在Sidekiq中手动触发rake任务时,我一直会遇到这个错误Ruby on rails Rails Sidekiq设置的循环依赖性,ruby-on-rails,twilio,sidekiq,worker,Ruby On Rails,Twilio,Sidekiq,Worker,Sidekiq和Redis都在本地运行。如果我只使用put语句,Sidekiq将处理作业。如果我将Sidekiq从等式中去掉,rake任务将通过模型发送文本 我有更复杂的任务要设置,所以我想让Sidekiq开始应用程序。我正在学习这个教程 当我在Sidekiq中手动触发rake任务时,我一直会遇到这个错误 2014-11-27T03:55:40.906Z 36691 TID-ouue3wz8o警告:自动加载常量文本消息时检测到循环依赖关系 相关文件信息: gem 'rails', '4.1.1
2014-11-27T03:55:40.906Z 36691 TID-ouue3wz8o警告:自动加载常量文本消息时检测到循环依赖关系
相关文件信息:
gem 'rails', '4.1.1'
gem 'sidekiq', '3.2.5'
这是调用Sidekiq worker的rake任务(send_scheduled_text.rake):
这是我的send_text_worker.rb
class SendTextWorker
include Sidekiq::Worker
def perform(text_message_id)
text = Text_Message.find(text_message_id)
SendText.new(text).send_text_message
end
end
下面是它正在调用的text_message.rb模型:
require 'twilio-ruby'
require 'date'
class TextMessage < ActiveRecord::Base
belongs_to :client, dependent: :destroy
belongs_to :step, dependent: :destroy
before_save :grab_phone
def grab_phone
self.phone = step.goal.action_plan.client.phone
end
def send_text_message(message)
twilio_sid = ENV["TWILIO_ACCT_SID"]
twilio_token = ENV["TWILIO_AUTH_TOKEN"]
twilio_phone_number = ENV["TWILIO_PHONE_NUMBER"]
phone = step.goal.action_plan.client.phone
@twilio_client = Twilio::REST::Client.new(twilio_sid, twilio_token)
@twilio_client.account.sms.messages.create(
:from => "+1#{twilio_phone_number}",
:to => phone,
:body => message)
self.sentstatus = true
self.save!
end
end
需要“twilio ruby”
需要“日期”
类TextMessage“+1{twilio\u电话号码}”,
:to=>电话,
:body=>消息)
self.status=true
自救!
结束
结束
感谢所有看到我在短信上出现循环错误的人 即使类的文件是snake_大小写,类名本身也应该是CamelCase
将
Text\u Message.find(Text\u Message\u id)
替换为TextMessage.find(Text\u Message\u id)
看起来像Text\u Message
可能是拼写错误的TextMessage
。非常感谢您的帮助。现在我有一个新的错误,我正试图找出:'2014-11-27T15:58:22.370Z 40881 TID-oxu8xcqgs警告:{“重试”=>true,“队列”=>“默认”,“类”=>“SendTextWorker”,“args”=>[10],“jid”=>“22c1b60328131698d65eb1af”,“排队”=>1417103902.283438,“错误消息”=>“未初始化常量SendTextWorker::SendText”,“error\u class”=>“NameError”,“failed\u at”=>1417103902.367975,“retry\u count”=>0}”而不是SendText.new(text)。send\u text\u message
您应该使用TextMessage.new(text)最后一个问题:'2014-11-27T16:15:28.779Z 42097 TID-oxkvs9kr8警告:{“重试”=>true,“队列”=>“默认”,“类”=>“发送文本工作者”,“参数”=>[10],“jid”=>“87A3640DD4F59ACE3165408”,“排队”=>1417104751.387465,“错误消息”=>分配属性时,必须将散列作为参数传递。”、“error\u class”=>“ArgumentError”、“failed\u at”=>1417104751.473124、“retry\u count”=>3、“retried\u at”=>1417104928.778513}初始化TextMessage
TextMessage.new(text)时出现问题.send_text_message
不正确,因为参数text
应该传递到其他地方:)非常感谢。干杯!
require 'twilio-ruby'
require 'date'
class TextMessage < ActiveRecord::Base
belongs_to :client, dependent: :destroy
belongs_to :step, dependent: :destroy
before_save :grab_phone
def grab_phone
self.phone = step.goal.action_plan.client.phone
end
def send_text_message(message)
twilio_sid = ENV["TWILIO_ACCT_SID"]
twilio_token = ENV["TWILIO_AUTH_TOKEN"]
twilio_phone_number = ENV["TWILIO_PHONE_NUMBER"]
phone = step.goal.action_plan.client.phone
@twilio_client = Twilio::REST::Client.new(twilio_sid, twilio_token)
@twilio_client.account.sms.messages.create(
:from => "+1#{twilio_phone_number}",
:to => phone,
:body => message)
self.sentstatus = true
self.save!
end
end