捆绑exec rspec VS rspec规范

Eli*_*jah 6 rspec2 ruby-on-rails-3

Ruby 1.9.2 Rails 3.1

这是问题bundle exec rspec spec/不起作用,但rspec spec/运行正常.

当我运行时c:\RailsInstaller\work\apptwit>bundle exec rspec spec/(这是我的应用程序所在的目录,因此不需要指定规范的路径)我收到了

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'
Run Code Online (Sandbox Code Playgroud)

/ spec目录中存在spec_helper.rb.

所以基本上我有两个问题:

  1. 为什么不bundle exec rspec spec/工作而rspec spec/没有问题?

  2. 这两个命令有什么区别?

Jan*_*Jan 22

看看这个答案.bundle exec更改您的$PATH,或%PATH%在Windows的情况下.因此,通过使用bundle exec rspec您调用RSpec中指定的版本Gemfile.rspec在没有Bundler的情况下执行你的那个$PATH.

您看到的错误可能是由于您的RSpec版本与您$PATH正在使用的Rails版本不兼容.Bundler(with bundle exec rspec)安装和执行的版本兼容并且工作正常.