Question

I'm creating a gem (see https://github.com/hamchapman/rewinder) that has ruby-git (https://github.com/schacon/ruby-git) as a dependency.

Part of my gem has an executable https://github.com/hamchapman/rewinder/blob/master/bin/rewinder

which basically just requires the main lib file https://github.com/hamchapman/rewinder/blob/master/lib/rewinder.rb

and then runs the method there (all messy at the moment - ignore that for now).

When I install the gem locally and use it in another repo I get the following 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>'

I don't really understand the error seeing as neither my gem, nor the ruby-git gem have hookup as a dependency. If I load up the file /Users/Hami/.rvm/gems/ruby-2.1.2/bin/hookup

then comment out the bottom two lines like this:

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

then the error doesn't occur.

From what I've read it looks like it could be something to do with how oh-my-zsh wraps certain commands - maybe it's wrapping a git one?

Any suggestions?

Was it helpful?

Solution

From the hookup documentation:

Each time your current HEAD changes, hookup checks to see if your Gemfile, Gemfile.lock, or gem spec has changed. If so, it runs bundle check, and if that indicates any dependencies are unsatisfied, it runs bundle install.

From this I gather that the gem listens to git checkout events. Since you do that in your code, the hookup hooks come to life, and get confused (regardless of whether it is part of your ruby application or not).

Try uninstalling the gem and trying again.

If this resolves your problem, you might consider opening an issue to the author of the gem to fix this.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top