rubyでBASE64エンコードするだけなら、
require 'base64' Base64.encode64 'hogehoge'
で良いのですが、なぜか改行を付けてくれる親切設計です。
BASE64してファイル名にすること等も多いと思うので、
Base64.encode64('hogehoge').chomp.sub('/', '_').sub('+', '-')
のようにまとめておくと良さそうですね。
ということで、手抜きのキャッシュモジュールです。
色々穴だらけですが。
module Datacache
#キャッシュから取得する
def cache_read(key)
begin
filename = get_filename key
if File.exists? filename
fp = File.open(filename)
return Marshal.load(fp)
end
rescue
ensure
fp.close if fp
end
return nil
end
#キャッシュに書き込む
def cache_write(key, value)
begin
filename = get_filename key
fp = File.open(filename, 'w')
Marshal.dump(value, fp)
rescue
ensure
fp.close if fp
end
end
#キー名からファイル名を返す
def get_filename(key)
file = Base64.encode64(key).chomp.sub('/', '_').sub('+', '-')
return ::RAILS_ROOT + '/tmp/datacache/' + file
end
end