22

昨日、レール開発を始めました。
ruby 1.9.1、rubygems、rails をインストールしました。
実行gem install mongrelは正常に機能し、表面上は雑種もインストールされていました。次の理由により、私は少し困惑しています。

  • script/server はデフォルトで 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/gems/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 がインストールされているように見えます (既定のインストールとカスタム インストールの両方)。では、どの雑種が何かを返さないのはなぜですか。

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

ネイティブ拡張機能の構築。これにはしばらく時間がかかる場合があります...
エラー: mongrel のインストール中にエラーが発生しました:
    エラー: gem ネイティブ拡張のビルドに失敗しました。

/usr/local/bin/ruby extconf.rb インストール雑種
-lc で main() をチェックしています...はい
Makefile の作成

作る
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: エラー: 'struct RString' に 'ptr' という名前のメンバーがありません
http11.c:77: エラー: 'struct RString' には 'len' という名前のメンバーがありません
http11.c:77: 警告: コンマ式の左側のオペランドは効果がありません
http11.c:77: 警告: 効果のないステートメント
http11.c: 関数「header_done」内:
http11.c:172: エラー: 'struct RString' に 'ptr' という名前のメンバーがありません
http11.c:174: エラー: 'struct RString' に 'ptr' という名前のメンバーがありません
http11.c:176: エラー: 'struct RString' に 'ptr' という名前のメンバーがありません
http11.c:177: エラー: 'struct RString' に 'len' という名前のメンバーがありません
http11.c: 関数 'HttpParser_execute' 内:
http11.c:298: エラー: 'struct RString' に 'ptr' という名前のメンバーがありません
http11.c:299: エラー: 'struct RString' には 'len' という名前のメンバーがありません
make: *** [http11.o] エラー 1
4

4 に答える 4

47

mongrel 1.2 プレリリースを次のコマンドでインストールできますsudo gem install mongrel --pre

$ sudo gem1.9 install mongrel --pre
> ネイティブ拡張機能の構築。これにはしばらく時間がかかる場合があります...
> mongrel-1.2.0.pre2 のインストールに成功
> 1 つの gem がインストールされています
于 2010-05-23T15:37:22.707 に答える
5

他の人がRuby 1.9 でMongrel を実行する際に問題を抱えているようです。

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

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

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

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

2) sudo vi / mate on http11.c および:

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, コロン - RSTRING_PTR(temp)));

交換ライン 176,177

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

行 298 299 を置換

dptr = RSTRING_PTR(データ);

dlen = RSTRING_LEN(データ);

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」)</p>

6) mate / sudo vi handlers.rb

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

208 ~ 212 行で、「: false」のインスタンスを「then false」に変更します。</p>

8) sudo gem install gem_plugin (そうしないと雑種がハングアップする可能性があります)

終わり!

于 2009-07-02T13:02:25.843 に答える
3

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

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

終わり!

于 2009-07-28T17:39:22.050 に答える