gem install mongrel терпит неудачу с ruby 1.9.1
вчера я начал разработку rails.
Я установил ruby 1.9.1, rubygems и рельсы.
Бег!--2--> работал отлично и якобы установил дворнягу тоже. Я немного озадачен, потому что:
- скрипт / сервер запускает webrick по умолчанию
-
which mongrel
ничего не возвращает -
locate mongrel
возвращает множество записей, таких как
/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 . . .
похоже, что у меня установлена дворняжка (оба по умолчанию установка и моя пользовательская установка). Так почему же эта дворняжка ничего не возвращает?
также пытается переустановить mongrel с помощью gem install mongrel
возвращает собственный набор исключений:
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
4 ответов
похоже у других людей возникают проблемы с запуском дворняги на Ruby 1.9.
комментарии Ами Mahloof, похоже, это может быть возможно исправить:
вот что вам нужно сделать, чтобы исправить это
вот обновленные инструкции:
1) cd / usr / local/lib/ruby/gems/1.9.1/gems/mongrel-1.1.5/ext / http11
2) sudo vi / mate на http11.c и:
заменить строку 77 с
for(ch = RSTRING_PTR( f), end = ch + RSTRING_LEN(f); ch
заменить строку 172 с
двоеточие = strchr(rstring_ptr (temp),':');
заменить строку 174 с
rb_hash_aset(req, global_server_name, rb_str_substr (temp, 0, двоеточие-RSTRING_PTR (temp)));
линия replce 176,177
rb_str_substr (temp, двоеточие-RSTRING_PTR (temp)+1, RSTRING_LEN (temp)));
заменить строки 298 299
dptr = RSTRING_PTR (данные);
dlen = RSTRING_LEN (data);
3) сохраните файл, закройте ви / текст. сообщ
4) sudo ruby extconf.РБ && судо принять && установка
5) компакт-диск ../../ lib / дворняга (или полный путь "/ usr / local/lib/ruby/gems/1.9.1/gems/mongrel-1.1.5/lib / mongrel"
6) обработчики mate / sudo vi.rb
7) исправьте операторы case в
в строках 208-212 измените экземпляры": false "на"then false"
8) sudo gem установить gem_plugin (иначе дворняжка может повесить)
готово!
Вы можете установить шавки 1.2 пререлиз с 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
это проблема компиляции, поэтому проще сделать это:
git clone git://github.com/mongrel/mongrel.git
cd mongrel/ext/http/
теперь редактировать http11.c
:
#ifndef RSTRING_PTR
#define RSTRING_PTR(s) (RSTRING(s))
#endif
#ifndef RSTRING_LEN
#define RSTRING_LEN(s) (RSTRING(s))
#endif
сохраните его и теперь из того же каталога сделайте следующее:
sudo ruby extconf.rb && sudo make && sudo make install
готово!
вы можете заставить установить дворнягу, как это
sudo gem установить mongrel-v 1.2.0.pre2 -- --с-с CFLAGS=\"-О2 -труба -март=родной -з\"
Это решает проблему.