我知道捆绑安装有不止一个扩展,但具体是做什么的:
bundle install --binstubs
与正常相比
bundle install
?
不确定在这种情况下扩展是什么意思,但不同之处在于它bundle install --binstubs
创建了一个./bin
目录,并在该目录中放置了指向 gem 安装的任何二进制文件的链接。例如,rspec gem 带有一个rspec
二进制文件。为了确保在命令行中键入 RSpec 时运行正确版本的 RSpec,可以将项目特定bin
目录放在 shell 的可执行搜索路径中。
Bundler 在这里试图解决的问题是您可以安装 gem 的多个版本(如 rspec),并且您的 shell 需要一种方法来找到正确的版本来执行。一种解决方案是使用--binstubs
和更改您的 PATH 以在开头包含它(相对路径,这不是世界上最好的主意,或者绝对路径,您必须为每个项目配置)。
替代方法--binstubs
是在所有 gem 命令前加上bundle exec
(like bundle exec rspec
),以确保根据项目的 Gemfile 运行适当的版本,或者使用 RVM 和 gemsets。
这有点复杂,Bundler 文档在解释这一点时非常糟糕。