1

私は現在、レポからコードをダウンロードし、コードで rspec を実行し、RSpec からの結果を処理する sinatra フレームワークを実行しようとしています。ただし、別のアプリケーションから 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>'

大量の出力を実行した後、基本的には、bundle exec を実行する前に正しいディレクトリに切り替えずに ruby​​ を煮詰めます。私は成功せずに動作させるためにあらゆることを試みました...ディレクトリを変更しても、私が望むアプリケーションではなく、私が使用しているアプリケーションで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>'
4

1 に答える 1

2

Bundlerbundle install --binstubs用の binstub を生成し、rspec の代わりに binstub を使用して、適切な rspec と Gemfile が常に使用されるようにします。

http://gembundler.com/v1.2/man/bundle-exec.1.html (binstub の詳細については、オンラインの man ページを参照)

于 2013-01-23T09:01:34.617 に答える