0

ユーザーにメッセージを入力し、次に年、月、日、時刻を入力し、その時間が来たらメッセージを電子メールで送信するルビープログラムを作成しています。そのデータをデータベース テーブルに格納します。プログラムはその日が来るまでループし、送信を実行する必要があります。

データベースを使用せずに、次のように記述しました。

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

しかし、実際には月、日、年のみで機能するように見えますが、時間では機能しません。私が答えを求めている 2 つの質問があります: データベースをループして、送信するメッセージを時系列で検索するにはどうすればよいですか。また、上記のコード例では、日月とともに時間と分をどのように使用できますか?メッセージを送信する年。

PS: 私はこのアプリをレール上で設計しています。ユーザー/アプリが API リクエストを送信すると、前述のプロセスが実行されます。

4

1 に答える 1

2

あなたにはいくつかのアプローチがあります:いつでも宝石を調べてください

 gem install whenever

https://github.com/javan/whenever

それはあなたが要求したことを正確に実行しませんが、電子メールが送信されるのを待つために6か月間rubyを実行するよりもはるかに優れています。

さらに良いアプローチはresquehttps ://github.com/defunkt/resqueです

次に、 https://github.com/bvandenbos/resque-schedulerを追加すると、メールの送信を待機している100万のルビーインスタンスのドラッグがなくても、ソリューションは非常に優れています。

幸運を...

ところで:私はあなたが求めていることを正確に行うためのサービスを作りました。スペックとコードがあります。あなたが望むなら、私はあなたにそれを手に入れることができます。

于 2013-03-10T19:30:36.423 に答える