gem install mongrel使用ruby 1.9.1失败
我昨天开始自己进入rails开发。
我安装了ruby 1.9.1,rubygems和rails。
运行gem install mongrel
工作正常,表面上也安装了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/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(默认安装和我的自定义安装)。 那么为什么不是哪个杂种会回归呢。
还试图使用gem install mongrel
返回重新gem install mongrel
返回抛出自己的一组exception:
构建原生扩展。 这可能需要一段时间...... 错误:安装mongrel时出错: 错误:无法构建gem原生扩展。 / usr / local / bin / ruby extconf.rb安装mongrel 在-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
看起来其他人在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在http11.c上:
用。替换77行
for(ch = RSTRING_PTR(f),end = ch + RSTRING_LEN(f); ch
用。替换172行
冒号= strchr(RSTRING_PTR(temp),’:’);
用。替换174行
rb_hash_aset(req,global_server_name,rb_str_substr(temp,0,冒号 – RSTRING_PTR(temp)));
replce line 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”
6)mate / sudo vi handlers.rb
7)修复案例陈述
在第208-212行,将“:false”的实例更改为“then false”
8)sudo gem install gem_plugin(否则mongrel可能会挂起)
完成了!
您可以使用sudo gem install mongrel --pre
:安装mongrel 1.2预发行sudo gem install mongrel --pre
:
$ sudo gem1.9安装mongrel --pre >构建原生扩展。 这可能需要一段时间...... >已成功安装mongrel-1.2.0.pre2 > 1个gem安装
这是一个编译问题所以这样做更容易:
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
完成!
你可以像这样强制安装mongrel
sudo gem install mongrel -v 1.2.0.pre2 – –with-cflags = \“ – O2 -pipe -march = native -w \”
这解决了这个问题。