質問: Rails関連のコマンドを実行するときに、 ``` $ bundle exec rails s ``` とするのと、 ``` $ rails s ``` と実行するのでは何が違うのでしょうか? 入門書などでは`rails s` の表記をしているものが多いですが、実開発ですと`bundle exec rails s`としている場合が多いです。 どちらのコマンドを実行してもうまく動いているようにみえるのですが、この2つのコマンドの違いがありましたら教えていただきたいです。 ### バージョン Ruby 2.3.1 bundle 1.13.7 Rails 5.0.1
回答: `rails`コマンドの場合**だけは**、`rails`も`bundle exec rails`も、同じ動作となります。Railsそのものが、プロジェクトルートを読み込んで、適切な実行を行ってくれるからです(参考)。ただし、Rubyに`rails` gemを入れていない(Bundler管理の分しかない)環境では、`rails`コマンドが存在しないので、実行がそもそもできません(`bundle exec rails` もしくは`bin/rails`となります)。 一般には、`xxx`コマンドと`bundle exec xxx`で実行されるものは異なってきます。