0

我知道捆绑安装有不止一个扩展,但具体是做什么的:

 bundle install --binstubs

与正常相比

 bundle install 

?

4

1 回答 1

1

不确定在这种情况下扩展是什么意思,但不同之处在于它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 文档在解释这一点时非常糟糕。

于 2013-01-23T23:00:01.433 回答