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