获取第三方数据并存储在rails应用程序变量中

时间:2010-03-22 20:53:55

标签: ruby-on-rails

我需要定期执行后台任务从天气网站获取数据。

如何在rails中从远程URL获取json并将其存储在服务器上?此外,将数据存储在数据库中似乎没有任何意义,因此如何在rails中存储可供所有用户使用的变量?

2 个答案:

答案 0 :(得分:5)

为什么不将数据存储在缓存中(本地OR memcached)。

检索Feed数据时写入/更新缓存:

def load_feed
  Rails.cache.write("feed_data", get_data_from_feed)
end

当您需要访问数据时从缓存中读取:

def read_feed
  Rails.cache.fetch("feed_data") { get_data_from_feed }
end

答案 1 :(得分:1)

我只会部分回答你的问题。

如果您想将其存储为可供所有用户使用的变量,那么您可以在my_new_variable.rb中创建config/initializers。并且您可以生成一些定义和初始化变量的代码(可能常量更好)。然后是这种方法的一个不好的部分 - 你必须重新启动服务器。如果您使用的是passanger,那么只需touch tmp/restart.txt即可完成。

您也可以将其存储在yml文件中并在服务器启动时加载它。

即使您以不同的方式存储它,可能最简单的方法是重新启动服务器以加载此新变量。否则,在每个请求中,您应检查是否有可用的新变量(例如检查文件的上次更新时间),或重新加载此文件。

所以,对我而言,最简单的方法是将其存储在数据库中。