crontabでrvmのrubyを使い分ける 改良版

http://d.hatena.ne.jp/shokai/20110603/1307052038 で書いたものの改良版。

  • 前のよりすっきり書ける
  • cronの1スクリプト毎の実行時間制限にひっかからない
  • いろんなバージョンのrubyを使い分けやすい

などのメリットがある


まず rvmrun というshellscriptを書きます

#!/bin/zsh
rvm_path=/home/sho/.rvm
source /home/sho/.rvm/scripts/rvm
rvm use $1

zsh -c $2

/home/sho/bin/rvmrun に保存した。

で、rvmrunにrvmのバージョンと実行するコマンドを渡して起動する

rvmrun jruby-1.6.0 "ruby -v"
Using /home/sho/.rvm/gems/jruby-1.6.0
jruby 1.6.0 (ruby 1.8.7 patchlevel 330) (2011-03-15 f3b6154) (OpenJDK 64-Bit Server VM 1.6.0_20) [linux-amd64-java]
rvmrun 1.8.7 "ruby -v"
Using /home/sho/.rvm/gems/ruby-1.8.7-p334
ruby 1.8.7 (2011-02-18 patchlevel 334) [x86_64-linux]

ちゃんとそれぞれrvmが切り替わって実行されていることがわかる。


crontabで使う。
10分毎にruby1.8.7を使ってgyaaazz-checker.rbを実行

*/10 * * * * /bin/zsh /home/sho/bin/rvmrun 1.8.7 "ruby /home/sho/src/ruby/gyaaazz-checker.rb"