12

xcode には、Ruby スクリプトを実行する「スクリプトの実行」ビルド フェーズがあります。ただし、xcode は、最新バージョンではなく、デフォルトの mac 1.8 バージョンの ruby​​ を使用して実行しようとしているようです。スクリプトが gem を必要とする場合、require エラーで失敗し、エラーのパスは /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/

明らかに、そのパスの 1.8 は私を疑わしくしています。

ターミナルを開いてコマンドを実行すると、RVMを使用してインストールしてデフォルトとして設定したruby -vものが正しく返されます。2.0.0p0

Xcode を適切な場所で表示するにはどうすればよいですか? または、このエラーを誤解していますか?

アップデート:

もう少し情報を提供するために、コンパイラがスローしている正確なエラーは次のとおりです。

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- json (LoadError)
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `require'
from /Volumes/Macintosh HD/Documents/Projects/WesternMusicElements/WesternMusicElements/Ruby/NoteCollectionParser.rb:9
Command /bin/sh failed with exit code 1
4

7 に答える 7

2

Xcode で環境変数 IIRC を出力する場合、 Xcode による設定は、通常の端末セッションでロードするものと$PATHは異なります。$PATH

これにより、(少なくとも) 2 つの方法で問題を解決できます。

  1. スクリプトを編集して、rvm でインストールされた ruby​​ を直接指すようにすることができます。これは、スクリプトが複数のシステムで動作する必要がある場合に適しています (rvm が約束する動作に反する場合でも)。

  2. この質問での Chris Hanson の回答に対する Peter Hosey のコメントによると、~/.MacOSX/environment.plist起動するすべてのプロセスに適用される環境変数を設定できます。

于 2013-04-06T20:23:29.523 に答える
1

これを使用して、デフォルトのシステムインタープリター以外のインタープリターで Xcode を実行しました。

  1. Xcode が開いている場合は終了し、ターミナルに移動します。
  2. 使用する rvm をアクティブにします。
    rvm use 2.0.0p0
  3. 次に、ターミナルから Xcode を開きます。
    open -a Xcode

これをテストするには、ビルドにインタープリターのバージョンまたは利用可能な gem を記録するものを含めることができます。

于 2013-04-06T17:43:49.743 に答える
1

私も似たような状況でしたが、実行中のスクリプトに、システムにインストールされた Ruby を参照するシバン行がありました。

#!/usr/bin/ruby

危険かもしれない私の解決策は、/usr/bin/rubyRVM によってインストールされた Ruby へのシンボリック リンクに置き換えることでした。

私が取った手順は次のとおりです。

  1. マルチユーザー RVM をインストールします ( https://rvm.io/rvm/installsudoのオプション) 。
  2. rvm設定アプリ ([設定] > [ユーザーとグループ]) でグループに自分を追加します。
  3. ログアウトして再度ログインし、OS がグループ メンバーシップを尊重していることを確認します。
  4. コマンドラインから必要な gem をインストールします。私はrvmグループに属しているおかげで RVM マネージャーになっているので、これは の下のものに影響し/usr/local/rvmます。
  5. 邪魔にならないように移動/usr/bin/rubyし、代わりに RVM のデフォルトの Ruby をシンボリック リンクします。(これは危険な部分です。プログラムがシステムにインストールされたバージョンを使用すると想定すると、問題が発生する可能性があります。)

シンボリックリンクを置き換えるには、次のようにしました。

sudo mv /usr/bin/ruby /usr/bin/system_ruby
sudo ln -s /usr/local/rvm/rubies/default/bin/ruby /usr/bin/ruby

これを実行した後 (Xcode が実行されていない状態で)、次に Xcode でプロジェクトをビルドしたときに、スクリプトは RVM でインストールした Ruby を使用しました。

于 2013-08-22T19:17:56.160 に答える