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
デザインも頼めるシステム開発会社をお探しならBPS株式会社までどうぞ 開発エンジニア積極採用中です! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

baba

ゆとりプログラマー。 高校時代から趣味でプログラミングを初め、そのままコードを書き続けて現在に至る。慶應義塾大学環境情報学部(SFC)卒業。BPS設立初期に在学中から参加している最古参メンバーの一人。Ruby on Rails、PHP、Androidアプリ、Windows/Macアプリ、超縦書の開発などを気まぐれにやる。軽度の資格マニアで、情報処理技術者試験(16区分17回 + 情報処理安全確保支援士試験)、技術士(情報工学部門)、Ruby Programmer Gold、AWSソリューションアーキテクト(アソシエイト)、日商簿記2級、漢検準1級などを保有。

babaの書いた記事

夏のTechRachoフェア2019

週刊Railsウォッチ

インフラ

ActiveSupport探訪シリーズ