2017-05-24 13 views
0

私はGithubからアプリをコピーしました。 rbenvを使用して適切なバージョンのRubyをインストールしました。私はgem install bundlerでバンドラーをインストールし、bundle install --path vendor/bundleを実行しました。すべての宝石は、アプリのvendor/bundleディレクトリにインストールされていました。今私は、なぜrails sコマンドが機能しませんが、bundle exec rails sが機能するのだろうか? rspecコマンドでも同じです。これは、vendor/bundleディレクトリに宝石をインストールしたためですか?よくわかりません。"rails s"は動作しませんが、 "bundle exec rails s"は動作します。どうして?

また、私がgem listを実行すると、宝石はほんの少ししか得られませんが、vendor/bundleディレクトリにはたくさんあります。

なぜgem listコマンドでvendor/bundleディレクトリからの宝石が表示されないのですか。bundle execでコマンドを実行する必要がある理由を教えてください。ありがとうございました!

答えて

1

bundle execコマンドを使用する目的は、現在のバンドル内で実行するコマンド、またはベンダのディレクトリ内にインストールされたgemを検索/検索することです。

新しいレール(v5)を使用している場合は、binディレクトリのexecuteableコマンドをコピーするbinstubsを参照してください。あなたは、単に

ビン/レール・サーバに

を呼び出すことができるようにこれは、我々が現在持っている展開ソリューションが続いているのと同じアプローチです。 .bundleディレクトリを作成するので、毎回バンドルインストールを行う必要はありません。

関連する問題