2011-01-30 22 views

risposta

3

Per passare le bandiere JVM tramite JRuby, utilizzare -J.... In questo caso:

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

Questo è spiegato nel testo della guida di 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

Passerà effettivamente i flag a JVM, ma Ruby's Net :: HTTPClient non li inserisce in un account ... –

+1

Non ho molta familiarità con Net :: HTTPClient, ma non devi impostare proxy anche in quella libreria? Dalla documentazione, sembra che tu debba armeggiare con 'ENV [" HTTP_PROXY "]' e 'ENV_JAVA [" http.proxyHost "]', ecc. – banzaiman

1

Ho avuto lo stesso problema. Ho scoperto che java o net :: http non obbedisce all'opzione nonProxyHosts. Il modo migliore per aggirare questo è modificare le impostazioni ENV_JAVA per tener conto di ciò.

è stato utilizzato il passaggi che ho svolto per garantire nonProxyHosts sono i seguenti:

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" 

Tenete a mente che, almeno per i java1.7 nonProxyHosts non dovrebbero avere citazioni vedono here.

Ora trovo che net :: http o java non rispetti l'opzione nonProxyHosts.

Tuttavia è possibile aggirare il problema effettuando le seguenti operazioni in 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 

Speranza che aiuta.

Problemi correlati