对Rails Sidekiq设置的循环依赖

英国200313

Sidekiq和Redis都在本地运行。如果我仅使用put语句,Sidekiq将处理该作业。如果我不考虑Sidekiq,rake任务将通过模型发送文本。

我需要设置更复杂的任务,因此我想让Sidekiq可以运行该应用程序。我正在按照本教程http://ruthienachmany.github.io/blog/2013/08/10/sidekiq-redis-cron-jobs/进行操作

在Sidekiq中手动触发rake任务时,我不断收到此错误

2014-11-27T03:55:40.906Z 36691 TID-ouue3wz8o WARN: Circular dependency detected while autoloading constant Text_Message

相关Gemfile信息:

 gem 'rails', '4.1.1' 

 gem 'sidekiq', '3.2.5'

这是调用Sidekiq工作程序(send_scheduled_text.rake)的rake任务:

require_relative '../../app/workers/send_text_worker'

namespace :send_scheduled_text do

  task:texts => :environment do

    TextMessage.all.each do |text_message|
      if ((text_message.sentstatus == false) && (Date.today ==  text_message.scheduled_date))
      # Sidekiq code: 
      SendTextWorker.perform_async(text_message.id)
      end
    end
  end
end

这是我的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

感谢所有看到为什么我在Text_Message上遇到循环错误的人。

Musannif Zahir

即使类的文件位于snake_case中,类名称本身也应位于CamelCase中。

替换Text_Message.find(text_message_id)TextMessage.find(text_message_id)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章