MENU

rails5でDBの代わりにymlを使って値を記録・更新する方法

DBの代わりにymlを使って値を記録・更新したい

 複雑なデータを記録したいわけじゃないので、DBは使いたくない。

サンプル

前回の起動時間からn日経ってたらtrueを返す例

class TimeKeeper
  require 'yaml'

  def last_acted_at
    data = open('./lib/time_keeper/last_acted_at.yml', 'r') { |f| YAML.safe_load(f) }
    Time.zone.parse(data['last_acted_at'])
  end

  def update_last_acted_at
    data = { 'last_acted_at' => Time.current.strftime('%Y-%m-%d %H:%M:%S') }
    YAML.dump(data, File.open('./lib/time_keeper/last_acted_at.yml', 'w'))
  end

  def since_n_days_from_last_acted_at?(day_num)
    Time.current >= last_acted_at.since(day_num.days)
  end
end

 update_last_acted_atは一連の処理が終わった後に使う。
 cron使えばこんなものは必要ないけれど、cronが使えない状況もあるので、そういう人に届けばいい。