[ruby-list:49758] Re: Ruby 2.0 以降で自前 gem サーバーからインストールできない
From:
"NARUSE, Yui" <naruse@...>
Date:
2014-02-25 06:23:25 UTC
List:
ruby-list #49758
さくらだと、HTTPヘッダにContent-Encoding:gzipがついていませんか。
2.0からnet/httpにContent-Encoding:gzipの自動デコードがついたので、その影響でしょう。
# やっぱりデコードをデフォルトでオンにしたのは失敗だった…
2014年2月25日 12:29 5.5 <5.5@moji.gr.jp>:
> 5.5 です。
>
> その後,もう少し分かりました。
>
> まず,特定のウェブサーバーでしか起こらないことが分かりました。
> 具体的にはさくらインターネットの共用サーバーです。最近契約し
> た複数のサーバーで同じ状況でした。とくに変わった設定はしてい
> ないと思います。
>
> もう一つ分かったのは,specs.4.8.gz を取得した際に Ruby 2.0
> 以上ではバイナリーで取れていないために,Gem.gunzip が失敗し
> ている,ということです。
>
> 以下のようなスクリプトを実行します。
>
> uri=URI.parse("http://XXXXX.sakura.ne.jp/gemsource/specs.4.8.gz")
> data=Gem::RemoteFetcher.new.fetch_http uri
>
> p data.encoding
>
> Ruby 1.9.3 では,data が ASCII-8BIT であるのに対し,2.0 以
> 降では UTF-8 になっていました。バイト数も全然違いました。
>
> ブラウザーから specs.4.8.gz をダウンロードしたときは,さくら
> のサーバーも他のサーバーも正常なファイルが得られました。
>
>
> これ以上は調べられていません。
>
>
>
> (14/02/24 23:12), 5.5 wrote:
>> 5.5 と申します。
>>
>> 【概要】
>>
>> 自作 gem をウェブサーバー上に置き,Gemfile に source 指定
>> して bundle install する,というやり方が,Ruby 2.0 以降で
>> うまくいかなくなりました。
>>
>>
>> 【詳細】
>>
>> ローカルで
>> gem generate_index
>> を使って,gem サーバーとして必要なファイル群を生成しました。
>>
>> これをウェブサーバーにアップロードします。
>>
>> その URL を Gemfile に
>>
>> source "http://XXXXX.sakura.ne.jp/gemsource/"
>>
>> のように書きました。
>> (ドメイン名は架空のものに差し替えてあります)
>>
>> この状態で
>> bundle install
>> すると,Ruby 1.9.3 ではうまくインストールできていたのですが,
>> Ruby 2.0 以降では,以下のようなエラーが出てインストールでき
>> ません。
>>
>>> bundle install
>> Fetching source index from http://XXXXX.sakura.ne.jp/gemsource/
>> Retrying source fetch due to error (2/3): Bundler::HTTPError Could not
>> fetch specs from http://XXXXX.sakura.ne.jp/gemsource/
>> Retrying source fetch due to error (3/3): Bundler::HTTPError Could not
>> fetch specs from http://XXXXX.sakura.ne.jp/gemsource/
>> Could not fetch specs from http://XXXXX.sakura.ne.jp/gemsource/
>>
>> いくつかの Ruby で試してみたところ,インストールできたのは
>> 次のものでした:
>>
>> [OK] ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-linux]
>> [OK] ruby 1.9.3p484 (2013-11-22) [i386-mingw32]
>>
>> インストールできなかったのは以下のものでした:
>>
>> [NG] ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-linux]
>> [NG] ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-linux]
>> [NG] ruby 2.0.0p353 (2013-11-22) [i386-mingw32]
>> [NG] ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux]
>> [NG] ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin10.0]
>>
>> これを見ると,プラットフォームに関係なく 2.0.0 以降でできなく
>> なったように見えます。
>>
>>
>> RubyGems と Bundler のバージョンは以下のとおりです:
>>
>> RubyGems 2.2.2
>> Bundler version 1.5.3
>>
>>
>> なお,ウェブサーバーのログを見ると,インストールに成功する
>> 場合も失敗する場合も,存在しない
>>
>> http://XXXXX.sakura.ne.jp/gemsource/api/
>>
>> にアクセスしているみたいです。
>>
>
>
> --
> 5.5@moji.gr.jp
--
NARUSE, Yui <naruse@airemix.jp>