Error de instalación del depurador de Gem

Estoy ejecutando Rails v4.0.2 en Mac OS 10.9.2 y lo tuve todo sin problemas. De repente me aparece un error que dice que faltan gems cuando bash el rails server . Ejecuto bundle install y esta es la salida:

 Fetching gem metadata from https://rubygems.org/....... Fetching additional metadata from https://rubygems.org/.. Using rake 10.1.1 Using i18n 0.6.9 Using minitest 4.7.5 Using multi_json 1.9.0 Using atomic 1.1.16 Using thread_safe 0.2.0 Using tzinfo 0.3.39 Using activesupport 4.0.2 Using builder 3.1.4 Using erubis 2.7.0 Using rack 1.5.2 Using rack-test 0.6.2 Using actionpack 4.0.2 Using mime-types 1.25.1 Using polyglot 0.3.4 Using treetop 1.4.15 Using mail 2.5.4 Using actionmailer 4.0.2 Using activemodel 4.0.2 Using activerecord-deprecated_finders 1.0.3 Using arel 4.0.2 Using activerecord 4.0.2 Using encryptor 1.3.0 Using attr_encrypted 1.3.2 Using awesome_print 1.2.0 Using bcrypt 3.1.7 Using bcrypt-ruby 3.1.5 Using net-ssh 2.8.0 Using net-scp 1.1.2 Using tins 1.0.0 Using term-ansicolor 1.3.0 Using sshkit 1.3.0 Using capistrano 3.1.0 Using capistrano-bundler 1.1.2 Using capistrano-rails 1.1.1 Using climate_control 0.0.3 Using cocaine 0.5.3 Using coderay 1.1.0 Using coffee-script-source 1.7.0 Using execjs 2.0.2 Using coffee-script 2.2.0 Using thor 0.18.1 Using railties 4.0.2 Using coffee-rails 4.0.1 Using columnize 0.3.6 Using currencies 0.4.2 Using countries 0.9.3 Using debugger-linecache 1.2.0 Using debugger-ruby_core_source 1.3.2 Gem::Ext::BuildError: ERROR: Failed to build gem native extension. /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/bin/ruby extconf.rb *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/Users/aaronpardes/.rvm/rubies/ruby-2.1.2/bin/ruby /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:1573:in `stat': No such file or directory @ rb_file_s_stat - ./212/ruby_debug.h (Errno::ENOENT) from /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:1573:in `block in fu_each_src_dest' from /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:1587:in `fu_each_src_dest0' from /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:1571:in `fu_each_src_dest' from /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:399:in `cp' from extconf.rb:83:in `block in ' from extconf.rb:82:in `each' from extconf.rb:82:in `' extconf failed, exit code 1 Gem files will remain installed in /Users/aaronpardes/.rvm/gems/ruby-2.1.2@ocx/gems/debugger-1.6.6 for inspection. Results logged to /Users/aaronpardes/.rvm/gems/ruby-2.1.2@ocx/extensions/x86_64-darwin-13/2.1.0-static/debugger-1.6.6/gem_make.out An error occurred while installing debugger (1.6.6), and Bundler cannot continue. Make sure that `gem install debugger -v '1.6.6'` succeeds before bundling. 

Cuando bash ejecutar el gem install debugger -v '1.6.6' obtengo el siguiente resultado:

 Building native extensions. This could take a while... ERROR: Error installing debugger: ERROR: Failed to build gem native extension. /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/bin/ruby extconf.rb *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/Users/aaronpardes/.rvm/rubies/ruby-2.1.2/bin/ruby /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:1573:in `stat': No such file or directory @ rb_file_s_stat - ./212/ruby_debug.h (Errno::ENOENT) from /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:1573:in `block in fu_each_src_dest' from /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:1587:in `fu_each_src_dest0' from /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:1571:in `fu_each_src_dest' from /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:399:in `cp' from extconf.rb:83:in `block in ' from extconf.rb:82:in `each' from extconf.rb:82:in `' extconf failed, exit code 1 Gem files will remain installed in /Users/aaronpardes/.rvm/gems/ruby-2.1.2@ocx/gems/debugger-1.6.6 for inspection. Results logged to /Users/aaronpardes/.rvm/gems/ruby-2.1.2@ocx/extensions/x86_64-darwin-13/2.1.0-static/debugger-1.6.6/gem_make.out 

Estoy muy confundido de por qué este error surgió de repente. He estado funcionando sin problemas durante semanas. He intentado crear un nuevo gemset con rvm y todavía encuentro el mismo problema. Después de buscar, encontré recomendaciones para actualizar las dependencias primero y luego intentar la bundle install pero esto no resolvió el problema.

Ruby 2.1.2 no es compatible con el depurador, desafortunadamente. En su lugar, utilice la gem byebug . Vea esta discusión para más detalles.

Ruby 2.x no es compatible con la gem del depurador y deberías usar byebug en su lugar. Una vez que se lance Rails 4.2.0 (o si usa las versiones de Rails 4.2.0rc), byebug será el depurador predeterminado incluido en su Gemfile, pero si está en una versión anterior de Rails, deberá hacer el cambio. manualmente en tu Gemfile.

Sólo reemplazar

 gem "debugger" 

