40

我在的. 所以,我不需要 bundler 来生成 binstubs。但是捆绑器无论如何都会这样做。plugins=(git bundler).zshrc

➜ 捆绑
使用 rake (0.9.2.2)
...
您的捆绑包已完成!使用 `bundle show [gemname]` 查看捆绑的 gem 的安装位置。
✗ ls bin
erubis haml nokogiri rails rake2thor rdoc resque-web sass scss thor tt
守卫 html2haml rackup rake rdiscount resque ri sass-convert 薄倾斜

为什么会生成 binstubs - 我没有通过要求它们的选项。至少,我不认为我是:

➜ 哪个捆绑
/Users/david/.rbenv/shims/bundle
➜ 猫 /Users/david/.rbenv/shims/bundle
#!/usr/bin/env bash
设置-e
导出 RBENV_ROOT="/Users/david/.rbenv"
exec rbenv exec "${0##*/}" "$@"

我的也没有~/.bundle/config

请帮我把卡波什放在不需要的垃圾箱上!

4

3 回答 3

91

Bundler 在每个应用程序的基础上生成 binstub。如果您bundle install --binstubs在过去的某个时间运行过,Bundler 会记住这一点,并在您再次运行 install 时生成 binstubs。要禁用它们,您可以运行bundle install --no-binstubs或运行rm -rf .bundle/config。无论哪种方式,这都会禁用 binstub 生成。

于 2012-07-26T19:37:28.547 回答
34

该选项--no-binstubs不会删除 bundler 1.5.3 中记住的选项

而是使用bundle config --delete bin, 或编辑.bundle/config并从文件中删除 BUNDLE_BIN 行,然后从本地 binstubs 目录中删除不需要的文件。

例子:

ianh$ cat .bundle/config 
--- 
BUNDLE_CACHE_ALL: "true"
BUNDLE_BIN: bin

ianh$ bundle install --no-binstubs
Using rake (10.1.1)
... etc etc ...
Using bundler (1.5.3)
Updating files in vendor/cache
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.

ianh$ cat .bundle/config 
--- 
BUNDLE_CACHE_ALL: "true"
BUNDLE_BIN: bin

# see ... it didn't remove the option.

ianh$->(15) bundle config --delete bin

ianh$ cat .bundle/config 
--- 
BUNDLE_CACHE_ALL: "true"

ianh$ bundle -v
Bundler version 1.5.3
于 2014-03-23T10:38:06.017 回答
3

如果您在更改$HOME/users/.bundle/config文件后仍然得到 binstubs,则很可能您在某个地方有另一个配置。为了弄清楚在哪里执行以下命令

$ bundle config
Settings are listed in order of priority. The top value will be used.
gem.coc
Set for the current user (/Users/username/.bundle/config): "true"

gem.mit
Set for the current user (/Users/username/.bundle/config): "true"

gem.test
Set for the current user (/Users/username/.bundle/config): "rspec"

build.libv8
Set for the current user (/Users/username/.bundle/config): "--without-system-v8"

disable_multisource
Set for the current user (/Users/username/.bundle/config): "true"

bin
Set for your local app (/Users/username/apps/ruby/rails_application/.bundle/config): "bin"
Set for the current user (/Users/username/.bundle/config): "false"

您正在寻找的是bin信息。此信息为您提供了包含配置信息的文件的路径。为了解决这个问题,你可以做的是进入配置文件并删除说明这BUNDLE_BIN: bin一点的行或将 bundle bin 更改为 falseBUNDLE_BIN: 'false'

vi /Users/username/apps/ruby/rails_application/.bundle/config

如果你bundle config再次运行不应该看到 bin 配置,或者你应该看到它被设置为 false。在这个例子中,我将我的设置为 false,所以我得到了这个新结果。

bin
Set for your local app (/Users/username/apps/ruby/gscs_ci/.bundle/config): "false"
Set for the current user (/Users/username/.bundle/config): "false"

需要注意的是,每个响应 bundle 的 ruby​​ 应用程序都可以有自己的自定义 .bundle/config

如果你更新所有.bundle/config你不应该有新的文件在你 ruby​​ 时在 bin 目录中创建bundlebundle install

有时会发现其他东西,它认为 false 是一个目录,因此最好删除BUNDLE_BIN可能更简单的行。

于 2016-02-25T19:12:04.790 回答