web-dev-qa-db-ja.com

gem installmongrelがRuby 1.9.1で失敗する

私は昨日Rails開発を始めました。
インストールしましたRuby 1.9.1、rubygemsとRails。
gem install mongrelの実行は正常に機能し、表面上はモングレルもインストールされました。私は少し戸惑っています:

  • スクリプト/サーバーはデフォルトでwebrickを起動します
  • which mongrelは何も返しません
  • locate mongrelは次のような多くのエントリを返します
/Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/Ruby/gems/1.8/gems/mongrel-1.0.1 
/Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/Ruby/gems/1.8/gems/mongrel-1.0.1/lib 
 /Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/Ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel 
。
。
。
/usr/local/bin/mongrel_Rails 
/usr/local/lib/Ruby/gems/1.9.1/cache/mongrel-1.1.5.gem 
/usr/local/lib/Ruby/gems/1.9.1/doc/actionpack-2.3.2/rdoc/files/lib/action_controller/vendor/rack-1_0/rack /handler/evented_mongrel_rb.html
/usr/local/lib/Ruby/gems/1.9.1/doc/actionpack-2.3.2/rdoc/files/lib/action_controller/vendor/rack-1_0/rack/ handler/mongrel_rb.html 
/usr/local/lib/Ruby/gems/1.9.1/doc/actionpack-2.3.2/rdoc/files/lib/action_controller/vendor/rack-1_0/rack/handler /swiftiplied_mongrel_rb.html
/usr/local/lib/Ruby/g ems /1.9.1/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/handler/evented_mongrel.rb
/usr/local/lib/Ruby/gems/1.9.1 /gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/handler/mongrel.rb
/usr/local/lib/Ruby/gems/1.9.1/gems/actionpack- 2.3.2/lib/action_controller/vendor/rack-1.0/rack/handler/swiftiplied_mongrel.rb 
/usr/local/lib/Ruby/gems/1.9.1/gems/mongrel-1.1.5 
。
。
。

Mongrelがインストールされているように見えます(デフォルトのインストールとカスタムインストールの両方)。では、なぜどの雑種が何かを返さないのでしょうか。

また、gem install mongrelを使用して雑種を再インストールしようとすると、独自の例外セットがスローされます。

ネイティブ拡張機能の構築。これにはしばらく時間がかかる場合があります... 
エラー:mongrelのインストール中にエラーが発生しました:
エラー:gemネイティブ拡張機能のビルドに失敗しました。
 
/usr/local/bin/Ruby extconf.rb install mongrel 
-lcのmain()をチェックしています...はい
 Makefile 
 
 make 
 gcc-Iを作成しています。 -I/usr/local/include/Ruby-1.9.1/i386-darwin9.7.0 -I/usr/local/include/Ruby-1.9.1/Ruby/backward -I/usr/local/include/Ruby-1.9 .1-I。 -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -fno-common -D_XOPEN_SOURCE = 1 -O2 -g -Wall -Wno-parentheses -fno-common -pipe -fno-common -o http11.o -c http11.c 
 http11.c :関数 'http_field':
 http11.c:77:エラー: 'structRString'には 'ptr' 
 http11.c:77という名前のメンバーがありません:エラー: 'structRString'にはありません'len'という名前のメンバー
 http11.c:77:警告:コンマ式の左側のオペランドは効果がありません
 http11.c:77:警告:効果のないステートメント
 http11.c:関数 'header_done':
 http11.c:172:エラー: 'structRString'には 'ptr' 
 http11.c:174:エラー: 'structRStringという名前のメンバーがありません'には' ptr '
 http11.c:176という名前のメンバーがありません:エラー:' structRString 'には' ptr '
 http11.c:177という名前のメンバーがありません:エラー:' structRString 'には'len' 
 http11.cという名前のメンバーがありません:関数 'HttpParser_execute':
 http11.c:298:エラー: 'structRString'に 'ptr' 
という名前のメンバーがありませんhttp11.c:299:エラー: 'structRString'には 'len' 
 mという名前のメンバーがありませんake:*** [http11.o]エラー1 
22
atlantis

他の人がMongrelの実行に問題を抱えている on Ruby 1.9。

AMI Mahloofによるコメントは、修正の可能性があるようです。

これを修正するために必要なことは次のとおりです

更新された手順は次のとおりです。

1)cd /usr/local/lib/Ruby/gems/1.9.1/gems/mongrel-1.1.5/ext/http11

2)http11.cのSudo vi/mateおよび:

77行目を次のように置き換えます

for(ch = RSTRING_PTR(f)、end = ch + RSTRING_LEN(f); ch <end; ch ++){

行172を次のように置き換えます

コロン= strchr(RSTRING_PTR(temp)、 ':');

行174を次のように置き換えます

rb_hash_aset(req、global_server_name、rb_str_substr(temp、0、colon-RSTRING_PTR(temp)));

交換行176,177

rb_str_substr(temp、コロン-RSTRING_PTR(temp)+ 1、RSTRING_LEN(temp)));

行298299を置き換えます

dptr = RSTRING_PTR(data);

dlen = RSTRING_LEN(data);

3)ファイルを保存し、vi/textmateを閉じます

4)Sudo Ruby extconf.rb && Sudo make && Sudo make install

5)cd ../../ lib/mongrel(またはフルパス「/usr/local/lib/Ruby/gems/1.9.1/gems/mongrel-1.1.5/lib/mongrel」

6)mate/Sudo vi handlers.rb

7)のcaseステートメントを修正します

208〜212行目で、「:false」のインスタンスを「thenfalse」に変更します

8)Sudo gem install gem_plugin(そうでない場合は雑種がハングする可能性があります)

完了しました!

5
Olly

Sudo gem install mongrel --preを使用してmongrel1.2プレリリースをインストールできます。

 $ Sudo gem1.9 install mongrel --pre 
>ネイティブ拡張機能の構築。これにはしばらく時間がかかる場合があります... 
> mongrel-1.2.0.pre2 
> 1gemが正常にインストールされました
47
kch

これはコンパイルの問題であるため、これを行うのは簡単です。

git clone git://github.com/mongrel/mongrel.git

cd mongrel/ext/http/

次に、http11.cを編集します。

#ifndef RSTRING_PTR
#define RSTRING_PTR(s) (RSTRING(s))
#endif
#ifndef RSTRING_LEN
#define RSTRING_LEN(s) (RSTRING(s))
#endif

それを保存し、同じディレクトリから次の手順を実行します。

Sudo Ruby extconf.rb && Sudo make && Sudo make install

完了しました。

3
Ami Mahloof

あなたはこのように雑種をインストールすることを強制することができます

Sudo gem install mongrel -v 1.2.0.pre2 --- with-cflags =\"-O2 -pipe -march = native -w \"

これで問題が解決します。

2
Mark Francis