Rails 3.1 e Ruby 1.9.3p125: ruby-debug19 si blocca ancora con “Simbolo non trovato: _ruby_threadptr_data_type”

Possibile duplicato:
ruby-debug con Ruby 1.9.3?

Avevo sentito dire che Ruby 1.9.3p125 ha una soluzione per il problema ruby-debug19, quindi per istruzioni sul sito RVM, ho reinstallato 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] 

Poi:

 gem install ruby-debug19 

Aggiunta questa voce al mio Gemfile:

 gem 'ruby-debug19' 

Poi:

 $ 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 

Per superare questo errore ho cambiato la mia voce Gemfile in:

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

Ora un nuovo errore dal server:

 /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 

Sono molto confuso dalle centinaia di post là fuori su come gestire questo problema di ruby-debug19. Speravo che fosse stato risolto. Apparentemente no. Eventuali suggerimenti? (Se qualcuno suggerisce una patch, ti preghiamo di fornire istruzioni passo passo su come applicarla. In passato ho lottato con le patch.)

Esiste ora un fork di ruby-debug chiamato ‘debugger’ che incorpora molte delle correzioni che la gente aveva implementato in ruby-debug19, quindi dovresti essere in grado di cambiare il tuo Gemfile in

 gem 'debugger' 

… e vai.

Per farla breve: non è stato risolto, e la risoluzione ufficiale verrà solo con una nuova versione di ruby-debug19 o ruby-debug-base19. È piuttosto aggravante, lo so.

Ho anche lavorato molto su questo, e ho tenuto d’occhio le cose a partire dal 1.9.3 (perché amavamo-amiamo-amare per usarlo in produzione). Tuttavia, purtroppo, 1.9.3-p125 non ha una correzione per Ruby-Debug. Solo ruby-debug19 avrà la correzione per ruby-debug19, poiché gli autori di ruby-debug19 e ruby-debug-base19 hanno lavorato su una patch e hanno una build di test aggiornata su Ruby 1.9.3 … ma non hanno rilasciato al pubblico in generale . ruby-debug-base19 non ha visto un rilascio in eoni; ruby-debug19 ancora più a lungo (dal ’09).

Se sei su rvm head , dovresti essere in grado di installare 1.9.3-p125 con la “patch falcon” aggiunta qui (e notato qui su RVM. Questo gist sembra avere istruzioni migliori (è un fork più recente del precedente uno).

La cosa migliore da fare è usare la pry . È una sostituzione simile ad un irb per il deby- ruby-debug e funziona con tutte le versioni di Ruby senza patch fastidiose!

https://github.com/pry/pry

Devi passare il –with-ruby-include e puntarlo nella directory src perché funzioni.

(la maggior parte di queste risposte altrove su SO sono diventate obsolete dal 1.9.3-p125.)

Ho scritto qui nuove istruzioni per Ubuntu 11.10 che funzionano sulla mia macchina, ma provale su darwin e vedi se aiutano ?: https://gist.github.com/2218661

Ho avuto problemi simili usando Rails 3.2 con il debug di Ruby 1.9.3p0 in Aptana.
Per me, il nuovo ruby-debug-base193 non viene compilato. Ma ciò che funziona bene è una correzione che è stata pubblicata altrove:

Gemfile:
gem “ruby-debug-ide19”
gem “ruby-debug-base19”

E quindi fornire il mancante is_binary_data? metodo da qualche parte. L’ho inserito nel mio file Rails application.rb in questo modo:

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