ruby gemを使用する際に、プロキシをどのように通過するのか、この古くから質問しています。gem [ruby] webproxyを経由して接続する[windows]
私はENV変数HTTP_PROXY
設定しようとした:
HTTP_PROXY=myusername:[email protected]:8080
が、これは動作しませんが。
> gem install rails
ERROR: While executing gem ... (URI::InvalidURIError)
bad URI(is not URI?): http://myusername:[email protected]:8080
私は開始時tcp://
を追加使用してみましたが、それはエラーメッセージでhttp://tcp://
を示しているので、私はそれがあまりにも間違っていたと仮定する。
だから、私は自動でこのコードを使用してPHP経由で接続しようとした:
<?php
$path = 'http://rubygems.org/';
$auth = base64_encode('myusername:password');
file_put_contents('proxy.log', 'POST::', FILE_APPEND);
file_put_contents('proxy.log', print_r($_POST, true), FILE_APPEND);
file_put_contents('proxy.log', 'GET::', FILE_APPEND);
file_put_contents('proxy.log', print_r($_GET, true), FILE_APPEND);
$aContext = array(
'http' => array(
'method' => 'GET',
'content' => http_build_query($_GET),
'proxy' => 'tcp://proxy.com:8080',
'request_fulluri' => true,
'header' => "Proxy-Authorization: Basic $auth"
)
);
$cxContext = stream_context_create($aContext);
$sFile = file_get_contents($path, false, $cxContext);
header('Content-type: application/gzip');
echo $sFile;
をし、特定のファイルを取得しようとしている包み、私は、Apacheを使用して、それを処理していました。
.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*[^/])$ http://%{HTTP_HOST}%{REQUEST_URI}/ [R=301,L]
RewriteCond $1 !^$
RewriteCond $1 !^(index\.php)
RewriteRule ^(.*)$ index.php?$1 [QSA,L]
</IfModule>
# Options -Indexes
でも、このエラーが発生します。
> gem sources -ahttp://mylocalhost/ror-proxy/
ERROR: While executing gem ... (Zlib::GzipFile::Error)
not in gzip format
HTTP_PROXYには完全なHTTP URLが必要です。 'HTTP_PROXY = http:// myusername:password @ proxyを試してみてください。com:8080' –