Rails 3.1 и Ruby 1.9.3p125: ruby-debug19 по-прежнему падает с "Символ не найден: _ruby_threadptr_data_type"

Возможный дубликат:
ruby-debug с Ruby 1.9.3?

Я слышал слухи, что ruby ​​1.9.3p125 имеет решение проблемы ruby-debug19, поэтому в инструкциях на сайте RVM я переустановил 1.9.3:

$ rvm reinstall 1.9.3 --patch debug --force-autoconf
$ ruby -v
  ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin11.2.0]

Тогда:

gem install ruby-debug19

Добавил эту запись в мой Gemfile:

gem 'ruby-debug19'

Тогда:

$ rails server -u         
=> Booting WEBrick
=> Rails 3.1.3 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
You need to install ruby-debug to run the server in debugging mode. With gems, use 'gem install ruby-debug'
Exiting

Чтобы пройти эту ошибку, я поменял запись Gemfile на:

gem 'ruby-debug19', :require => 'ruby-debug'

Теперь появилась новая ошибка с сервера:

/Users/don/.rvm/gems/ruby-1.9.3-p125/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:240:in `require': dlopen(/Users/don/.rvm/gems/ruby-1.9.3-p125/gems/ruby-debug-base19-0.11.25/lib/ruby_debug.bundle, 9): Symbol not found: _ruby_threadptr_data_type (LoadError)
  Referenced from: /Users/don/.rvm/gems/ruby-1.9.3-p125/gems/ruby-debug-base19-0.11.25/lib/ruby_debug.bundle
  Expected in: flat namespace
 in /Users/don/.rvm/gems/ruby-1.9.3-p125/gems/ruby-debug-base19-0.11.25/lib/ruby_debug.bundle - /Users/don/.rvm/gems/ruby-1.9.3-p125/gems/ruby-debug-base19-0.11.25/lib/ruby_debug.bundle

Я очень смущен сотнями сообщений о том, как справиться с этой проблемой ruby-debug19. Я надеялся, что это было решено. Очевидно нет. Какие-либо предложения? (Если кто-то предлагает патч, предоставьте пошаговые инструкции о том, как его применять. В прошлом я боролся с исправлениями.)

Ответ 2

Короче говоря: он не разрешен, и официальное разрешение поступит только с новой версией ruby-debug19 или ruby-debug-base19. Я знаю, что это довольно усугубляет.

Я тоже много сделал для этого, и я следил за вещами, так как вышел 1.9.3 (потому что мы любим любить использовать его в производстве). Однако, к сожалению, 1.9.3-p125 не имеет исправления для ruby-debug. Только ruby-debug19 будет иметь исправление для ruby-debug19, поскольку авторы ruby-debug19 и ruby-debug-base19 работают над патчем и имеют обновленную тестовую сборку, работающую над Ruby 1.9.3... но они не выпустили его для широкой публики. ruby-debug-base19 не видел выпуск в eons; ruby-debug19 еще длиннее (с '09).

Если вы находитесь на rvm head, вы сможете установить 1.9.3-p125 с добавленным патчем falcon найденным здесь (и отметил здесь RVM здесь. Этот метод, похоже, имеет лучшие инструкции (это более новая версия старого).

Ответ 3

Лучше всего использовать только pry. Его irb-подобная замена для ruby-debug и работает со всей версией Ruby без неприятных исправлений!

https://github.com/pry/pry

Ответ 4

Вы должны передать --with-ruby-include и указать его в каталог src, чтобы это работало.

(большинство из этих ответов в другом месте на SO исчезли с версии 1.9.3-p125.)

Я написал здесь новые инструкции для ubuntu 11.10, которые работают на моей машине, но дайте им попробовать на darwin и посмотрим, помогут ли они?: https://gist.github.com/2218661

Ответ 5

У меня были проблемы с использованием Rails 3.2 с отладкой Ruby 1.9.3p0 в Aptana.
Для меня новый ruby-debug-base193 не компилируется. Но то, что отлично работает, - это исправление, которое было опубликовано в другом месте:

Gemfile:
  gem 'ruby-debug-ide19

  gem 'ruby-debug-base19'

А затем укажите отсутствующий файл is_binary_data? метод где-то. Я поместил его в файл Rails application.rb следующим образом:

class String
  def is_binary_data?
    ( self.count( "^ -~", "^\r\n" ).fdiv(self.size) > 0.3 || self.index( "\x00" ) ) unless empty?
  end
end