-1
让我们举个例子吧。替代正常宝石红宝石方法的动作缓存?
def get_data(param1,param2,param3)
#do something
#make some api calls
end
此方法不属于控制器。我在我的宝石中使用这种方法在我的ruby类中。如何根据参数来缓存方法的结果。类似于Rails中的动作缓存的过程有过期能力。
让我们举个例子吧。替代正常宝石红宝石方法的动作缓存?
def get_data(param1,param2,param3)
#do something
#make some api calls
end
此方法不属于控制器。我在我的宝石中使用这种方法在我的ruby类中。如何根据参数来缓存方法的结果。类似于Rails中的动作缓存的过程有过期能力。
您可以使用这种低级别的缓存:
def competing_price
Rails.cache.fetch("#{param1}-#{param2}-#{param3}", expires_in: 12.hours) do
# do something..
end
end
它没有任何关系,你必须这样做,只在控制器或模型。你可以在任何地方像你的方法一样使用它。
我已经这样做了。但我保留这作为第二个选项 – Praveenkumar
的可能的复制[?什么是memoize的跨越Ruby中一个类的实例数据的好办法(http://stackoverflow.com/questions/13552585/what-是一个很好的方式来记忆数据跨越多个实例的红宝石) –
另外http://www.justinweiss.com/articles/4-simple-memoization- patterns-in-ruby-and-one-gem/ –
memoize是一个很好的建议,但我没有把我的整个代码。它使一些服务电话内,所以我需要过期时间那为什么我要使用缓存。@ BradWerth – Praveenkumar