gem install mongrel 使用 ruby 1.9.1 失败
Posted
技术标签:
【中文标题】gem install mongrel 使用 ruby 1.9.1 失败【英文标题】:gem install mongrel fails with ruby 1.9.1 【发布时间】:2010-11-07 14:43:17 【问题描述】:我昨天开始从事 Rails 开发。
我安装了 ruby 1.9.1、rubygems 和 rails。
运行 gem install mongrel
运行良好,表面上也安装了 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/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(默认安装和自定义安装)。那么为什么 which mongrel 不返回一些东西呢。
还尝试使用 gem install mongrel
重新安装 mongrel 返回会引发其自己的一组异常:
【问题讨论】:
【参考方案1】:您可以使用 sudo gem install mongrel --pre
安装 mongrel 1.2 预发行版:
【讨论】:
【参考方案2】:在 Ruby 1.9 上看起来像 other people are having problems running Mongrel。
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
将第 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”
6) mate / sudo vi handlers.rb
7) 修正
中的case语句在第 208-212 行,将“: false”的实例更改为“then false”
8) sudo gem install gem_plugin(否则杂种可能会挂起)
完成!
【讨论】:
网站宕机了,请把评论/内容贴在这里,谢谢【参考方案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
完成!
【讨论】:
【参考方案4】:你可以像这样强制安装 mongrel
sudo gem install mongrel -v 1.2.0.pre2 -- --with-cflags=\"-O2 -pipe -march=native -w\"
这解决了问题。
【讨论】:
以上是关于gem install mongrel 使用 ruby 1.9.1 失败的主要内容,如果未能解决你的问题,请参考以下文章
如何修复此错误? config.gem:在 vendor/gems 中解压的 gem authlogic-2.1.3 没有规范文件
gem install:无法构建 gem 原生扩展(找不到头文件)
即使安装了 gem,RVM Bundle Install Missing Gem 错误
Ubuntu 16.04在搭建Redis Cluster搭建时,使用gem install redis时出现:ERROR: While executing gem ... (Gem::FilePer