无法确定如何为Rails缓存放置API信息

时间:2017-03-22 22:40:30

标签: ruby-on-rails api

试图找出如何缓存我的Forecast.io请求。

目前我正在使用这两种宝石:

gem 'forecast_io' 
gem 'figaro'

我很难弄清楚如何将API密钥放入Rails低级缓存请求中。 (我第一次这样做,顺便说一下)

澄清一下,当使用figaro gem时,我同时拥有

config/application.yml file :(具有以下内容)

forecast_io_key: 'YOUR_API_KEY'

config/initializers/forecast_io.rb档案:(再次提供以下内容)

require 'forecast_io'  

ForecastIO.configure do |config|    
  config.api_key = Figaro.env.forecast_io_key  
end

在我的forecast模型中,这是我原来的工作版本:

class Forecast < ApplicationRecord

    def get_weather_data 
        ForecastIO.forecast(lat, lng) 
    end

end

现在尝试重写它以包含Rails缓存,但重写的版本不正确,因为它不再工作并且正在获取数据:

class Forecast < ApplicationRecord

    def get_weather_data_paris
        Rails.cache.fetch(https://api.darksky.net/forecast/config.api_key/48.8566,2.3522, :expires => 1.hour) do
         ForecastIO.forecast(48.8566, 2.3522) 
        end
    end

end

如何重写get_weather_data_paris方法,使其包含隐藏的API密钥并缓存它?

如果需要更多信息,请与我们联系。谢谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用:api_key访问ForecastIO.api_key,如:

class Forecast < ApplicationRecord

  def get_weather_data_paris
    Rails.cache.fetch("https://api.darksky.net/forecast/#{ForecastIO.api_key}/48.8566,2.3522", :expires => 1.hour) do
     ForecastIO.forecast(48.8566, 2.3522) 
    end
  end

end