Rake任务访问Web应用程序全局变量

时间:2013-07-06 19:31:33

标签: ruby-on-rails ruby rake

我正在编写一个简单的Ruby on Rails应用程序,对ROR知之甚少。该应用程序定期查询Twitter和Instagram,获取某些用户的订阅源并将其存储在某个地方,然后当特定用户的推文或照片的请求到达时,它可以快速访问。

我正在考虑编写一个rake任务,该任务将定期获取推文和Instagram照片。

如果webapp使用全局变量来获取源,那么rake任务是否可以访问同一个全局变量并更新它?

或者是否必须使用数据库,因此rake和webapp可以更新/访问相同的数据?

2 个答案:

答案 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

“=>:环境”是重要的部分。