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.
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?
gem files your app uses in vendor/cache . Running bundle install will prefer gems in vendor/cache to gems in other locations.
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With