JRubyでHTTPリクエストの直後にJSを実行する最もパフォーマンスの高い方法は何ですか? HtmlUnit、Celerity、Capybara + PhantomJS == Poltergeist、CasperJS などのすべてのテスト フレームワークについて知っていますが、それらはまだテスト フレームワークです。
私が必要としているのは、たとえば Net::Http によって URL を取得した後、HTML に含まれるすべての JS コードを実行する簡単な方法です。
JRubyでHTTPリクエストの直後にJSを実行する最もパフォーマンスの高い方法は何ですか? HtmlUnit、Celerity、Capybara + PhantomJS == Poltergeist、CasperJS などのすべてのテスト フレームワークについて知っていますが、それらはまだテスト フレームワークです。
私が必要としているのは、たとえば Net::Http によって URL を取得した後、HTML に含まれるすべての JS コードを実行する簡単な方法です。
まず第一に、言うまでもありませんが、本番環境ではこれを行わないでください。
インターネット上のどこかから引っ張ってきたスクリプトを実行すると、大惨事になります。テスト インフラストラクチャの一部として使用している場合は、ある程度役立つかもしれませんが、問題を解決するためのより簡単な方法があると思います。
より一般的な質問に答えるために、JDK 1.6+ にバンドルされている JavaScript エンジンを初期化する方法を次に示します (実質的には Rhino のカットダウン バージョンですが、これはおそらく Java 8 で変更される予定です)。
import javax.script.ScriptEngineManager
import javax.script.SimpleBindings
manager = ScriptEngineManager.new
engine = manager.getEngineByName("JavaScript")
bindings = SimpleBindings.new
bindings['x'] = 1
engine.eval("print(x)", bindings)
jQuery などの依存関係をエンジンに評価させることは、ユーザーの課題として残されています。javax.script JavaDocを見てください。
評価環境をさらに制御する必要がある場合は、Rhinoを直接使用するか、 Nashornを待つ必要があります...