Errore durante l'esecuzione eseguibile da Gem perché un altro gemma non fa parte del pacchetto

StackOverflow https://stackoverflow.com//questions/25021077

Domanda

Sto creando una gemma (vedere https://github.com/hamchapman/rewinder ) che ha ruby-git ( https://github.com/schacon/ruby-git ) come una dipendenza.

parte della mia gemma ha un eseguibile https://github.com/hamchapman / Rewinder / Blob / Master / Bin / Rewinder

che fondamentalmente richiede solo il file libi principale https:// github. com / hamchapman / rewinder / blob / master / lib / rewinder.rb

e quindi esegue il metodo lì (tutto disordinato al momento - Ignoralo per ora).

Quando installo la gemma localmente e lo usi in un altro repo, ottengo il seguente errore:

/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>'
.

Non capisco davvero l'errore di vedere come né il mio gioiello, né la gemma rubino-git ha hookup come dipendenza. Se carico il file /Users/Hami/.rvm/gems/ruby-2.1.2/bin/hookup

Quindi commentare le due righe in basso come questa:

#!/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)
.

Quindi l'errore non si verifica.

Da quello che ho letto sembra che potrebbe essere qualcosa a che fare con come oh-my-zsh avvolge determinati comandi - forse lo avvolge un git?

Qualche suggerimento?

È stato utile?

Soluzione

Dal Documentazione di hookup :

.

Ogni volta che la testina corrente cambia, hookup che controlla per vedere se il tuo Gemfile, Gemfile.lock o specifiche GEM è cambiato.In tal caso, esegue il controllo del bundle, e se ciò indica che le dipendenze non sono soddisfatte, esegue l'installazione del pacchetto.

Da ciò riunisco che la gemma ascolta gli eventi git checkout.Dato che lo fai nel tuo codice, i ganci di hookup vengono in vita e si confondono (indipendentemente dal fatto che sia parte della tua applicazione rubino o meno).

Prova a disinstallare la gemma e riprova.

Se questo risolve il tuo problema, potresti prendere in considerazione l'apertura di un problema all'autore della gemma per risolvere questo problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top