Jun's Blog

Output, activities, memo and etc.

Tips to call shell from Ruby

%Q, %q

rubyからシェルを呼ぶときに、バッククォートやsystemコマンドを使うと思いますが、%Q(ダブルクォートと同じで変数展開する)、%q(シングルクォートと同じで変数展開しない)が便利ですね。
見栄えがよくなる。
そういえば、シェルのexit status($?)ってrubyで取るのどうやるんだろう。

#!/usr/bin/env ruby

ENV["RAILS_ENV"] = 'production'
RAILS_ROOT = "/home/rails/abc"
DATA_DIR = "/var/abc"

system('rm -f /tmp/xxx.log')

FILES.each do |file|
  system(%Q!
    time ruby #{RAILS_ROOT}/script/batch/xxx.rb \
      #{DATA_DIR}/#{file} >> /tmp/xxx.log 2>&1;
    echo "exit status: $?";
  !)
end

Tipsじゃなくて、Tipになってしまった(笑)