В настоящее время я пытаюсь запустить инфраструктуру Sinatra, которая загружает код из репо, выполняет 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>'
После запуска тонны вывода он в основном сводится к тому, что рубин не переключается в правильный каталог перед выполнением пакета 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>'