0

ここでの目標は、PHP の「exec」コマンド内で (rake.invoke を使用して) ruby​​ スクリプトを実行することです。

私は正常に実行される動作する rspec 構成を持っています (ここにヘッドレス rake タスクがありますが、以下の例ではヘッドレスと「ヘッド」の両方で動作することに注意してください)

FILE=./../tools/wr_audit_dom.rb WR_DEBUG=1 bundle exec rake local:headless

次のように、この rake ターゲットと他のロジックを ruby​​ ファイルで呼び出します。

Rake.application.init
Rake.application.load_rakefile
Rake.application['local:headless'].reenable
Rake.application['local:headless'].invoke
> ruby dom_audit_parser.rb
(this runs as expected)

上記のすべてが正常に実行され、テストが実行され、結果が得られます。

ただし、PHPを介してRubyスクリプトを実行したいので、コマンドを「実行」する次のコードがあります。

$cmd = 'cd <_projectdirectory_snipped_>; ruby dom_audit_parser.rb';
exec($cmd, $results);

問題: 例が見つからないかのように、実行された例が返されません。

しかし、同じコマンド (php の exec cmd からコピー) をターミナルで直接実行し、すべての例を実行できます。誰が何が間違っているのか教えてもらえますか?

以下のコマンドは、ファイルが指定されて見つかったことを示しています。例はスキップされていませんが、何も見つかりませんでした。

PHP 'exec' コマンドからの出力

/usr/bin/ruby1.9.1 -S rspec dom_audit_webdriver_spec.rb -f documentation --color Run
options: include {:local=>true} Finished in 0.00017 seconds 0 examples, 0 failures

ターミナルで ruby​​ コマンドを直接実行した場合の出力

/usr/bin/ruby1.9.1 -S rspec dom_audit_webdriver_spec.rb -f documentation --color
Run options: include {:local=>true}    
Inspect the webpage to scrape the DOM object
-- [LOCAL] Starting firefox :
[2013-10-09 16:19:10 -0400] Logging in
[2013-10-09 16:19:10 -0400] Opening webpage
..... SNIP
-- [LOCAL] quit firefox
  should find the dom object for the html node    
Finished in 2 minutes 0.2 seconds
1 example, 0 failures

ファイルを直接指定するのではなく、spec ディレクトリにコードを追加しようとしたことに注意してください。「rspec spec」の方法でファイルを見つけますが、同じ問題が観察されます。

├── config.yaml
├── dom_audit_parser.rb
├── dom_audit_portal.php
├── dom_audit_webdriver.rb
├── Rakefile

前もって感謝します!

4

1 に答える 1