2011-01-30 17 views

答えて

3

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 
+0

本当にJVMにフラグを渡しますが、RubyのNet :: HTTPClientはそれらをアカウントに持ちません... –

+1

Net :: HTTPClientにあまり慣れていませんが、セットアップする必要はありませんそのライブラリのプロキシも同様に?このドキュメントからは、 'ENV [" HTTP_PROXY "]'や 'ENV_JAVA [http.proxyHost"] 'などを使って調整する必要があるようです。 – banzaiman

1

私は同じ問題がありました。 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 

で次のようにしてこの問題を回避できます希望を得ることができますしかし

関連する問題