EasyCache is a way to easily cache method calls to a readable YAML file.
This is on RubyGems, so you can just plop gem "easy_cache" in your Gemfile.
Require with require "easy_cache" as expected.
Internally it uses the gemmy library I made.
Specifically, the PersistedHash (which syncs a hash's state to YAML file) is
extended with a get_or_set(key, &blk) method where the block result gets cached as key.
In the case that the key was not found, the return value of get_or_set is the block result. So it can easily be placed as a wrapper
around any synchronous method:
require 'easy_cache'
my_method_cache = EasyCache.new("my_method_cache")
# The file's path will be "~/gemmy/caches/my_method_cache.yaml"
# The ~/gemmy path will be automatically created
# The caches folder can be changed with:
# ENV["GEMMY_CACHE_PATH"]
def my_method(arg)
my_method_cache.get_or_set(arg) do
# do a bunch of stuff here
"#{arg} result is saved"
end
endThere are other methods in the API, too.
#clear#set_state(hash)#get(*nested_keys)#set(*nested_keys, val)-
#data(the entire state)
Note that [] and []= only interact with the in-memory hash. They don't touch the YAML file.