From: "Unno, Hideyuki" Date: 2014-02-25T07:17:05+00:00 Subject: [ruby-list:49759] Re: Ruby 2.0 以降で自前 gem サーバーからインストールできない うんのです。はじめまして。 しばらく ROM ってたのですが、さくらインターネットをつかっていて似たような状況に 苦しんだことがあるので、つい。 わたしも、以前さくらのサーバ上においた hoge.gz ファイルを Webrick で書いたプロキシ経由で wget すると伸張されちゃうという現象に悩んだことがあります。 そのときは、さくらのサーバ上で、.htaccess に ForceType application/octet-stream AddEncoding None gz のように書いて、回避しました。 #これが .htaccess の書き方として正しいのかどうか、あまり自信がないですが、 #なんかの足しになれば…。 -----Original Message----- From: ruby-list [mailto:ruby-list-bounces@ruby-lang.org] On Behalf Of NARUSE, Yui Sent: Tuesday, February 25, 2014 3:23 PM To: Ruby users (Japanese) Subject: [ruby-list:49758] Re: Ruby 2.0 以降で自前 gem サーバーからインストールできない さくらだと、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