0

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

我正在考虑编写一个 rake 任务,该任务将完成定期获取推文和 instagram 照片的部分。

如果 webapp 使用全局变量来获取提要,rake 任务可以访问同一个全局变量并更新它吗?

还是必须使用数据库以便 rake 和 webapp 可以更新/访问相同的数据?

4

2 回答 2

2

rake 任务通常会在它自己的进程中运行,因此它不能与您的主应用程序共享状态。但是,您可以做的是在您的应用程序中创建一个类,该类获取提要并将其与时间戳一起存储。每当该时间戳过期时,它将创建一个新请求。然而,虽然很容易实现,但这会导致您的请求在缓存过期后到达时会稍微变慢,因为应用程序需要从 Twitter 和 Instagram 获取数据作为请求的一部分。

于 2013-07-06T19:39:53.143 回答
0

如果您构建 rake 任务的依赖项来加载 Rails 应用程序,那么您可以访问 Rails 应用程序所做的所有相同数据。

desc 'My polling rake task'
task :twitter_pool => :environment do
  m = MyModel.find(123) # access models
  MyModel::CONSTANT
  ... # etc.
end

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

于 2013-07-06T19:39:45.630 回答