Tech Racho エンジニアの「?」を「!」に。
  • 開発

RubyのBase64.encode64とキャッシュ

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

CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。