con

 gem "byebug" 

en su Gemfile y ejecute un bundle install .

Un poco más de fondo

Incluso el mantenedor de la gem depuradora hace esta recomendación. El archivo README de la gem del depurador en GitHub tiene la siguiente nota :

  • Sólo 1.9.2 y 1.9.3 son compatibles. Para Rubyes 2.X, considera usar Byebug .

El mantenedor no tiene intención de arreglar esto; cerró el problema. El depurador no se puede instalar en Ruby 2.X sin arreglar, lo que explica que el depurador nunca admitió correctamente a Ruby 2.X y que ahora recomienda byebug .

Además, el mantenedor del depurador no ha enviado un compromiso ni ha respondido a una solicitud de extracción desde junio de 2014. La gem parece ser un software de abandono en este momento.

Rails ha adoptado byebug como el depurador oficial para Ruby 2.X a partir de esta solicitud de extracción en abril , y desde Rails 4.2.0 en adelante, el Gemfile creado cuando ejecutas rails new my_new_app_name hará referencia a byebug lugar de debugger para los usuarios de Ruby 2.X .

tl; dr

El depurador está muerto. Utilice byebug .

Esta monstruosidad de un comando terminó haciendo el truco para mí:

 gem install debugger-ruby_core_source && ARCHFLAGS="-I$(dirname -- "$(gem which debugger/ruby_core_source/ruby-$(ruby -v | awk '{sub(/p/, "-p", $2); print $2}')/vm_core.h)") -include vm_core.h" bundle install 

Mis disculpas.

Romperlo:

  • Primero, instale los encabezados de Ruby.

     gem install debugger-ruby_core_source 
  • Ahora, si eso tiene éxito, queremos ejecutar bundle install pero debe ser capaz de encontrar esos encabezados de Ruby. Al buscar en la salida del gem contents debugger-rebuy_core_source de gem contents debugger-rebuy_core_source , encontramos que instala un montón de encabezados diferentes para diferentes niveles de parches de Ruby:

     $ gem contents debugger-ruby_core_source | grep vm_core.h /Users/andrew/.gem/ruby/2.0.0/gems/debugger-ruby_core_source-1.3.2/lib/debugger/ruby_core_source/ruby-1.9.2-p290/vm_core.h /Users/andrew/.gem/ruby/2.0.0/gems/debugger-ruby_core_source-1.3.2/lib/debugger/ruby_core_source/ruby-1.9.2-p318/vm_core.h /Users/andrew/.gem/ruby/2.0.0/gems/debugger-ruby_core_source-1.3.2/lib/debugger/ruby_core_source/ruby-1.9.2-p320/vm_core.h ... 
  • ¿Cuál es el nivel de parche actual?

     $ ruby -v ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin14] 

    Para transformar eso en el formato ruby-2.0.0-p318 utilizado por la gem debugger-ruby_core_source , usamos awk para imprimir solo el segundo campo de esa cadena de versión, y cambiamos la p a -p :

     $ ruby -v | awk '{sub(/p/, "-p", $2); print $2}' 2.0.0-p481 
  • Ahora ejecutamos bundle install , con ARCHFLAGS configurado para agregar el directorio que contiene los encabezados ruby ​​a la ruta de búsqueda de archivos de inclusión, y precargar vm_core.h :

     gem install debugger-ruby_core_source \ && ARCHFLAGS="-I$(dirname -- \ "$(gem which debugger/ruby_core_source/ruby-$(ruby -v | awk '{sub(/p/, "-p", $2); print $2}')/vm_core.h)") \ -include vm_core.h" \ bundle install 

    es decir,

     gem install debugger-ruby_core_source \ && ARCHFLAGS="-I -include vm_core.h" \ bundle install 

Para aquellos que están usando gem 'pry-debugger' simplemente cámbielo a gem 'pry-byebug' en su Gemfile .

Desafortunadamente ninguna respuesta resolvió este problema. Como fue respondido anteriormente por nickh, “Ruby 2.1.2 no es compatible con el depurador”.

Encontré una publicación japonesa que me permitió instalar esta gem, pero no me responsabilizo por ello, ya que no es una publicación oficial. Hazlo bajo tu propio riesgo:

 git clone https://github.com/mekishizufu/debugger.git cd debugger git checkout ca451a9bdf gem build debugger.gemspec gem install debugger-1.6.6.gem 

Fuente: http://d.hatena.ne.jp/mabots/20140723/1406087504

 **Paso 1**
 gilchristiano @ rails-intro: ~ / workspace (master) $ rails --version
 No se pudo encontrar el depurador-1.6.6 en ninguna de las fonts
 Ejecute `bundle install` para instalar las gems que faltan.
 **Paso 2**
 gilchristiano @ rails-intro: ~ / workspace (master) $ debugger-1.6.6
 bash: debugger-1.6.6: comando no encontrado
 **Paso 3**
 gilchristiano @ rails-intro: ~ / workspace (master) $ gem install debugger -v '1.6.6'
 Construcción de extensiones nativas.  Esto podría tomar un tiempo...
 Instalar correctamente el depurador-1.6.6
 1 gem instalada
 **Etapa 4**
 gilchristiano @ rails-intro: ~ / workspace (master) $ bundle install