Я бы использовал кеширование Rails, но вы должны хорошо подумать о том, как истечь срок действия кеша. Итак:
@members = cached_members
private
def cached_members
@url = api_version_root+'/members/all?council='+session[:council]
Rails.cache.fetch("#{@url}/#{api_token_hash}/members", expires_in: 48.hours) do
response = RestClient.get @url, api_token_hash
(response.code == 200) && JSON.parse(response.body)
end
end
Затем продублируйте это в контроллере ответа, и @members будет заполнен из кеша. Теперь, конечно, это плохая практика - фактически дублировать код, поэтому вытащите его во вспомогательный миксин, например:
module MemberCache
def cached_members
@url = api_version_root+'/members/all?council='+session[:council]
Rails.cache.fetch("#{@url}/#{api_token_hash}/members", expires_in: 48.hours) do
response = RestClient.get @url, api_token_hash
(response.code == 200) && JSON.parse(response.body)
end
end
end
, и включите его в два контроллера:
require 'member_cache'
class ConnectController < ApplicationController
include MemberCache
end