rub2を公開しました

github gem

rub2はtorque qsub用ruby DSLです。 簡単なjobを簡単に書くことを目的にデザインされています。

rub2を使うことで得られるメリットは

  • jobの終了を待つ
  • 多数のファイルなどに対するarry jobが簡単にかける
  • 失敗したjobのリトライができる

などがあります。

何年か内部で使用していたツールですが、gem化のついでに公開しました。

rubyでtorque jobを書く方はそういないと思いますが、お役に立てば幸いです。

簡単なサンプル

require 'rub2'

submit "SimpleJob" do
  execute_with Dir.glob("/etc/*.conf") do |file|
     "wc -l #{file}"
  end
end

と書くと、

wc -l nfs.conf

のようなjobがDir.glob("/etc/*.conf")が返した配列の要素ごとに生成され実行されます。

その後、各jobやqstatの状態を監視し、すべてのjobが終了するまで待ち合わせます。

あれこれ

  • execute_with は配列(複数可)をに受取り、 blockの結果をbashスクリプトとして出力します。

  • shellでエラーになる時や、事前に動作を確認したい時はdry_runを指定して実行すると、 実際にsubmitされるスクリプトが出力されるので、参考にしてください。

  • node側にもrubyがインストールされている必要があります。

  • torqueのバージョンによっては動かないことがあります。

  • 複雑なjobの場合、引数を渡して実行するshellスクリプトを書いて、それをrub2から呼ぶとシンプルになります。 shellスクリプト再利用もしやすいのでおすすめです。