我可以使用rails
运行bundle exec rails
,不是吗?那和bin/rails
之间的区别是什么?还有bundler
的{{1}}功能,这使得事情变得更加复杂。简而言之,我应该以哪种方式运行binstubs
应用程序的可执行文件,以及为什么?
答案 0 :(得分:3)
https://github.com/sstephenson/rbenv/wiki/Understanding-binstubs
前言,强调我的:
当您在项目目录中运行rspec时,rbenv可以确保它将使用为该项目配置的Ruby版本执行。 然而,没有什么能确保RSpec的正确版本被激活;实际上,即使您的项目依赖于旧版本,RubyGems也只会激活最新的RSpec版本。在项目的上下文中,这是不受欢迎的行为。
这就是捆绑执行官如此重要的原因。 确保激活依赖项的正确版本,确保一致的ruby运行时环境。但是,总是要编写bundle exec是一件痛苦的事。
回答你的问题: “我可以使用bundle exec rails运行rails,不是吗?这个和bin / rails有什么不同呢?”
(来自同一指南)
经常需要捆绑exec。它确保激活依赖项的正确版本,确保一致的ruby运行时环境。但是,
bundle exec
总是要写作是一种痛苦。
这是“bundlers binstubs feature”的用武之地:
Bundler可以为项目包中包含的可执行文件安装binstub:
bundle install --binstubs
现在可以使用
轻松运行RSpecbin/rspec
“我应该以哪种方式运行rails应用程序的可执行文件,以及为什么?”
我们鼓励您在项目的版本控制中检查这些binstub,以便您的同事可以从中受益。