JRubyの上で実行されているRailsコードからHTTPリクエストを行いたいと思います。JRubyがJavaプロキシ設定を継承するようにする
http.proxyHost、http.proxyPort、http.nonProxyHostsの設定を再実行するにはどうしたらいいですか?
JRubyの上で実行されているRailsコードからHTTPリクエストを行いたいと思います。JRubyがJavaプロキシ設定を継承するようにする
http.proxyHost、http.proxyPort、http.nonProxyHostsの設定を再実行するにはどうしたらいいですか?
JRubyからJVMフラグを渡すには、-J...
を使用します。この場合:
jruby -J-Dhttp.proxyHost=foo -J-Dhttp.proxyPort=1234 -J-Dhttp.nonProxyHosts="*.bar.com" ...
これはJRubyのヘルプテキストで説明されています。
-J[java option] pass an option on to the JVM (e.g. -J-Xmx512m)
use --properties to list JRuby properties
run 'java -help' for a list of other Java options
私は同じ問題がありました。 javaまたはnet :: httpがnonProxyHostsオプションに従わないことがわかりました。これを回避する最善の方法は、ENV_JAVA設定を変更してこれを考慮に入れることです。私はnonProxyHostsを確保するために取った手順を使用した
は、以下のとおりであった:
1) JAVA_OPTS="-Dhttp.proxyHost=192*** -Dhttp.proxyPort=1234 -Dhttp.nonProxyHosts=local|127.0.0.1"
OR
1) JRUBY_OPTS="-J-Dhttp.proxyHost=192*** -J-Dhttp.proxyPort=1234 -J-Dhttp.nonProxyHosts=local|127.0.0.1"
少なくともjava1.7 nonProxyHostsのための引用はhereを見てはならないことを覚えておいてください。
これで、net :: httpまたはjava自体が実際にnonProxyHostsオプションを尊重しないことがわかりました。あなたはJRubyの
a = URI("http://someurl")
Net::HTTP.new(a).proxy?.should == true
regex = /$#{ENV_JAVA["http.nonProxyHosts"]}/ #dollar needed to behave as expected
if a.hostname.match(regex)
ENV_JAVA["http.proxyHost"]=nil
end
Net::HTTP.new(a).proxy?.should == false
で次のようにしてこの問題を回避できます希望を得ることができますしかし
。
本当にJVMにフラグを渡しますが、RubyのNet :: HTTPClientはそれらをアカウントに持ちません... –
Net :: HTTPClientにあまり慣れていませんが、セットアップする必要はありませんそのライブラリのプロキシも同様に?このドキュメントからは、 'ENV [" HTTP_PROXY "]'や 'ENV_JAVA [http.proxyHost"] 'などを使って調整する必要があるようです。 – banzaiman