2012-02-18 2 views
0

6 시간과 같은 일정 간격으로 RSS를 폴링하는 방법에 대한 조언을 구합니다.6 시간마다 RSS를 폴링하는 레일

다음 코드가 작동하면 피드를 읽고 구문 분석하여 데이터베이스에 추가합니다. 새로운 피드 만 추가합니다. 다음은 클래스 메소드입니다.

def self.update_from_feed(feed_url) 
    feed = Feedzirra::Feed.fetch_and_parse("http://feeds.feedburner.com/PaulDixExplainsNothing") #Example feed 
    feed.entries.each do |entry| 
    unless exists? :guid => entry.id 
     create!(
     :name   => entry.title, 
     :url   => entry.url, 
     :published_at => entry.published, 
     :guid   => entry.id 
    ) 
    end 
    end 
end 

6 시간마다 어떻게이 전체 클래스 메소드를 실행할 수 있습니까? Ruby (및 Rails)에 익숙하지 않으므로 예제를 통해 도움을 얻을 수 있습니다. 가능한 경우 외부 cron 작업을 실행하지 마십시오. 코드 내에서 6 시간마다 실행하기를 원합니다. 감사합니다.

+0

가능한 [레일 용 크론 작업 : 모범 사례?] (http://stackoverflow.com/questions/285717/a-cron-job-for-rails-best-practices) –

답변

4

아니요,이 용도로 cron을 사용하지 마십시오. 이것이 cron의 목적입니다. 프로그램의 이름입니다.

크론 구문이 마음에 들지 않는다면 멋진 도구 일 것입니다. 언제든지 호출 할 수있는 보석이 있습니다. https://github.com/javan/whenever은 cron 작업 생성을위한 훌륭한 Ruby 구문과이를 수행 할 수있는 명령을 제공합니다.

그러나 신의 사랑을 위해 몇 가지 킬러 기능을 추가하지 않는 한이 작업을 수행하는 새로운 방법을 고안하지 마십시오. cron을 사용하여 이동하십시오.

+0

안녕하세요, 댓글. 나는 이것을 일찍 접했지만 혼란 스러웠습니다. 나는 그것으로 모델을 실행시킬 것인가? '매 6 시간마다'와 같이 실행 러너 "MyModel.some_process" end' 나는 러너 파트를 이해하지 못합니다. MyModel은 모델의 이름이되지만 .some_process는 무엇입니까? 그게 .update_from_feed가 되겠습니까? – user1104783

+0

그럴 수도 있습니다. 나는 이해하기 쉽기 때문에 갈퀴 작업을 사용하는 경향이 있습니다. 환경을로드 한 다음 클래스 메소드를 실행하는 간단한 rake 태스크를 작성하십시오. 이렇게하면 Feedzirra가 원하는 URL을 동적으로로드 할 수 있으며, 웹 페이지를 사용자에게 제공하는 리소스를 사용하지 않고 백그라운드에서 반복 할 수 있습니다. –

+0

제안 해 주셔서 감사 드리며이를 시험해 보겠습니다. – user1104783

관련 문제