1

我正在关注这个Rails 教程部分和这个 RVM 文档页面。我的安装是全新的 ( RVM 1.17.3),所以,如果我正确理解了教程和 RVM 文档:

  • RVM 和 Bundler 应该默认集成,我不需要配置任何东西。(无需运行bundle --bunstubs?)

  • 我不需要输入“bundle exec”

我没看错吗?

我在我的应用程序中看不到bundler_stubs/orbin/目录。

有没有办法让我检查它是否设置正确,所以我可以确定bundle exec没有必要?


编辑:

运行which产生以下结果:

$ bundle show rspec    
$ /home/{username}/.rvm/gems/ruby-1.9.3-p327@tutorial/gems/rspec-2.11.0
$ which rspec
$ /home/{username}/.rvm/gems/ruby-1.9.3-p327@tutorial/bin/rspec

这似乎暗示我应该继续使用bundle exec,因为它们不一样?

4

2 回答 2

2

RVM 默认安装 gem https://github.com/mpapis/rubygems-bundler,它会检测你是否在上下文中Gemfile并在需要时自动加载 bundler,相当于手动输入bundle exec.

于 2012-12-21T14:25:10.417 回答
1

bundle exec是一个 bundle 命令,用于在当前 bundle 的上下文中执行脚本(来自您目录的 Gemfile 的那个)。rspec filename.rb是脚本。

所以 bundle exec bundle exec rspec filename.rb在当前包的上下文中使用命令rspec filename.rb执行 rake 脚本。

至于“为什么?” 我将从捆绑器文档中引用:

在某些情况下,如果可执行文件恰好安装在您的系统中并且没有引入任何与您的捆绑包冲突的 gem,则运行不带 bundle exec 的可执行文件可能会起作用。然而,这是不可靠的并且是相当大的痛苦的来源。即使它看起来可以正常工作,但将来或在另一台机器上可能无法正常工作。

有关详细信息,请参阅http://gembundler.com/man/bundle-exec.1.html

于 2012-12-21T06:30:10.627 回答