使用bundle exec <command>
而不仅仅是命令来运行可执行文件是众所周知的最佳实践。但似乎没有人能解释为什么通过bundle exec
更好地运行可执行文件。所以我问你为什么,......?
答案 0 :(得分:4)
如果您正在使用bundle exec而不是仅执行命令,则bundler会对您的环境变量进行一些更改,因此可以成功访问Gemfile中列出的所有gem。你可以看到http://gembundler.com/man/bundle-exec.1.html。此外,如果您使用bundle exec
,捆绑商可以将宝石安装到自定义路径而不是系统位置,然后仍然可以访问 require 。另请参阅http://gembundler.com/man/bundle-install.1.html
因此,一般来说,答案是:将您的宝石集与系统宝石隔离开来,并在自定义宝石位置的情况下使它们可用于您的应用程序。