Ruby 如何不必键入;bundle exec“;使用捆扎机料仓;克鲁比?
我使用chruby来管理我的Ruby版本,并使用Bundler的binstubs来避免键入“bundle exec”。我遇到了一些我不完全理解的问题。以下是我尝试在(Rails 4,Ruby 2.2.2)应用程序中运行测试套件时得到的结果:Ruby 如何不必键入;bundle exec“;使用捆扎机料仓;克鲁比?,ruby,rspec,bundle,zsh,chruby,Ruby,Rspec,Bundle,Zsh,Chruby,我使用chruby来管理我的Ruby版本,并使用Bundler的binstubs来避免键入“bundle exec”。我遇到了一些我不完全理解的问题。以下是我尝试在(Rails 4,Ruby 2.2.2)应用程序中运行测试套件时得到的结果: $ rspec /Users/duncanmalashock/.rubies/ruby-2.2.2/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
$ rspec
/Users/duncanmalashock/.rubies/ruby-2.2.2/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- simplecov (LoadError)
from /Users/duncanmalashock/.rubies/ruby-2.2.2/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from /Users/duncanmalashock/ruby_projects/platform/spec/spec_helper.rb:3:in `<top (required)>'
from /Users/duncanmalashock/.rubies/ruby-2.2.2/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from /Users/duncanmalashock/.rubies/ruby-2.2.2/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from /Users/duncanmalashock/ruby_projects/platform/spec/controllers/admin/admin_controller_spec.rb:1:in `<top (required)>'
from /Users/duncanmalashock/.gem/ruby/2.2.2/gems/rspec-core-3.3.2/lib/rspec/core/configuration.rb:1327:in `load'
from /Users/duncanmalashock/.gem/ruby/2.2.2/gems/rspec-core-3.3.2/lib/rspec/core/configuration.rb:1327:in `block in load_spec_files'
from /Users/duncanmalashock/.gem/ruby/2.2.2/gems/rspec-core-3.3.2/lib/rspec/core/configuration.rb:1325:in `each'
from /Users/duncanmalashock/.gem/ruby/2.2.2/gems/rspec-core-3.3.2/lib/rspec/core/configuration.rb:1325:in `load_spec_files'
from /Users/duncanmalashock/.gem/ruby/2.2.2/gems/rspec-core-3.3.2/lib/rspec/core/runner.rb:102:in `setup'
from /Users/duncanmalashock/.gem/ruby/2.2.2/gems/rspec-core-3.3.2/lib/rspec/core/runner.rb:88:in `run'
from /Users/duncanmalashock/.gem/ruby/2.2.2/gems/rspec-core-3.3.2/lib/rspec/core/runner.rb:73:in `run'
from /Users/duncanmalashock/.gem/ruby/2.2.2/gems/rspec-core-3.3.2/lib/rspec/core/runner.rb:41:in `invoke'
from /Users/duncanmalashock/.gem/ruby/2.2.2/gems/rspec-core-3.3.2/exe/rspec:4:in `<top (required)>'
from /Users/duncanmalashock/.gem/ruby/2.2.2/bin/rspec:23:in `load'
from /Users/duncanmalashock/.gem/ruby/2.2.2/bin/rspec:23:in `<main>'
您的问题是bundler已在项目本地安装了
simplecov
,并且您正在尝试运行系统全局rspec
。这将在SystemRuby库位置中查找simplecov
。使用Ruby语言版本管理器不会改变这种行为。它将只使用版本化ruby的库位置
如果您希望您的版本化Ruby同时使用rspec
和simplecov
,那么您需要使用提供的任何与gem
等效的工具在版本化Ruby中安装simplecov
我不知道您为什么认为运行
bundle exec
非常重要。可以始终在.bashrc
或.bash\u profile
中创建别名。我有两个bundle exec,一个是be
,另一个是bexec
。我还有bundle exec rails
(brails
)和bundle exec rake
(break
)的别名。在实践中,我发现这些命令与运行常规命令几乎没有什么不同 只需在系统中安装simplecov
gem(只需执行:gem安装simplecov
),然后再次运行测试。它会起作用的
但是,更好的做法是使用bundle exec
运行rake或rspec命令。因为这样,您可以确保命令在Gemfile
的上下文中运行
您可以将这些别名添加到.zshrc
文件中:
alias ber="bundle exec rspec"
alias be="bundle exec"
然后,像这样运行rspec测试:
ber
或者
邓肯,我的回答有用吗?如果你还有其他问题,请告诉我。
ber
be rspec