Depois de ler com mais cuidado o erro HTTP, percebi que isso está falhando porque meu firewall corporativo está bloqueando solicitações HTTP com User-Agent: bundler/1.11.2 ...
. Consegui confirmar isso com curl
(works) vs curl -A "bundler/1.11.2 ...
(não funciona).
A solução administrativa é configurar o firewall corporativo para permitir o bundler como um User-Agent. Eu arquivei um caso interno - vamos ver onde isso vai ...
A solução técnica provisória do hacky é corrigir a origem do bundler para que ele use um User-Agent mais aceitável.
- Crie o arquivo
bundler-hack-useragent.patch
com o seguinte conteúdo:
diff --git a/fetcher.rb b/fetcher.rb
index aaf4679..e4738f4 100644
--- a/fetcher.rb
+++ b/fetcher.rb
@@ -238,7 +238,8 @@ module Bundler
end
con.read_timeout = Fetcher.api_timeout
- con.override_headers["User-Agent"] = user_agent
+# con.override_headers["User-Agent"] = user_agent
+ con.override_headers["User-Agent"] = 'curl/7.19.7'
con.override_headers["X-Gemfile-Source"] = @remote.original_uri.to_s if @remote.original_uri
con
end
- Aplicar o patch:
sudo patch --directory /usr/lib/ruby/vendor_ruby/bundler < bundler-hack-useragent.patch
Isso codificará o curl como o User-Agent em /usr/lib/ruby/vendor_ruby/bundler/fetcher.rb
. O curl funciona com o firewall corporativo, embora você tenha que escolher outra coisa.