2009-07-02 6 views
22

Ich habe mich gestern in die Rails-Entwicklung eingeweiht.
Ich installierte Rubin 1.9.1, Rubine und Schienen.
Laufen gem install mongrel funktionierte gut und angeblich mongrel auch installiert. Ich bin etwas verwirrt, weil:gem install mongrel scheitert mit rubin 1.9.1

  • Skript/Server startet webrick standardmäßig
  • which mongrel kehrt nichts
  • locate mongrel kehrt viele Einträge wie
 
/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 
. 
. 
. 

aussehen mag ich nicht reinrassig installiert (sowohl die Standardinstallation als auch meine benutzerdefinierte Installation). Warum also nicht, welcher Mischling etwas zurückgibt.

Auch Mischlings gem install mongrel kehrt wirft seine eigene Reihe von Ausnahmen mit neu zu installieren versuchen:

 
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 

Antwort

5

Es sieht aus wie other people are having problems running Mongrel auf Ruby 1.9.

Der Kommentar von Ami Mahloof scheint, wie es eine mögliche Lösung sein könnte:

Hier ist was Sie tun müssen, um es zu beheben

hier die aktualisierten Anweisungen:

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

2) sudo vi/paaren auf http11.c und:

Zeile 77 durch

ersetzen für (ch = RSTRING_PTR (f), Ende = ch + RSTRING_LEN (f); ch < Ende; ch ++) {

ersetzen Leitung 172 mit

colon = strchr (RSTRING_PTR (temp), ':');

ersetzen Linie 174 mit

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

REPLCE Linie 176.177

rb_str_substr (temp, Colon - RSTRING_PTR (temp) +1, RSTRING_LEN (temp)));

ersetzen Linien 298 299

dptr = RSTRING_PTR (Daten);

dlen = RSTRING_LEN (Daten);

3) speichern, die Datei, die in der Nähe vi/Textmate

4) Sudo rubin extconf.rb & & sudo & & sudo make

5) cd ../../lib/mongrel (oder der vollständige Pfad „/usr/local/lib/ruby/gems/1.9.1/gems/ installieren Mischlings-1.1.5/lib/Mischlings“

6) Mate/sudo vi handlers.rb

7) den Fall, in Aussagen beheben

in den Zeilen 208-212, ändern Instanzen„: false "Bis" dann falsch "

8) sudo gem install gem_plugin (sonst kann der Mischling hängen)

erledigt!

+2

die Seite ist unten, können Sie bitte den Kommentar/den Inhalt hier einfügen, danke – msanjay

3

Es ist eine Zusammenstellung Problem so ist es einfacher, dies zu tun:

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

speichert es und jetzt aus dem gleichen Verzeichnis wie folgt vor::

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

cd mongrel/ext/http/ 

nun die http11.c bearbeiten

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

Fertig!

47

Sie können mit sudo gem install mongrel --pre Mischlings 1.2 Pre-Release installieren:

 
$ 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

Das hat für mich funktioniert, vielen Dank! – alvincrespo

+0

Ich bin auf Rails 2.3.8/Ruby 1.9 und das hat auch für mich funktioniert. – dafmetal

2

Sie können Mischlings So installieren Zwingen wie diese

sudo gem install Mischlings -v 1.2.0.pre2 - --with-cflags = \ "- O2-pipe -march = nativ -w \"

Dies lösen das Problem.