2015-07-27 :-(
_ [ruby][gnuplot][グラフ]ruby gnuplot でグラフを出力したが LANG を設定してなかったので文字化けした
手元では動作確認していて、いざ crontab に登録して実行してみたら文字化けしていた。なんでだろ~なんでだろ~と 0.3 秒ほど crontab -l を眺めた
% crontab -l #MAILTO="miwarin@gmail.com" MAILTO="" PATH=/usr/pkg/bin:/usr/pkg/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/localbin:/usr/local/sbin
もしかして
% env -i PATH=/usr/bin:/bin:/usr/pkg/bin:/usr/local/bin ruby22 g01.rb
当たりだった。手元でも再現した。
しかも怒られていた。
Could not set character size when opening font "arial", using internal non-scalable font
LANG をつけるのが正解。
% env -i LANG=ja_JP.UTF-8 PATH=/usr/bin:/bin:/usr/pkg/bin:/usr/local/bin ruby22 g01.rb
crontab にも LANG を設定しましょうというオチだった。他のプログラム? 知らんね。
% crontab -l #MAILTO="miwarin@gmail.com" MAILTO="" PATH=/usr/pkg/bin:/usr/pkg/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/localbin:/usr/local/sbin LANG=ja_JP.UTF-8
こういうコード。example の sin_wave.rb まま
#: coding utf-8 require "gnuplot" Gnuplot.open do |gp| Gnuplot::Plot.new( gp ) do |plot| plot.terminal "png" plot.output File.expand_path("../sin_wave.png", __FILE__) plot.xrange "[-10:10]" plot.title "Sin カーブ" plot.ylabel "sin(x)" plot.xlabel "x" plot.data << Gnuplot::DataSet.new( "sin(x)" ) do |ds| ds.with = "lines" ds.linewidth = 4 end end end puts 'created sin_wave.png'
[ツッコミを入れる]