Ruby x Proxy

8 views
Skip to first unread message

americodls

unread,
May 28, 2012, 2:27:34 PM5/28/12
to rub...@googlegroups.com
Ae galera, estamos com o seguinte problema aqui na empresa: PROXY.

Estamos desenvolvendo uma aplicação em rails 3.2.3 (ruby 1.9.3).
Em development, estamos atrás de um proxy (maldito), e em produção não temos proxy.
Daí, tem uma parte do código (desenvolvido por uma fábrica) que está usando Net::HTTP para uma comunicação SOAP.
Essa não conseguimos reproduzir essa comunicação nas nossas maquinas, por causa do bendito proxy.

O mais próximo que cheguei de uma resposta (e não foi muito agradável) foi isso:
"Note that net/http does not use the HTTP_PROXY environment variable. If you want to use a proxy, you must set it explicitly." (ruby-doc)

Isso é totalmente verdade??? O ruby não detecta as configurações de proxy do SO???

Vlw!!!

Leandro Maríngolo

unread,
May 28, 2012, 2:48:47 PM5/28/12
to rub...@googlegroups.com
Acho que não tem como viu. Você pode abstrair isso, colocando num
método a verificação da variável de ambiente. Se tiver, você faz uso
explícito do Proxy.

2012/5/28 americodls <ameri...@gmail.com>:
> --
> Você recebeu esta mensagem porque está inscrito no Grupo "ruby-sp" em
> Grupos do Google.
> Para postar neste grupo, envie um e-mail para rub...@googlegroups.com
> Para cancelar a sua inscrição neste grupo, envie um e-mail para
> ruby-sp+u...@googlegroups.com
> Para ver mais opções, visite este grupo em
> http://groups.google.com.br/group/ruby-sp?hl=pt-BR
> Página oficial do GURU-SP: http://www.guru-sp.org



--
{ :about_me => http://about.me/leandronsp }

Ronaldo Possan

unread,
May 28, 2012, 3:26:47 PM5/28/12
to rub...@googlegroups.com
Tive o mesmo problema aqui.
Criei algumas var constantes no environment.rb com os dados de proxy e uma boolean se tem ou não proxy.
Ai, por exemplo, tenho um método que busca coordenadas GPS na base do google através da api online, então implementei assim:

    if HAS_PROXY
      data = Net::HTTP::Proxy(PROXY_HOST, PROXY_PORT, PROXY_USER, PROXY_PASS).get(URI.parse(url))
    else
      data = Net::HTTP.get(URI.parse(url))
    end

Abraço!
Ronaldo Possan
Software Engineer

Expertise in Ruby On Rails, ExtJS and PHP
Skype: ronaldo.possan
+55 19 8820-7159

americodls

unread,
May 28, 2012, 4:23:01 PM5/28/12
to rub...@googlegroups.com
Amigos consegui resolver, pelo menos paleativamente.
Bom consegui resolver, não achei nada elegante, mas por enquanto foi o que funcionou.
Como eu tinha pressa porque precisava resolver outras tarefas que dependiam disso...
Chega de papo!

Na app rails, em config/environment.rb coloquei
  # Use http_proxy if exists
  if ENV['http_proxy']
    require 'net/http'
    class Net::HTTP
      class << self
        alias pnewobj newobj
      end
      proxyconf = ENV['http_proxy'].gsub(/http:|\//,'').split(':')
      ProxyAddr = proxyconf[0]
      ProxyPort = proxyconf[1]
      def self.newobj(address, port = nil, p_addr = ProxyAddr, p_port = ProxyPort, p_user = nil, p_pass = nil)
        Proxy(p_addr, p_port, p_user, p_pass).pnewobj(address, port)
      end
    end
  end

Vlw caras! []`s
Reply all
Reply to author
Forward
0 new messages