为什么我应该使用bundle exec 而不是只运行命令?

它是使用bundle exec 而不仅仅是命令来运行可执行文件的众所周知的最佳实践。 但似乎没有人能解释为什么通过bundle exec运行执行程序更好。 所以我问你为什么,……?

如果您正在使用bundle exec而不是仅执行命令,则bundler会对您的环境变量进行一些更改,因此可以成功访问Gemfile中列出的所有gem。 你可以看到http://gembundler.com/man/bundle-exec.1.html 。 此外,bundler可以将gem安装到自定义路径而不是系统位置,如果您使用bundle exec它们仍然可以访问require 。 另见http://gembundler.com/man/bundle-install.1.html

因此,一般来说,答案是:将您的gem集与系统gem隔离开来,并在自定义gem位置的情况下使它们可用于您的应用程序。