正確在 XCode 4 上使用 MacRuby + RubyGems

昨天突然有個 idea 想做成 app ,拉起 MacRuby 和 XCode 寫起來。

最近版本的 MacRuby 跟 XCode 的整合已相當不錯,基本上安裝好後就可以用了,然而我還是遇上了一個 gem 的問題:

/Users/siuying/Library/Developer/Xcode/DerivedData/OOOO-dduzvbnelkxkfwbejosjlbcndmpk/Build/Products/Debug/OOOO.app/Contents/Resources/Controller.rb:10:in `<main>': no such file to load -- rdiscount (LoadError)

XCode 找不到我的 rdiscount gem。當然,事前我已經執行指令 macgem install rdiscount安裝了 rdiscount,究竟為何 XCode 找不到呢?答案是 GEM_PATH 和 GEM_HOME。因為這台電腦之前已經安裝了不同的 Ruby ,再安裝 macruby 後,用 macgem 雖然可以正確安裝 gem ,但 XCode 就找不到。

解決方案是在 XCode 的 Scheme 上設定正確的 GEM_PATH 和 GEM_HOME。

預設的這兩個 environment variable 大概已被其他 ruby 用了,怎樣找到 MacRuby 的 GEM_HOME 和 GEM_PATH?最簡單的方法是改用 rvm

  1. 安裝好 rvm 後安裝 macruby:rvm install macruby
  2. 轉到 macruby 環境 rvm macruby
  3. 確認 GEM_PATH 和 GEM_HOME echo $GEM_HOME; echo $GEM_PATH
  4. 再安裝你想要的 gem gem install rdiscount

再到 XCode Run 就可以正確執行了。