Beim Ausführen der ausführbaren Datei vom Gem ist ein Fehler aufgetreten, da ein anderer Gem nicht Teil des Pakets ist
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?
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.