Clockwork で cron on Heroku
Heroku で cron したくて調べたらclockworkというgemがよさそうだったので使用してみた。 Gistでもよかったんだが、せっかくなのでブログにも書いてみた。
感想としてはClockworkの時間の指定の仕方がシンプルでよかった。
ENV['HOGE'] の部分は
heroku config:add hoge='hogehoge'
で登録できる。
# Gemfile gem 'clockwork' gem 'active_support'
# clock.rb # encoding: utf-8 require 'clockwork' require 'net/http' require 'digest/sha1' require 'active_support/time' def work_or_study time = ( (Time.now.beginning_of_week - Time.new('1970 00:00:00')) / 60 / 60 / 24 / 7 ).to_i week = time.even? ? "学習" : "作業" "今日は#{week}週です。" end module Lingr class << self def inform(text) verifier = Digest::SHA1.hexdigest(ENV['BOTID'] + ENV['SECRET']) Net::HTTP.start('lingr.com', 80) do |http| http.get("/api/room/say?bot=#{ENV['BOTID']}&bot_verifier=#{verifier}&room=#{ENV['ROOMID']}&text=#{URI.escape(text)}") end end end end module Clockwork handler do |job| Lingr.inform(work_or_study) puts "Running #{job}" end every(1.day, 'Lingr', at: ['10:00', '21:00']) end
これだと10時と、21時にbotがしゃべる。
最後に
Gistがシャレ乙になってたので、下書きをGistでかいてそのまま保存したので同じないようが二つあるというどうでもいい状態。