XCodeとRubyの思わぬ関係

Titaniumで構築したiPhoneアプリの実機インストールがうまく行かないので原因を探ったら、なんとMac標準のRubyを無効にしているせいだったという話。XCodeのプラグインがRubyで書かれてたりするんですな。

失敗のビルドログを見たら以下のような箇所を発見。

error: can't exec '/Developer/Library/Xcode/Plug-ins/CoreBuildTasks.xcplugin/Contents/Resources/copyplist' (No such file or directory)

copyplistってなんじゃらほい。
ぐーぐる先生に尋ねると以下のページを教えてくれた

原因は

  • /Developer/Library/Xcode/Plug-ins/CoreBuildTasks.xcplugin/Contents/Resources/copyplist

の一行目で

#!/usr/bin/ruby

とRubyのパスを指定しているので、ここのパスにRubyがないと動かないというわけだった。
上記のページではシンボリックリンクを張って解決しているが、これをやってもRubyのバージョンが違うせいかライブラリの利用ができないようだったので、シェバングを以下のように書き換えて対応した。

#!/usr/bin/env ruby

これで無事動いた。
XCodeの再インストールでまた動かなくなりそうだけど。

まあ今はRVMあるからMac標準のRuby復活させるというのが一番いい解だろう。

しかしこんなことしなくてもObjective-Cで書いたアプリは普通に動いてたんだけど、copyplistってどういう条件で使われるのだろうか。

前の記事

既存のTableViewの行を取得する

次の記事

CoffeeScriptの@ではまった話