什么添加了rails应用程序的bin目录?

时间:2015-02-06 12:16:52

标签: ruby-on-rails bundler

我可以使用rails运行bundle exec rails,不是吗?那和bin/rails之间的区别是什么?还有bundler的{​​{1}}功能,这使得事情变得更加复杂。简而言之,我应该以哪种方式运行binstubs应用程序的可执行文件,以及为什么?

1 个答案:

答案 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
  

现在可以使用bin/rspec

轻松运行RSpec

“我应该以哪种方式运行rails应用程序的可执行文件,以及为什么?”

  

我们鼓励您在项目的版本控制中检查这些binstub,以便您的同事可以从中受益。