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. Я надеялся, что это было решено. Очевидно нет. Какие-либо предложения? (Если кто-то предлагает патч, предоставьте пошаговые инструкции о том, как его применять. В прошлом я боролся с исправлениями.)
Ответы
Ответ 1
Теперь существует вилка ruby-debug, только что названная "отладчик" , которая включает в себя многие исправления, которые люди развертывали поверх ruby-debug19, поэтому вы должны уметь просто менять Gemfile на
gem 'debugger'
... и от вас.
Ответ 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