Techioz Blog

「rails s」は機能しませんが、「bundle exec Rails s」は機能します。なぜ?

概要

すべての gem は、アプリのベンダー/バンドル ディレクトリにインストールされました。ここで疑問に思うのですが、なぜ Rails s コマンドは機能しないのに、bundle exec Rails s は機能するのでしょうか? Githubからアプリをコピーしました。 rspecコマンドでも同様です。rbenv を使用して適切なバージョンの Ruby をインストールしました。 これはgemをvendor/bundleディレクトリにインストールしたためでしょうか?gem install Bundler でバンドラーをインストールし、bundle install –path Vendor/bundle を実行しました。私は混乱しています。

また、gem list を実行すると、少数の gem しか取得できませんが、vendor/bundle ディレクトリには大量の gem が存在します。

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

解決策

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

新しいレール (v5) を実行している場合は、bin ディレクトリで実行可能なコマンドをコピーする binstub を確認してください。簡単に電話できるように

ビン/レールサーバー

これは、現在当社が提供している導入ソリューションで採用されているのと同じアプローチです。 .bundle ディレクトリが作成されるため、毎回バンドル インストールを行う必要がなくなります。