我正在编写一个简单的Ruby on Rails应用程序,对ROR知之甚少。该应用程序定期查询Twitter和Instagram,获取某些用户的订阅源并将其存储在某个地方,然后当特定用户的推文或照片的请求到达时,它可以快速访问。
我正在考虑编写一个rake任务,该任务将定期获取推文和Instagram照片。
如果webapp使用全局变量来获取源,那么rake任务是否可以访问同一个全局变量并更新它?
或者是否必须使用数据库,因此rake和webapp可以更新/访问相同的数据?
答案 0 :(得分:2)
rake任务通常会在它自己的进程中运行,因此它无法与主应用程序共享状态。但是,您可以在应用程序中创建一个类来获取Feed并使用时间戳存储它。只要该时间戳到期,它就会创建一个新请求。但是,虽然易于实现,但这会导致您的请求在缓存过期后请求到达时减慢一点,因为应用程序需要从Twitter和Instagram获取数据作为请求的一部分。
答案 1 :(得分:0)
如果您构建rake任务的依赖项来加载Rails应用程序,那么您可以访问Rails应用程序所做的所有相同数据。
desc 'My polling rake task'
task :twitter_pool => :environment do
m = MyModel.find(123) # access models
MyModel::CONSTANT
... # etc.
end
“=>:环境”是重要的部分。