Pregunta

Estoy creando una joya (ver https://github.com/hamchapman/rewinder) que tiene ruby-git (https://github.com/schacon/ruby-git) como dependencia.

Parte de mi gema tiene un ejecutable. https://github.com/hamchapman/rewinder/blob/master/bin/rewinder

que básicamente solo requiere el archivo lib principal https://github.com/hamchapman/rewinder/blob/master/lib/rewinder.rb

y luego ejecuta el método allí (todo confuso en este momento; ignórelo por ahora).

Cuando instalo la gema localmente y la uso en otro repositorio, aparece el siguiente error:

/Users/Hami/.rvm/gems/ruby-2.1.2/gems/git-1.2.7/lib/git/lib.rb:764:in `command': git checkout '6eef72baf24bed761f753267cce16402e4a947f8'  2>&1:Note: checking out '6eef72baf24bed761f753267cce16402e4a947f8'. (Git::GitExecuteError)

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at 6eef72b... Trying another bg-color change for homeboy
/Users/Hami/.rvm/gems/ruby-2.1.2@global/gems/bundler-1.6.2/lib/bundler/rubygems_integration.rb:252:in `block in replace_gem': hookup is not part of the bundle. Add it to Gemfile. (Gem::LoadError)
    from /Users/Hami/.rvm/gems/ruby-2.1.2/bin/hookup:22:in `<main>'
    from /Users/Hami/.rvm/gems/ruby-2.1.2/bin/ruby_executable_hooks:15:in `eval'
    from /Users/Hami/.rvm/gems/ruby-2.1.2/bin/ruby_executable_hooks:15:in `<main>'
    from /Users/Hami/.rvm/gems/ruby-2.1.2/gems/git-1.2.7/lib/git/lib.rb:528:in `checkout'
    from /Users/Hami/.rvm/gems/ruby-2.1.2/gems/git-1.2.7/lib/git/base.rb:325:in `checkout'
    from /Users/Hami/.rvm/gems/ruby-2.1.2/gems/rewinder-0.0.1/lib/rewinder.rb:11:in `block in heloo'
    from /Users/Hami/.rvm/gems/ruby-2.1.2/gems/rewinder-0.0.1/lib/rewinder.rb:10:in `each'
    from /Users/Hami/.rvm/gems/ruby-2.1.2/gems/rewinder-0.0.1/lib/rewinder.rb:10:in `each_with_index'
    from /Users/Hami/.rvm/gems/ruby-2.1.2/gems/rewinder-0.0.1/lib/rewinder.rb:10:in `heloo'
    from /Users/Hami/.rvm/gems/ruby-2.1.2/gems/rewinder-0.0.1/bin/rewinder:4:in `<top (required)>'
    from /Users/Hami/.rvm/gems/ruby-2.1.2/bin/rewinder:23:in `load'
    from /Users/Hami/.rvm/gems/ruby-2.1.2/bin/rewinder:23:in `<main>'
    from /Users/Hami/.rvm/gems/ruby-2.1.2/bin/ruby_executable_hooks:15:in `eval'
    from /Users/Hami/.rvm/gems/ruby-2.1.2/bin/ruby_executable_hooks:15:in `<main>'

Realmente no entiendo el error ya que ni mi gema ni la gema Ruby-git tienen hookup como dependencia.Si cargo el archivo /Users/Hami/.rvm/gems/ruby-2.1.2/bin/hookup

luego comenta las dos líneas inferiores como esta:

#!/usr/bin/env ruby_executable_hooks
#
# This file was generated by RubyGems.
#
# The application 'hookup' is installed as part of a gem, and
# this file is here to facilitate running it.
#

require 'rubygems'

version = ">= 0"

if ARGV.first
  str = ARGV.first
  str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding
  if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then
    version = $1
    ARGV.shift
  end
end

#gem 'hookup', version
#load Gem.bin_path('hookup', 'hookup', version)

entonces el error no ocurre.

Por lo que he leído, parece que podría tener algo que ver con la forma en que oh-my-zsh envuelve ciertos comandos; ¿tal vez esté envolviendo uno de git?

¿Alguna sugerencia?

¿Fue útil?

Solución

Desde el documentación de conexión:

Cada vez que su HEAD actual cambia, la conexión verifica si su Gemfile, Gemfile.lock, o la especificación de la gema ha cambiado.Si es así, ejecuta la verificación del paquete y, si eso indica que alguna dependencia no está satisfecha, ejecuta la instalación del paquete.

De esto deduzco que la gema escucha git checkout eventos.Dado que haces eso en tu código, los enlaces de conexión cobran vida y se confunden (independientemente de si es parte de tu aplicación Ruby o no).

Intente desinstalar la gema y vuelva a intentarlo.

Si esto resuelve su problema, podría considerar abrir un problema al autor de la gema para solucionarlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top