问题描述
Ruby 1.9.2 轨道 3.1
Ruby 1.9.2 Rails 3.1
这里是问题 bundle exec rspec spec/
不起作用,但 rspec spec/
运行正常.
Here is the problem bundle exec rspec spec/
does not work, but rspec spec/
runs ok.
当我运行 c:\RailsInstaller\work\apptwit>bundle exec rspec spec/
(这是我的应用所在的目录,所以不需要指定 spec 的路径)我收到
When I run c:\RailsInstaller\work\apptwit>bundle exec rspec spec/
(this is the directory where my app is located, so the path to spec would not need to be specified)I receive
c:/RailsInstaller/work/apptwit/spec/controllers/pages_controller_spec.rb:1:in `require': no such file to load -- spec_he lper (LoadError)
from c:/RailsInstaller/work/apptwit/spec/controllers/pages_controller_spec.rb:1:in `<top (required)>'
from C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/rspec-core-2.7.1/lib/rspec/core/configuration.rb:459:i
n `load'
from C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/rspec-core-2.7.1/lib/rspec/core/configuration.rb:459:i
n `block in load_spec_files'
from C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/rspec-core-2.7.1/lib/rspec/core/configuration.rb:459:i
n `map'
from C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/rspec-core-2.7.1/lib/rspec/core/configuration.rb:459:i
n `load_spec_files'
from C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/rspec-core-2.7.1/lib/rspec/core/command_line.rb:18:in
`run'
from C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/rspec-core-2.7.1/lib/rspec/core/runner.rb:80:in `run_i
n_process'
from C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/rspec-core-2.7.1/lib/rspec/core/runner.rb:69:in `run'
from C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/rspec-core-2.7.1/lib/rspec/core/runner.rb:10:in `block
in autorun'
/spec 目录和 spec_helper.rb 一样存在.
/spec directory exists as exists spec_helper.rb in it.
所以基本上我有两个问题:
So basically I have 2 questions:
为什么
bundle exec rspec spec/
不起作用而rspec spec/
没有问题?
Why doesn't
bundle exec rspec spec/
work whilerspec spec/
has no problems?
这两个命令有什么区别?
What is the difference between those two commands?
推荐答案
看看 这个答案.bundle exec
更改您的 $PATH
或 %PATH%
在 Windows 的情况下.因此,通过使用 bundle exec rspec
,您调用的是 Gemfile
中指定的 RSpec 版本.rspec
在没有 Bundler 的情况下运行会执行您的 $PATH
中的那个.
Take a look at this answer. bundle exec
changes your $PATH
, or %PATH%
in case of Windows. As a result, by using bundle exec rspec
you're calling the RSpec's version which is specified in your Gemfile
. rspec
ran without Bundler executes the one in your $PATH
.
您看到的错误可能是由于您的 $PATH
中的 RSpec 版本与您正在使用的 Rails 版本不兼容造成的.Bundler 安装和执行的版本(使用 bundle exec rspec
)兼容并且工作正常.
The error you see might be caused by the fact that the RSpec version in your $PATH
is incompatible with Rails version you're working with. The version installed and executed by Bundler (with bundle exec rspec
) is compatible and works fine.
这篇关于捆绑执行 rspec VS rspec 规范的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!