AutoMatorのシェルスクリプトでRubyを選ぶ

デブサミのShibuya.pmイベントのAutoMatorプレゼンを見て何かやってみようと思いました。

AutoMatorではシェルスクリプトを呼び出して使って色々処理をすることができます。プレゼンではPerlを使ってゴニョゴニョしていましたが、Rubyistとしては当然Rubyを使いたいのです。しかし、「シェルスクリプトを実行する」のプルダウンに、/usr/bin/ruby が無いのです。これはRubyistとして看過できる事態ではありません。

というわけでAutoMatorの「シェルスクリプトを実行する」でRubyを選択できるようにする方法です。

/System/Library/Automator/Run Shell Script.action

こいつのパッケージの中身を表示します

Contents/Resources/Shells.plist

このファイルを開き、以下の記述を追加し保存します。管理者権限が必要です。

<key>/usr/bin/ruby</key>
<dict>
	<key>args</key>
	<array>
		<string>-e</string>
		<string>%</string>
		<string>--</string>
	</array>
	<key>script</key>
	<array>
		<string>STDIN.each { |arg| puts arg }</string>
		<string>ARGV.each { |arg| puts arg }</string>
	</array>
</dict>

こんな記述を追加します。arrayは入力値の引き渡し方法のデフォルトを記述します。他の言語での処理を参考に記述してみました。あと、他の言語のarrayには、&#09;とか&#10;という謎の文字列がありますが、これはタブとラインフィードのXMLの実体参照です。別に気にしなくていいです。

つーかRubyもデフォルトで入れておいて欲しいね、ぶー!!