我正在寻求有关如何以给定间隔(例如6小时)轮询RSS的建议。
以下代码有效,它会读取并解析Feed并将其添加到数据库中。它只会添加新的Feed。这是类方法:
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 :(得分:4)
不,不使用cron是没有意义的。这就是cron的用途,它是以程序的名义。
如果你不喜欢cron语法,那很酷,那就是一个叫做的宝石,https://github.com/javan/whenever给出了一个很好的Ruby语法来生成一个cron作业和一个让你这样做的命令。
然而,对于上帝的爱,不要试图发明一种新的方式,除非你添加一些杀手级功能。使用cron,继续前进。