Как установить ruby-debug в ruby ​​1.9.3/Rails 3.2.1

Возможный дубликат:
Rails 3.1 и Ruby 1.9.3p125: ruby-debug19 по-прежнему падает с "Symbol not found: _ruby_threadptr_data_type"

Я закончил с печатью на консоли - я хочу перейти на 20-й век и начать использовать отладчик!! Но как установить ruby-debug? Собственная компиляция ruby-debug.c терпит неудачу, когда я пытаюсь установить камень ruby-debug19. Я просмотрел другие сообщения SO и еще не нашел ответа...

  • Я использую Ruby 1.9.3-p0
  • Я использую Rails 3.2 (с Gemfile, конечно)
  • Я НЕ использую RVM - вместо этого у меня есть полностью изолированный каталог, содержащий все исполняемые файлы, драгоценные камни, источники и т.д. Я называю это как SANDBOX ниже...

установка пакета не работает

Если я добавлю ruby-debug19 в свой Gemfile и сделаю bundle install, он завершится неудачно во время сборки с помощью conflicting types for 'rb_iseq_compile_with_option':

# file: Gemfile
...
group :development do
  gem 'ruby-debug19'
end
...

% bundle install
...
Installing ruby-debug-base19 (0.11.25) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
        /Users/r/Developer/Topaz/usr/bin/ruby extconf.rb 
...
ruby_debug.c:29: error: conflicting types for 'rb_iseq_compile_with_option'
$SANDBOX/usr/include/ruby-1.9.1/ruby-1.9.3-p0/vm_core.h:505: error: previous declaration of 'rb_iseq_compile_with_option' was here
...
make: *** [ruby_debug.o] Error 1

gem install ruby-debug из командной строки не работает

Если я попытаюсь создать камень из командной строки, используя аргумент --with-ruby-include, указывающий на каталог include для текущего рубина, я получаю ту же ошибку:

% gem install ruby-debug19 -- --with-ruby-include=$SANDBOX/packages/ruby-1.9.3-p0
Building native extensions.  This could take a while...
ERROR:  Error installing ruby-debug19:
        ERROR: Failed to build gem native extension.

        $SANDBOX/usr/bin/ruby extconf.rb --with-ruby-include=$SANDBOX/packages/ruby-1.9.3-p0/include
checking for rb_method_entry_t.body in method.h... no
checking for vm_core.h... yes
checking for iseq.h... yes
checking for insns.inc... yes
checking for insns_info.inc... yes
checking for eval_intern.h... yes
creating Makefile

make
compiling breakpoint.c
compiling ruby_debug.c
ruby_debug.c:29: error: conflicting types for 'rb_iseq_compile_with_option'
$SANDBOX/usr/include/ruby-1.9.1/ruby-1.9.3-p0/vm_core.h:505: error: previous declaration of 'rb_iseq_compile_with_option' was here

что мне не хватает?

Есть ли --with-ruby-include ожидать чего-то другого? Не сломан ли текущий ruby-debug19?

Ответы

Ответ 1

Благодаря комментарию @Marc Talbot в OP я нашел рабочий рецепт.

скачать linecache19 и ruby-debug-base19 из RubyForge:

% curl -OL http://rubyforge.org/frs/download.php/75414/linecache19-0.5.13.gem
% curl -OL http://rubyforge.org/frs/download.php/75415/ruby-debug-base19-0.11.26.gem

скомпилируйте два камня

% gem install linecache19-0.5.13.gem
Building native extensions.  This could take a while...
Successfully installed linecache19-0.5.13
1 gem installed
...
% gem install ruby-debug-base19-0.11.26.gem -- --with-ruby-include=$SANDBOX/packages/ruby-1.9.3-p0
Building native extensions.  This could take a while...
Successfully installed ruby-debug-base19-0.11.26
1 gem installed
...

обновите свой Gemfile

# file: Gemfile
...
group :development do
  gem 'linecache19', '0.5.13'
  gem 'ruby-debug-base19', '0.11.26'
  gem 'ruby-debug19', :require => 'ruby-debug'
end

установить и проверить отладчик

% bundle install
Fetching source index for http://rubygems.org/
...
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
% irb
irb(main):001:0> require 'ruby-debug'
=> true
irb(main):002:0> debugger
$SANDBOX/usr/lib/ruby/1.9.1/irb/context.rb:166
@last_value = value
(rdb:1) p 'hooray'
"hooray"

Надеюсь, это поможет другим.

Ответ 2

(Из ваших журналов я предполагаю, что вы на Linux, в частности дистрибутив Debian) Это простое решение: В оболочке

sudo apt-get install ruby-dev1.9.3

Примечание. Я действительно не знаю, есть ли пакет с именем ruby-dev1.9.3, потому что я установил ruby-dev для 1.9.2, который был ruby-dev1.9 (думаю, что это было давно. что они, прокомментируйте).

Этот пакет устанавливает заголовки, в которых необходимы расширения C для интерпретатора (ruby.h).