Rails アプリには (Rake タスクを介してトリガーされることを意図した) メソッドがあり、PhantomJS プロセスをシェルアウトして実行します。
bin/proximo bin/phantomjs vendor/assets/javascripts/yslow.js http://www.example.com
実行可能ファイルはphantomjs
1.8.1 または Linux (x86-64) です。yslow.js
PhantomJS 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 キーが何も機能しないため、コマンドを入力できないことにも気付きました。それが関係しているかどうかはわかりません...