0

나는 작업 일정을 잡는 레일을 지나쳤으며 언제든지이 코드 조각을 발견했습니다.레일을 사용하여 작업 예약

case @environment 
when 'production' 
every 1.day, :at => "#{Time.parse('12:00 A').getlocal.strftime("%H:%M")}" do 
    runner "Company.send_later(:create_daily_stories!)" 
end 
when 'staging' 
    every 15.minutes do 
    command "thinking_sphinx_searchd reindex" 
    end 
end 

나는 루비 상당히 새로운 오전 꽤 "회사"여기에 무엇의 약자인지 이해 해달라고. 다른 말로하면 사람들에게 이메일을 보내고 싶습니다. sendEmail이라는 메소드가있는 email_controller라는 컨트롤러 클래스가 있는데, 이것을 사용하여 이메일을 보내고 싶습니다. 어떻게해야합니까? 나는 주자 "email_controller.sendEmail"또는 그와 비슷한 것을 말해야합니까? 나는 그것을 얻지 않는다. 참고 - 회사 대신 모델 또는 컨트롤러를 사용합니까?

답변

2

이 경우 Companycreate_daily_stories!이라는 클래스/싱글 톤 메소드가있는 예제 모델입니다.

class Company < ActiveRecord::Base 

    # Send out daily stories to all companies 
    def self.create_daily_stories! 
    # Do some stuff 
    end 
end 

이상적으로 이메일을 생성하는 비즈니스 로직에 상주 thusly 히 (당신이 레일 같은 MVC 프레임 워크를 사용하는 가정) 모델에 포함되어야한다 : 이론적으로, 아마 다음과 같을 것이다.

+0

감사합니다. 나는 그것을 모델에 넣을 것이다! 거기서 전화 해. : D – CodeGeek123

1

Resque는 작업을 예약하는 좋은 방법입니다.
Resque Railscast을 살펴보십시오.

또는 아마도이 Rails: Cron Job Scheduling using Redis, Resque and Rufus입니다.

+0

임마 내가 어느 것을 사용해야하는지 모르겠다. 작업 빈도는 하루에 최대 1 개입니다. 리스크가 더 좋습니까? – CodeGeek123

+0

@ CodeGeek123 - 우리는 Resque에서 모든 일정을 계획하고 있지만 우리는 실행해야하는 많은 작업이 있습니다. 결국, 지금 일하고 있다면, 더 적은 것이 더 많으니까. –

+0

나는 당신의 튜토리얼을 시험해 보았고 콘솔에서 rufus-scheduler를 테스트하는 방법을 모른다. 또한 rake resque : resque 스케줄러의 스케줄러가 "rake aborted!"태스크를 빌드하는 방법을 모름 'resque : scheduler' "오류가 발생합니다. – CodeGeek123