2013-03-10 2 views
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 

하지만 단지 정말로 월, 일, 년의 일이 아니라 시간에 작동하는 것 같다 :

데이터베이스를 사용하지 않고, 나는 다음과 같은 작성했습니다. 제가 답변을 찾고있는 두 가지 질문이 있습니다 : 데이터베이스를 통해 루핑을 수행하고, 보낼 시간순으로 메시지를 찾고, 위의 예제 코드로 어떻게 하루의 시간과 분을 그 달과 함께 사용할 수 있습니까? 메시지를 보낼 년.

P.S : 사용자/앱이 API 요청을 보내고 내가 언급 한 프로세스가 수행되는 레일에서이 앱을 설계하고 있습니다.

+1

Ruby 프로그램을 실행하기 전까지는 Ruby 프로그램을 실행하지 않는 것이 더 효율적이지 않습니까? 운영 체제의 스케줄링 도구를보십시오. 'at'또는 'cron'은 단지 당신에게 도움이 될 수 있습니다. – vgoff

+0

문제는 제가 언급 했어야합니다. 사용자가 API 요청을 보낼 수있는 레일로 이동해야하며 서버가 내가 말한 데이터를 기록하고 내가 말한 내용을 실행합니다. – user1938700

+0

질문 수정 레일스를 포함하도록 다시 태그하면 레일 중심의 대답을 얻을 수 있습니다. – vgoff

답변

1

당신은 몇 가지 방법이 있습니다 보석에 봐 때마다

gem install whenever 

https://github.com/javan/whenever

그것은 당신이 질문을 정확하게하지 않습니다 있지만 6 개월 대기를 위해 루비를 실행하는 것보다 훨씬 낫다 보내지는 이메일.

더 좋은 방법은https://github.com/defunkt/resque

그런 다음 https://github.com/bvandenbos/resque-scheduler를 추가 resque과 솔루션은 이메일을 보내 기다리고 만 루비 인스턴스의 드래그없이 아주 좋은 것입니다.

행운을 빌어 요 ...

은 BTW : 나는 서비스가 당신이 요구하고 정확하게 수행했다. 스펙과 코드가 있습니다. 네가 원하면 내가 네게 줄 수있어.

+0

당신이 그것을 할 수 있다면 나는 사랑한다. – user1938700

+0

내 이메일이 필요 ?? – user1938700

+0

내 이메일을 내 계정에서 보아 그것이 공개라고 생각합니다. – drhenner