1月 152016
LANG=ja_JP.UTF-8をcrontabの上の方に書いておけば良かった
書かないと、Rubyの場合ARGVに日本語を渡してcrontabから呼んだらencodingのエラーになる
incompatible character encodings: UTF-8 and ASCII-8BIT (Encoding::CompatibilityError)
crontabで定期的に時刻を読み上げる
これを動かそうとしていたcrontabで実行した時だけ引数に日本語渡せなくて困ってた
say-time
#!/usr/bin/env ruby
now = Time.now
s = now.min == 0 ? "#{now.hour}時" : "#{now.hour}時#{now.min}分"
cmd = "say #{s} #{ARGV.join ' '}"
puts cmd
system cmd
30分ごとに実行
SHELL=/usr/local/bin/zsh時刻の末尾に付けたい文字列や、sayに渡したいオプションはそのまま渡せる。
HOME=/Users/sho
PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/$HOME/bin:$PATH
LANG=ja_JP.UTF-8
0,30 * * * * say-time です -o otoya > /dev/null 2>&1
「8時30分です」とか言ってくれる。