ruby rubygems mongrel ruby-1.9

gema instalar mongrel falla con ruby 1.9.1



rubygems ruby-1.9 (4)

Me inicié en el desarrollo de rieles ayer.
Instalé ruby ​​1.9.1, rubygems y rieles.
Running gem install mongrel funcionó bien y aparentemente instaló mongrel también. Estoy un poco desconcertado porque:

  • script / server inicia webrick por defecto
  • which mongrel no devuelve nada
  • locate mongrel devuelve un montón de entradas como

/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 . . .

Parece que tengo mongrel instalado (tanto la instalación predeterminada como mi instalación personalizada). Entonces, ¿por qué no, qué mestizo devuelve algo?

También intentando reinstalar mongrel usando gem install mongrel devuelve lanza su propio conjunto de excepciones:

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


Es un problema de compilación por lo que es más fácil hacer esto:

git clone git://github.com/mongrel/mongrel.git cd mongrel/ext/http/

Ahora edita el http11.c :

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

Guárdalo y ahora desde el mismo directorio haz lo siguiente:

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

¡Hecho!


Parece que otras personas tienen problemas para ejecutar Mongrel en Ruby 1.9.

El comentario de Ami Mahloof parece que podría ser una posible solución:

Esto es lo que necesitas hacer para arreglarlo

Aquí están las instrucciones actualizadas:

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

2) sudo vi / mate en http11.c y:

reemplazar la línea 77 con

para (ch = RSTRING_PTR (f), end = ch + RSTRING_LEN (f); ch <end; ch ++) {

reemplazar la línea 172 con

dos puntos = strchr (RSTRING_PTR (temp), '':'');

Reemplace la línea 174 con

rb_hash_aset (req, global_server_name, rb_str_substr (temp, 0, dos puntos - RSTRING_PTR (temp)));

línea de respuesta 176,177

rb_str_substr (temp, dos puntos - RSTRING_PTR (temp) +1, RSTRING_LEN (temp)));

reemplazar lineas 298 299

dptr = RSTRING_PTR (datos);

dlen = RSTRING_LEN (datos);

3) guardar el archivo, cerrar el vi / textmate

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

5) cd ../../lib/mongrel (o la ruta completa “/usr/local/lib/ruby/gems/1.9.1/gems/mongrel-1.1.5/lib/mongrel”

6) mate / sudo vi handlers.rb

7) arreglar las declaraciones del caso en

En las líneas 208-212, cambie las instancias de ": false" a "then false"

8) sudo gem install gem_plugin (de lo contrario, el mestizo puede colgar)

¡hecho!


Puede forzar la instalación de mestizos como este

sudo gem install mongrel -v 1.2.0.pre2 - --with-cflags = / "- O2 -pipe -march = native -w /"

Esto resuelve el problema.


Puede instalar la versión preliminar de mongrel 1.2 con 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