运行方法某些时间,日,年(Ruby)

时间:2013-03-10 19:17:35

标签: ruby-on-rails ruby logic message

我正在编写一个ruby程序,它会要求用户输入一条消息,然后输入年,月,日和时间,然后在该时间到来时通过电子邮件发送消息。我将该数据存储到数据库表中。该程序应循环,直到那一天到来,然后执行发送。

不使用数据库,我写了以下内容:

def send_Message(m_to, m_from, m_body, month, day, year, hour, min)
x = 0
t = Time.now


if (t.day == day 
    && t.month == month 
    && t.year == year 
    && t.strftime("%I") == hour 
    && t.strftime("%M") == min )

    x = x +5

    message = @client.account.sms.messages.create(:body => m_body,
        :to => m_to,
        :from => m_from)
    puts message.sid   

else
    sleep_time = Time.new(year,month,day)
    total_sleep = sleep_time - t
    sleep(total_sleep)
    message = @client.account.sms.messages.create(:body => m_body,
        :to => m_to,
        :from => m_from)
    puts message.sid  
end

end

但它似乎只适用于月,日,年的事情,但不是时间。我正在寻找一个答案有两个问题:如何通过数据库循环,寻找按时间顺序发送的消息,以及上面的示例代码,我如何使用一天中的小时和分钟以及日期和年份发送消息。

P.S:我正在设计这个应用程序到rails,用户/应用程序发送API请求,然后我将提到我提到的过程。

1 个答案:

答案 0 :(得分:1)

您有几种方法:

时,请查看宝石
 gem install whenever

https://github.com/javan/whenever

它并没有完全按照你的要求行事,但它比运行红宝石好6个月等待发送电子邮件要好得多。

更好的方法是resque https://github.com/defunkt/resque

然后添加https://github.com/bvandenbos/resque-scheduler,您的解决方案非常好,无需拖动一百万个ruby实例等待发送电子邮件。

祝你好运......

顺便说一句:我提供了一项服务来完全按照你的要求去做。我有规格和代码。如果你愿意,我可以帮到你。