Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 设置Twilio客户端_Ruby On Rails_Ruby_Methods_Twilio_Rake Task - Fatal编程技术网

Ruby on rails 设置Twilio客户端

Ruby on rails 设置Twilio客户端,ruby-on-rails,ruby,methods,twilio,rake-task,Ruby On Rails,Ruby,Methods,Twilio,Rake Task,我正在访问TwilioAPI,向数据库中的所有用户发送每日消息。对于每个人来说,消息应该是相同的,并且来自我整理的一系列消息。我正在使用Heroku调度程序触发我构建的rake任务,该任务将在每天的某个小时运行。但是,由于我的Twilio客户端模型是如何设置的,因此每次运行任务时都会创建一个新的模型实例,因此总是发送数组中的第一条消息,而不是像设置的那样连续遍历数组。有没有人知道如何重新安排或重新编码我的模型或rake任务,这样就不会发生这种情况?理想情况下,它应该自行运行 twilio_cli

我正在访问TwilioAPI,向数据库中的所有用户发送每日消息。对于每个人来说,消息应该是相同的,并且来自我整理的一系列消息。我正在使用Heroku调度程序触发我构建的rake任务,该任务将在每天的某个小时运行。但是,由于我的Twilio客户端模型是如何设置的,因此每次运行任务时都会创建一个新的模型实例,因此总是发送数组中的第一条消息,而不是像设置的那样连续遍历数组。有没有人知道如何重新安排或重新编码我的模型或rake任务,这样就不会发生这种情况?理想情况下,它应该自行运行

twilio_client.rb型号:

 class TwilioClient
    require 'twilio-ruby'

    def initialize
        @client = Twilio::REST::Client.new ENV["TWILIO_ACCOUNT_SID"], ENV["TWILIO_AUTH_TOKEN"]
        @index = 0
    end

    def notify
        all_phone_numbers.each do |number|
            @client.account.messages.create(
                from: '+1401XXXXXXX',
                to: number,
                body: daily_text
            )
        end
    end

    private

    def daily_text
        @message = [ 
            "1", "2", "3"
        ]

        @index += 1
        if @index >= @message.length
            @index = 0
        end

        @message[@index]
    end

    def all_phone_numbers
        User.pluck(:phone_number)
    end

end
rake任务:

desc "This task is called by the Heroku scheduler add-on"
task notify: :environment do
  client = TwilioClient.new
  client.notify
end

您是只安排一项工作还是为每个用户电话号码安排一项工作?@Matt只安排一项工作。在上面的模型中,我的notify方法正在迭代我的整个数字列表。听起来您需要在迭代结束时保留索引的值。然后在随后的作业运行中查找该值,以了解您在哪里中断了。即使您可以让调度程序持久化您的任务并在内存中执行,如果您的服务器节点被循环,它将失去它的位置,并且您将向用户发送大量重复消息。