2

Rails アプリには (Rake タスクを介してトリガーされることを意図した) メソッドがあり、PhantomJS プロセスをシェルアウトして実行します。

bin/proximo bin/phantomjs vendor/assets/javascripts/yslow.js http://www.example.com

実行可能ファイルはphantomjs1.8.1 または Linux (x86-64) です。yslow.jsPhantomJS 3.1.1 の YSlow です。

このプロセスは、Heroku の Proximo アドオンを介して実行されます。これを実行している Web サイト (上記の example.com) は、ホワイトリストに登録されていない IP に対してアンチ DOS 保護ページを表示するためです。

私が経験している問題は、このコマンドが単にハングして、出力が返されないことです。ラッパー スクリプトを実行せずに同じコマンドを実行するbin/proximoと機能しますが、もちろん、上記の IP 制限により、間違ったページの出力が得られます。

これを Heroku の Rails コンソールで直接実行した場合のスタック トレースを次に示します。

irb(main):023:0> `bin/proximo bin/phantomjs vendor/assets/javascripts/yslow.js http://www.example.com`
^CIRB::Abort: abort then interrupt!
  from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.11/lib/active_support/core_ext/kernel/agnostics.rb:7:in `call'
  from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.11/lib/active_support/core_ext/kernel/agnostics.rb:7:in ``'
  from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.11/lib/active_support/core_ext/kernel/agnostics.rb:7:in ``'
  from (irb):23
  from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.11/lib/rails/commands/console.rb:47:in `start'
  from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.11/lib/rails/commands/console.rb:8:in `start'
  from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.11/lib/rails/commands.rb:41:in `<top (required)>'
  from script/rails:6:in `require'
  from script/rails:6:in `<main>'

ハングの原因は何ですか?


編集: 私の同僚は、プロキシではなく、実際にハングしているのは PhantomJS であることを発見するのを助けてくれました。誰かが別の提案をしない限り、PhantomJS を販売する別の方法を探します。

編集 2 : Heroku ビルドパックで PhantomJS をインストールしましたが、同じことが起こります。phantomjsまた、Heroku で Bash シェルに接続してコンソールを実行すると、Enter キーが何も機能しないため、コマンドを入力できないことにも気付きました。それが関係しているかどうかはわかりません...

4

0 に答える 0