キモブロ

Please spy check please, Fucking retard

@id:hitode909さん あーそういうのやるproc-cacheっての作ったことがあります

■ - hitode909の日記

そういう感じのをするproc-cacheというgemを作ったことがあります。ただ相当ひどい実装なんで誰かちゃんと作って欲しいすね。


これはProcにcache!っていうメソッドが追加されるgemで、Procが初回だけ実行されてその結果が内部的にキャッシュされて次回実行以降は同じものが返却されるみたいな感じです。

require 'proc-cache'

p proc{ sleep 3; "heavy task" }.cache!

このコードをtest.rbって名前で保存してruby test.rbって実行すると、
初回は3秒後に"heavy task"ってのが表示されて
二回目以降は即座に"heavy task"と表示されます。

cache!の引数に、:expires => 2.hours ってオプションを使うと2時間だけキャッシュされる感じになります。
実装だけどスクリプトファイル名で/tmp以下にMarshal.dumpしたキャッシュを作成する感じなのでたぶんすごくよくない。Proc内での最後の実行結果がMarshal.dumpできるものでないとちゃんと動作しません。誰かまともな感じのをつくったら教えて下さい。まぁ開発中に気軽に使用するという意味ではこの実装でも便利だと思ってるけどどうでしょうか。


引数とかの詳細はREADMEに
https://github.com/kimoto/proc-cache