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. Я надеялся, что это было решено. Очевидно нет. Какие-либо предложения? (Если кто-то предложит патч, пожалуйста, предоставьте пошаговые инструкции по его применению. Я боролся с патчами в прошлом.)
5 ответов
В настоящее время существует форк ruby-debug, называемый просто "отладчик", который включает в себя множество исправлений, которые люди устанавливали поверх ruby-debug19, так что вы можете просто изменить свой Gemfile на
gem 'debugger'
... и уходи.
Короче говоря: это не решено, и официальное разрешение будет идти только с новой версией 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 не видел релизов в течение многих эонов; ruby-debug19 еще дольше (с 09 года).
Если вы на rvm head
, у вас должна быть возможность установить 1.9.3-p125 с добавленным здесь "сокольным патчем" (и здесь мы упомянули о RVM. Похоже, в этом гистограмме есть лучшие инструкции (это более новая ветвь старой версии).
Лучше всего просто использовать pry
, Его подобная IRB замена ruby-debug
и это работает со всеми версиями Ruby без неприятных исправлений!
У меня были похожие проблемы при использовании 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
Вы должны передать --with-ruby-include и указать его в своем каталоге src, чтобы это работало.
(большинство этих ответов в других местах на SO устарели с 1.9.3-p125.)
Я написал здесь новые инструкции для Ubuntu 11.10, которые работают на моей машине, но попробуйте дать им пример Дарвина и посмотрите, помогут ли они?: https://gist.github.com/2218661