1

注:私は自分の環境でこの問題を修正/ハッキングしました(詳細は以下を参照)が、何が起こったのかを理解し、これが他の人に起こった場合のリソースを提供したいと思います。うまくいけば、これはStackのOKな使用法です。:)

マイケル・ハートルのRuby on Railsチュートリアル(第2版)を読んでいて、今日最初の大きな問題にぶつかりました。

第3章のセクション3.6.1「BundleExecの削除」では、次のコマンドを実行して、Ruby Version Manager(RVM)にすべてのプロジェクトのパスを「調整」させ、bundleexecの入力を頻繁に停止できるようにしまし

$ rvm get head && rvm reload
$ chmod +x $rvm_path/hooks/after_cd_bundler
$ cd /path/to/project
$ bundle install --binstubs=./bundler_stubs

..そして出来上がり!bundlervm 、または他の多くの一般的な関数を実行できなくなりました(Railsはまだ初めてなので、これらのコマンドがどのような関係や起源を共有しているかわかりません)。私はWindowsから来たので、完全に再起動しました。それは、たわごとがファンキーになったときに行うことですが、問題は解決しませんでした。BLLARG!

エラーは、bundle、rvmなどでも同じです。

-bash:rvm:コマンドが見つかりません

(注:また、この頃、xcode-select -switch from / Developerから他のより長くクレイジーなパスに変更しました-これが役割を果たす可能性があると思われる場合は、このリンクを参照してください)

私はいくつか掘り下げましたが、これは私の$ PATHと関係があるかもしれないことがわかりました。それで、重要な場合は、ここに私のenv$PATHがあります。

PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin

PATHが間違っているように見えました-そこにいくつかのRVMのもの、またはそこにいくつかのバンドラーのものがあるはずでした-それが変更のポイントでした!-それで私はもう少し掘り下げて、私のファイルシステムがまだ無傷で見栄えが良いことを発見しました(RVMがまだインストールされている、Gemfileがまだ正しいなど)、それでも私のターミナルセッションではRubyのバージョンが古い(v1.8.7)、 Railsもインストールされていなかったため、セッションまたはRVM固有の問題のように見え始めました。

さらに掘り下げてみたところ、ターミナルで次のコマンド( 〜/ .bash_loginから)を手動で実行すると、すべてが機能することがわかりました。

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

はい!

ターミナルを閉じて再度開くと問題が再発しましたが、上記のコマンドを再実行すると問題は再び修正されました。明らかに、これはターミナルに正しくロードされていない問題ですよね?

上記のコマンドを〜/ .bash_profile(プロンプトスタイリング以外は以前は空でした)に移動しましたが、問題は完全に修正されました。ターミナルを閉じて再開することができ、レースに出かけます。

しかし何が起こった?!〜/ .bash_profileではなく〜/ .bash_loginにそのコマンドがあったのはなぜですか?何が起こっているのかを理解して、n00blyを減らし、他の人が私が今行った2時間のGoogle検索の冒険を回避できるようにしたいと思います。:)

ありがとう!

環境:

  • Mac OS X 10.7.4(ライオン)
  • ターミナル(ビルトイン)
  • 崇高なテキスト2
4

2 に答える 2

0

ええと、ログインスクリプトは異なる時間に実行されます。この質問でいくつかの詳細を見ることができます。しかし、これによると、~/.bash_loginはのエイリアスです~./bash_profile。ですから、なぜ一方があなたのために実行され、もう一方が実行されないのかわかりません。

しかし、私のシステム(Mac OS X 10.6)にはファイルがありません~/.bash_login。そして、私はrvmとbundlerの両方を持っています。

おそらく関連している-私はHomebrewをインストールしていて、それは/usr/local/bin以前に持っていた私の道を示唆している/usr/bin。これは、自作でインストールされたアイテムと私が自分でインストールしたアイテムがシステムでインストールされたアイテムよりも優先されるようにするためです。

于 2012-05-15T23:35:46.083 に答える
0

ファイルの1つを選択し、2番目のファイルにマージします。

RVMは両方のファイルをチェックします。1つにRVMのロードが含まれていれば十分であり、機能します。

私のgemrubygems-bundlerbundle execを使用して削除するには、bundler 1.3に統合されるため、追加のツール/スクリプト/トリックは必要ありません。

于 2012-05-16T02:51:58.333 に答える