2009-07-02 11 views
22

Je me suis initié au développement des rails hier.
J'ai installé ruby ​​1.9.1, rubygems et rails.
Courir gem install mongrel a bien fonctionné et ostensiblement installé le bâtard aussi. Je suis un peu perplexe parce que:gem install mongrel échoue avec ruby ​​1.9.1

    scripts
  • /serveur démarre webrick par défaut
  • which mongrel retours ne
  • locate mongrel renvoie beaucoup d'entrées comme
 
/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 
. 
. 
. 

Ne ressemble comme je l'ai bâtarde installé (à la fois l'installation par défaut et mon installation personnalisée). Alors, pourquoi le bâtard ne retourne-t-il pas quelque chose?

essayant également de réinstaller bâtarde à l'aide gem install mongrel retours jette ses propres exceptions:

 
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 

Répondre

5

Il ressemble other people are having problems running Mongrel sur Ruby 1.9.

Le commentaire par Ami Mahloof semble que cela pourrait être une solution possible:

Voici ce que vous devez faire pour corriger

est ici les instructions mises à jour:

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

2) sudo vi/s'accoupler sur http11.c et:

remplacer la ligne 77 par

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

remplacer la ligne 172 avec

côlon = strchr (RSTRING_PTR (temp), ':');

remplacer la ligne 174 avec

rb_hash_aset (req, global_server_name, rb_str_substr (temp, 0, du côlon - RSTRING_PTR (temp)));

REPLCE ligne 176177

rb_str_substr (temp, du côlon - RSTRING_PTR (temp) 1, RSTRING_LEN (temp)));

remplacer les lignes 298 299

dptr = RSTRING_PTR (données);

dlen = RSTRING_LEN (données);

3) enregistrer le fichier, fermez le vi/TextMate

4) rubis extconf sudo.rb & & sudo make & & sudo make install

5) cd ../../lib/mongrel (ou le chemin complet « /usr/local/lib/ruby/gems/1.9.1/gems/ bâtarde-1.1.5/lib/bâtarde »

6) compagnon/vi handlers.rb sudo

7) fixer les déclarations de cas dans

sur les lignes 208-212, changer les instances de « : false "À" alors faux "

8) sudo gem install gem_plugin (sinon le mongrel peut se bloquer)

done!

+2

le site est en panne, pouvez vous s'il vous plaît coller le commentaire/le contenu ici, merci – msanjay

3

Il est une question de compilation il est donc plus facile de le faire:

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

cd mongrel/ext/http/ 

modifier Maintenant, le http11.c:

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

Enregistrer et maintenant dans le même répertoire procédez comme suit:

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

Fait!

47

Vous pouvez installer bâtarde 1.2 avec préversion 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

Cela a fonctionné pour moi, merci beaucoup! – alvincrespo

+0

Je suis sur Rails 2.3.8/Ruby 1.9 et cela a fonctionné pour moi aussi. – dafmetal

2

Vous pouvez forcer à installer bâtarde comme ce

sudo gem installer bâtarde -v 1.2.0.pre2 - --with-cflags = \ "- O2 -pip -march = natif -w \"

Ceci Résolvez le problème.