Jenkinsによるビルドテストにおいて、リソースを制限した状態でRubyスクリプトを実行する必要が生じた。

Ruby自身にはリソースの制限を行う機能がないので(setrlimitをラップした拡張ライブラリはないかな?)、何らかの方法でリソース制限を行ったのちにスクリプトを起動しなければならない。

もちろんビルドスクリプトに

ulimit ...
ruby -e '...'

と書いてもよいのだが、Rubyスクリプト部が複雑化するとクォート地獄に落ちるのが必至なので、以前書いた -x オプションを使った。

ulimit ...
exec ruby -x "$0" "$@"
#! ruby
...

exec 後の ruby には -x が与えてあるので #! ruby までの部分を無視してくれる。これでシェルレベルでリソースのお膳立てをしてから ruby インタプリタを起動出来る。