Method: Helper::CacheLoader.memo
- Defined in:
- lib/helper.rb
.memo(path, options = DEFAULT_OPTIONS, &block) ⇒ Object
ファイルを処理するブロックの結果をキャッシュ化する
CacheLoader.load がファイルの中身だけをキャッシュ化するのに対してこれはブロックの結果をキャッシュする。ファイルが更新されない限り、ブロックの結果は変わらない
ex.) Helper::CacheLoader.memo(“filepath”) do |data|
# data に関する処理
result # ここで nil を返すと次回も再度読み込まれる
end
489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 |
# File 'lib/helper.rb', line 489 def memo(path, = DEFAULT_OPTIONS, &block) @@mutex.synchronize do fail ArgumentError, "need a block" unless block fullpath = File.(path) key = generate_key(fullpath, block) cache = @@result_caches[key] if Helper.file_latest?(fullpath) || !cache data = File.read(fullpath, ) @@result_caches[key] = result = block.call(data) return result else return cache end end end |