私は昨日Rails開発を始めました。
インストールしましたRuby 1.9.1、rubygemsとRails。gem install mongrel
の実行は正常に機能し、表面上はモングレルもインストールされました。私は少し戸惑っています:
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
他の人が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(そうでない場合は雑種がハングする可能性があります)
完了しました!
Sudo gem install mongrel --pre
を使用してmongrel1.2プレリリースをインストールできます。
$ Sudo gem1.9 install mongrel --pre >ネイティブ拡張機能の構築。これにはしばらく時間がかかる場合があります... > mongrel-1.2.0.pre2 > 1gemが正常にインストールされました
これはコンパイルの問題であるため、これを行うのは簡単です。
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
完了しました。
あなたはこのように雑種をインストールすることを強制することができます
Sudo gem install mongrel -v 1.2.0.pre2 --- with-cflags =\"-O2 -pipe -march = native -w \"
これで問題が解決します。