Beim Ausführen der ausführbaren Datei vom Gem ist ein Fehler aufgetreten, da ein anderer Gem nicht Teil des Pakets ist

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

Frage

Ich erschaffe ein Juwel (siehe https://github.com/hamchapman/rewinder), das Ruby-Git (https://github.com/schacon/ruby-git) als Abhängigkeit.

Ein Teil meines Edelsteins hat eine ausführbare Datei https://github.com/hamchapman/rewinder/blob/master/bin/rewinder

was im Grunde nur die Haupt-Lib-Datei erfordert https://github.com/hamchapman/rewinder/blob/master/lib/rewinder.rb

und führt dann die Methode dort aus (im Moment alles chaotisch – ignorieren Sie das vorerst).

Wenn ich das Gem lokal installiere und in einem anderen Repo verwende, erhalte ich die folgende Fehlermeldung:

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

Ich verstehe den Fehler nicht wirklich, da weder mein Edelstein noch der Ruby-Git-Gem einen haben hookup als Abhängigkeit.Wenn ich die Datei lade /Users/Hami/.rvm/gems/ruby-2.1.2/bin/hookup

Kommentieren Sie dann die beiden unteren Zeilen wie folgt aus:

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

dann tritt der Fehler nicht auf.

Nach dem, was ich gelesen habe, könnte es etwas damit zu tun haben, wie oh-my-zsh bestimmte Befehle umschließt – vielleicht ist es ein Git-Befehl?

Irgendwelche Vorschläge?

War es hilfreich?

Lösung

Von dem Anschlussdokumentation:

Jedes Mal, wenn sich Ihr aktueller HEAD ändert, prüft Hookup, ob Ihr aktueller HEAD vorhanden ist Gemfile, Gemfile.lock, oder die Edelsteinspezifikation hat sich geändert.Wenn dies der Fall ist, wird die Bundle-Prüfung ausgeführt. Wenn dies darauf hinweist, dass Abhängigkeiten nicht erfüllt sind, wird die Bundle-Installation ausgeführt.

Daraus schließe ich, dass der Edelstein zuhört git checkout Veranstaltungen.Da Sie dies in Ihrem Code tun, werden die Hookup-Hooks zum Leben erweckt und verwirren (unabhängig davon, ob sie Teil Ihrer Ruby-Anwendung sind oder nicht).

Versuchen Sie, das Gem zu deinstallieren und versuchen Sie es erneut.

Wenn Ihr Problem dadurch behoben wird, können Sie dem Autor des Gems ein Problem melden, um das Problem zu beheben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top