我正在尝试运行一个sinatra框架,从repo下载代码,在代码上执行rspec,然后处理来自RSpec的结果。但是,当我从另一个应用程序调用它时,我无法运行rspec。
我一直收到以下错误:
/Users/dir/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.1.5/lib/bundler/rubygems_integration.rb:147:in `block in replace_gem': rspec-core is not part of the bundle. Add it to Gemfile. (Gem::LoadError)
from /Users/dir/.rvm/gems/ruby-1.9.3-p194/bin/rspec:22:in `<main>'
在运行大量输出之后,它基本上归结为ruby而不是在执行bundle exec之前切换到正确的目录。我已经尝试了任何事情让它工作没有成功......似乎即使我更改目录,它将继续尝试在我正在运行的应用程序上运行RSpec,而不是我想要的那个做到这一点。
Dir.chdir('../target_app'){
exe = "bundle exec rspec spec"
`#{exe}`
}
我也尝试过这样的反引号,exec和system()但没有成功。
`cd ../target_app && bundle exec rspec spec`
我也试过像ChildProcess这样的事情没有成功:
p = ChildProcess.build('bundle', 'exec', 'rspec', 'spec')
p.io.inherit!
p.cwd = '../target_app'
p.start
如何解决这个问题的任何线索或帮助将不胜感激!
编辑:
我也试过bundle install --binstub --path vendor
使用此代码:
Dir.chdir('../target_app'){
puts `pwd`.chomp
exe = "bin/rspec spec -o ../tmp.txt"
puts exe
`#{exe}`
}
我得到了这个输出:
/Users/me/dev/target_app
bin/rspec spec -o ../tmp.txt
/Users/me/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.1.5/lib/bundler/rubygems_integration.rb:223:in `block in replace_bin_path': can't find executable rspec (Gem::Exception)
from bin/rspec:16:in `<main>'
答案 0 :(得分:2)
为Bundler bundle install --binstubs
生成binstub并使用binstub而不是rspec,以便始终使用正确的rspec和Gemfile。
http://gembundler.com/v1.2/man/bundle-exec.1.html(有关该在线手册页中binstub的更多信息)