Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I vendorize gems for Rails3/Bundler

In Rails 2.X, I could simply copy gems into vendor/gems/gem_name, or use the rake command rake gems:unpack. Since Rails3 uses bundler, it doesn't appear to work anymore. I have found the command bundle package, but it doesn't work the same way.

Edit:

So, just to elaborate a bit on this:

The way that rails 2 worked, I could easily grep to find stuff in vendor/gems. If they are bundled up in .gem files, that isn't possible. Also, when developing a gem/plugin, it's very helpful to have it placed within a rails application to test it out in context. How would I do such things with bundler/rails3? Is my workflow inherently broken somehow?

like image 239
troelskn Avatar asked Sep 05 '10 16:09

troelskn


People also ask

Where does bundler look for gems?

gem files your app uses in vendor/cache . Running bundle install will prefer gems in vendor/cache to gems in other locations.

What does bundle gem do?

Bundler provides a consistent environment for Ruby projects by tracking and installing the exact gems and versions that are needed. Bundler is an exit from dependency hell, and ensures that the gems you need are present in development, staging, and production.


1 Answers

Answering the second part of your question, developing a plugin/gem and shipping it with the rails app without making the gem publicly available, you may do this

Gemfile

gem 'my_private_gem', :path => "vendor/gems/my_private_gem-VERSION" 

assuming you performed a gem unpack my_private_gem --target vendor/gems

note: bundle package unpacks all gems (as many as in Gemfile.lock). I wouldn't want those in git.

like image 139
oma Avatar answered Sep 28 '22 03:09

oma