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ってどういう条件で使われるのだろうか。