2009-07-02 34 views
22

Tôi bắt đầu bản thân mình vào phát triển đường ray ngày hôm qua.
Tôi đã cài đặt ruby ​​1.9.1, rubygems và đường ray.
Chạy gem install mongrel hoạt động tốt và có thể cài đặt mongrel quá. Tôi hơi bối rối vì:đá quý cài đặt mongrel không với ruby ​​1.9.1

  • kịch bản/máy chủ bắt đầu webrick theo mặc định
  • which mongrel lợi nhuận gì
  • locate mongrel lợi nhuận rất nhiều entry như
 
/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 
. 
. 
. 

Liệu trông giống như tôi phải thú lai cài đặt (cả cài đặt mặc định và cài đặt tùy chỉnh của tôi). Vì vậy, tại sao không mà mongrel trả lại một cái gì đó.

Cũng cố gắng để cài đặt lại lai sử dụng gem install mongrel lợi nhuận ném thiết lập riêng của ngoại lệ:

 
Building native extensions. This could take a while... 
ERROR: Error installing mongrel: 
    ERROR: Failed to build gem native extension. 

/usr/local/bin/ruby extconf.rb install mongrel 
checking for main() in -lc... yes 
creating 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: In function 'http_field': 
http11.c:77: error: 'struct RString' has no member named 'ptr' 
http11.c:77: error: 'struct RString' has no member named 'len' 
http11.c:77: warning: left-hand operand of comma expression has no effect 
http11.c:77: warning: statement with no effect 
http11.c: In function 'header_done': 
http11.c:172: error: 'struct RString' has no member named 'ptr' 
http11.c:174: error: 'struct RString' has no member named 'ptr' 
http11.c:176: error: 'struct RString' has no member named 'ptr' 
http11.c:177: error: 'struct RString' has no member named 'len' 
http11.c: In function 'HttpParser_execute': 
http11.c:298: error: 'struct RString' has no member named 'ptr' 
http11.c:299: error: 'struct RString' has no member named 'len' 
make: *** [http11.o] Error 1 

Trả lời

5

Dường như other people are having problems running Mongrel trên Ruby 1.9.

Các bình luận bởi Ami Mahloof có vẻ như nó có thể là một sửa chữa có thể:

Dưới đây là Những gì bạn cần làm để sửa chữa nó

đây là các hướng dẫn Cập nhật:

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

2) sudo vi/bạn đời trên http11.c và:

thay thế dòng 77 bằng

cho (ch = RSTRING_PTR (f), end = ch + RSTRING_LEN (f); ch < kết thúc; ch ++) {

thay thế dòng 172 với

ruột = strchr (RSTRING_PTR (temp), ':');

thay thế dòng 174 với

rb_hash_aset (req, global_server_name, rb_str_substr (temp, 0, ruột kết - RSTRING_PTR (temp)));

dòng replce 176.177

rb_str_substr (temp, ruột kết - RSTRING_PTR (temp) +1, RSTRING_LEN (temp)));

thay thế dòng 298 299

dptr = RSTRING_PTR (dữ liệu);

dlen = RSTRING_LEN (dữ liệu);

3) lưu tệp, đóng vi/văn bản

4) sudo ruby ​​extconf.rb & & sudo make & & sudo make install

5) cd ../../lib/mongrel (hoặc đường dẫn đầy đủ “/usr/local/lib/ruby/gems/1.9.1/gems/ lai-1.1.5/lib/thú lai”

6) người bạn đời/sudo vi handlers.rb

7) sửa chữa các báo cáo trường hợp trong

Mở đường 208-212, thay đổi trường hợp của“: false ”Thành“ sau đó sai ”

8) sudo gem install gem_plugin (khác mongrel có thể treo)

xong!

+2

trang web không hoạt động, bạn có thể vui lòng dán nhận xét/nội dung ở đây, cảm ơn – msanjay

3

Nó là một vấn đề biên soạn vì vậy nó dễ dàng hơn để làm điều này:

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

cd mongrel/ext/http/ 

Bây giờ chỉnh sửa http11.c:

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

Lưu nó và bây giờ từ cùng một thư mục thực hiện như sau:

sudo ruby extconf.rb && sudo make && sudo make install 

Xong!

47

Bạn có thể cài đặt lai 1.2 phát hành trước với sudo gem install mongrel --pre:

 
$ sudo gem1.9 install mongrel --pre 
> Building native extensions. This could take a while... 
> Successfully installed mongrel-1.2.0.pre2 
> 1 gem installed 
+0

Điều này đã giúp tôi, cảm ơn rất nhiều! – alvincrespo

+0

Tôi đang ở trên Rails 2.3.8/Ruby 1.9 và điều này cũng làm việc cho tôi. – dafmetal

2

bạn có thể buộc để cài đặt lai như ngọc

sudo này cài đặt lai -v 1.2.0.pre2 - with-CFLAGS = \ "- O2 -pipe -march = native -w \"

Điều này giải quyết vấn đề.

Các vấn đề liên quan