Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

When installing gems via bundler, they have an incorrect shebang #3

Closed
nevir opened this Issue · 15 comments

3 participants

@nevir

My environment:

  • OS X Lion
  • rvm-managed ruby 1.9.2-p290

From a clean install w/o gems in the current rvm gemset:

$ gem install rubygems-bundler
$ gem install bundler
$ gem install rake

$ head -1 `which bundle`
#!/usr/bin/env bundler_wrapper
$ head -1 `which rake`
#!/usr/bin/env bundler_wrapper

$ echo -e "source 'http://rubygems.org'\ngem 'compass'" > Gemfile

$ bundle

$ head -1 `which sass`
#!/usr/bin/env ruby
$ head -1 `which compass`
#!/usr/bin/env ruby
@mpapis
Owner

most likely you have a setting BUNDLE_BIN in ~/.bundle/config or in you environment.

using rubygems-bundler does not affect binaries generated by bundler.

You should turn of that BUNDLE_BIN variable as bundler provided binaries are no longer required for proper working when using rubygems-bundler gem.

@nevir

No to both of those :(

$ env | grep BUNDLE_BIN
$ cat ~/.bundle/config
cat: ~/.bundle/config: No such file or directory
@nevir

It doesn't look like it's the traditional bundler-binstubs:

gem install sass
cat `which sass`

outputs https://gist.github.com/1150397

gem uninstall sass
echo -e "source 'http://rubygems.org'\ngem 'sass'" > Gemfile
bundle
cat `which sass`

outputs https://gist.github.com/1150403 - identical except for the shebang

gem uninstall sass
bundle --binstubs
cat bin/sass

outputs https://gist.github.com/1150405 - the bundler binstub

@mpapis
Owner

and what is the output of

bundle config bin

bundle should generate wrappers only when the bin is set. if it is generating binaries in other cases it might mean there is a bug ...

for interactive help you can join me on #rubygems-bundler IRC channel on freenode.

@mpapis
Owner

so this is issue with rubygems, I will check with newest version, thanks

@nevir

Ah, alright. Thanks for looking into this!

Also:

$ gem -v
1.8.6
@booch

I'm having the same problem, with a similar setup. Only difference is that I'm running RubyGems 1.8.8 and RVM. I haven't been able to track down where the problem is in the code, but I suspect that it's in the way Bundler does the gem install -- via a Ruby call instead of the command line.

As a work-around, I've been running gem regenerate_binstubs after every bundle install.

Other than that, I think the plugin is great. Thanks!

@mpapis
Owner

After checking it looks like bundler does not run rubygems plugins, I'm not sure if that is a bug or feature ...

rubygems-bundler uses shebang customization backported from rubygems 1.9, and in 1.9 backporting via rubygems plugin will be not needed - so then it should be working.

For now please use gem regenerate_binstubs as it will solve this problem.

One of main goals of rubygems-bundler is backporting so I will investigate this issue in free time to provide solution to make your life easier.

@booch

OK, I dug deeper, and found that Rubygems only loads plugins when the gem command is run (i.e. when rubygems/gem_runner is loaded). Since neither Bundler nor RubyGems loads that file (except from the gem binary), the rubygems-bundler hooks do not get loaded.

@nevir

Might be worth bringing this up with the bundler guys? They probably want to keep gem-based behavior the same

@booch

I think Rubygems would be the right place to "fix" the problem of hooks only being called when invoked via the gem command.

@mpapis
Owner

I think it might be fixed with this change bundler/bundler#1364 could someone confirm ?

@mpapis
Owner

I have tried the above with bundler 1.0.21 (manually applied the changes over installed gem) and it worked fine, I could not get bundler 1.1pre working - but as soon it will be functional this will work as expected.

@mpapis mpapis closed this
@mpapis
Owner

just to make things easier I have released today mpapis-bundler 1.0.21 with support for rubygems plugins and depending on rubygems-bundler, the future is now - details http://niczsoft.com/2011/10/no-more-bundle-exec/

@mpapis
Owner

there was an update to bundler and to my fork - gem "mpapis-bundler", "~> 1.0.21.1" - updated to reflect bundler/bundler#1500 (comment) ... rubygems plugins allowed via Gemfile:

group :never do
  gem "rubygems-bundler"
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.