What is the difference between “rails s” and “bundle exec rails s”?

后端 未结 3 1461
小鲜肉
小鲜肉 2020-12-28 13:56

What is the difference between rails s and bundle exec rails s? People seem to say that bundle exec rails s is better, but why? Meanwh

相关标签:
3条回答
  • 2020-12-28 13:58

    http://bundler.io/v1.5/rails3.html - Rails 3 comes with baked in support with bundler

    0 讨论(0)
  • 2020-12-28 14:10

    bundle exec ensures you're triggering commands from gems in your Gemfile.

    may not be that useful for rails command but is definitely needed for rake for instance.

    0 讨论(0)
  • 2020-12-28 14:16

    Sometimes when you install a gem it comes with an executable/binary as well. Examples of these include: rails, rake, rspec, pry, etc. However, when you have multiple versions of a gem installed you then will have multiple versions of these executables sitting around. So if you want to execute one of these binaries for a given rails app you may need to disambiguate which executable you want -- the one for rake v10.1 or the one for rake v10.2, for example. Since the answer to this is discoverable by the version of the gem you have in your Gemfile.lock file (which is created by bundler), bundler supplies a command for executing a binary based on the version that is specified in the current project's Gemfile.lock. This command is bundle exec <command>.

    So for most commands you'll want to run bundle exec <command> to make sure you're running the right version for your project (and also to make sure that all dependencies are also loaded from the correct versions specified in your Gemfile.lock). The one notorious exception to this rule is the rails command. The reason being that the first thing the rails command does is load up bundler and check which version of the command to execute. So you'd really just be slowing yourself down to involve bundler in the first place when running the rails command.

    So, in short, use:

    rails server
    rails console
    bundle exec <some command that isn't rails>
    
    0 讨论(0)
提交回复
热议问题