【问题标题】:Run Method Certain Time, Day, Year (Ruby)特定时间、日期、年份的运行方法 (Ruby)
【发布时间】:2013-03-11 03:30:36
【问题描述】:

我正在编写一个 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:我正在设计这个应用程序,用户/应用程序发送一个 API 请求,然后我提到的过程将被执行。

【问题讨论】:

  • 在你想运行它之前不运行Ruby程序不是更有效吗?查看适用于您的操作系统的调度工具。 atcron 可能正适合您。
  • 问题是,我应该提到它,我将把它移到 Rails 上,用户可以发送 API 请求,服务器将记录我所说的数据并执行我所说的谈到
  • 编辑问题并重新标记它以包含 Rails,您将得到一个以 Rails 为中心的答案。

标签: ruby-on-rails ruby logic message


【解决方案1】:

您有几种方法: 随时查看宝石

 gem install whenever

https://github.com/javan/whenever

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

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

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

祝你好运……

顺便说一句:我提供了一项服务来完全按照您的要求进行操作。我有规格和代码。如果你需要,我可以给你。

【讨论】:

  • 如果你能做到,我会很高兴:)
  • 查看我帐户上的电子邮件,我相信它是公开的。
  • 那里没有。但我的电子邮件是 galiro dot com 上的 galiro
猜你喜欢
  • 2013-07-24
  • 1970-01-01
  • 2017-01-19
  • 1970-01-01
  • 2022-01-17
  • 2011-04-02
  • 1970-01-01
  • 1970-01-01
  • 2013-02-15
相关资源
最近更新 更多