2011-01-30 14 views

Respuesta

3

Para pasar las banderas de JVM a través de JRuby, use -J.... En este caso:

jruby -J-Dhttp.proxyHost=foo -J-Dhttp.proxyPort=1234 -J-Dhttp.nonProxyHosts="*.bar.com" ... 

Esto se explica en el texto de ayuda de 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

Pasará las banderas a JVM, pero Ruby's Net :: HTTPClient no las lleva a una cuenta ... –

+1

No estoy muy familiarizado con Net :: HTTPClient, pero no tiene que configurarlo proxy en esa biblioteca también? De la documentación, parece que tienes que jugar con 'ENV [" HTTP_PROXY "]' y 'ENV_JAVA [" http.proxyHost "]', etc. – banzaiman

1

He tenido el mismo problema. Descubrí que java o net :: http no obedecen la opción nonProxyHosts. La mejor forma de evitar esto es modificar la configuración ENV_JAVA para dar cuenta de esto.

Se utilizaron los pasos que tomó para asegurar nonProxyHosts fueron los siguientes:

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" 

Tenga en cuenta que al menos para los java1.7 nonProxyHosts no deberían tener citas ver here.

Ahora descubro que net :: http o java en sí no cumplen con la opción nonProxyHosts.

Sin embargo, usted puede conseguir alrededor de esto haciendo lo siguiente en 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 

Espero que ayude.

Cuestiones relacionadas