试图找出如何缓存我的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密钥并缓存它?
如果需要更多信息,请与我们联系。谢谢您的帮助。
答案 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