我有两个型号公司和新闻 如何每30分钟下载一次新闻? 我已经尝试通过gem'随时',没有任何反应
class Company < ActiveRecord::Base
after_save :load_news
def load_news
last_entry = self.news.last
if last_entry.nil?
feed = Feedzirra::Feed.fetch_and_parse(self.url)
else
feed = Feedzirra::Feed.fetch_and_parse(self.url,
:if_modified_since => last_entry.published_at.to_time)
end
Company.add_entries(feed.entries, self.id)
end
def self.update_all_feeds(urls)
Feedzirra::Feed.fetch_and_parse(urls,
:on_success => lambda { |url, feed|
rss = Comapny.select("companies.id").where(:url => url).first
Company.add_entries(feed.entries, rss.id)
}
)
end
end
class News < ActiveRecord::Base
attr_accessible :content, :guid, :name, :published_at, :summary, :url, :company_id
end
答案 0 :(得分:1)
每当脚本
every 15.minutes do
rake "collect"
end
和rakefile
task :collect => :environment do
urls = Company.select("companies.url").all.map { |v| v[:url] }
Company.update_all_feeds(urls)
end
答案 1 :(得分:0)
如果你的每个脚本都要调用Company.load_news
,那么该方法需要是一个类方法而不是一个实例方法:
def self.load_news
或
def Company.load_news
无论您的命令是什么,总是尝试在rails控制台中运行它,就像它在您的脚本中出现一样,进行调试。还要在脚本触发时检查rails日志,它应该显示任何错误,假设您的每个作业成功进入cron。