Подтвердить что ты не робот

Gem install mongrel не работает с ruby ​​1.9.1

Вчера я начал заниматься рельсами.
Я установил ruby ​​1.9.1, rubygems и rails.
Запуск gem install mongrel работал отлично и якобы устанавливал дворняжку тоже. Я немного озадачен, потому что:

  • script/сервер запускает 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
4b9b3361

Ответ 1

Похоже на у других людей возникают проблемы с Mongrel на Ruby 1.9.

Комментарий Ami Mahloof кажется, что это может быть возможное исправление:

Heres Что вам нужно сделать, чтобы исправить его

содержит обновленные инструкции:

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

2) sudo vi/mate на http11.c и:

замените строку 77 на

для (ch = RSTRING_PTR (f), end = ch + RSTRING_LEN (f); ch < end; ch ++) {

замените строку 172 на

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

замените строку 174 на

rb_hash_aset (req, global_server_name, rb_str_substr (temp, 0, двоеточие - RSTRING_PTR (темп)));

строка 176 176

rb_str_substr (temp, colon - RSTRING_PTR (темп) +1, RSTRING_LEN (температура)));

заменить строки 298 299

dptr = RSTRING_PTR (данные);

dlen = RSTRING_LEN (данные);

3) сохраните файл, закройте файл vi/textmate

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

5) cd../../lib/mongrel (или полный путь "/usr/local/lib/ruby/gems/1.9.1/gems/mongrel-1.1.5/lib/mongrel"

6) mate/sudo vi handlers.rb

7) исправить утверждения case в

В строках 208-212 измените экземпляры ": false" на "then false"

8) sudo gem install gem_plugin (иначе монгрелл может повесить)

сделано!

Ответ 2

Вы можете установить предварительную предварительную версию mongrel 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

Ответ 3

Это проблема компиляции, поэтому ее проще сделать:

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

Готово!

Ответ 4

Вы можете заставить монджера как это

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

Это решение проблемы.