3 ms·
bundle package puts all your app's dependencies in vendor/cache. That can then be put into a git submodule. The problem then becomes the Gemfile and Gemfile.l
by JonnieCache 14y ago
bundle package
puts all your app's dependencies in vendor/cache. That can then be put into a git submodule.
The problem then becomes the Gemfile and Gemfile.lock, which should really be in that submodule as well. You need to pass flags to bundler commands because it assumes the Gemfile is in the project root.
- timr 14y agoI don't think Heroku's deploy is smart enough to recognize that you've packaged, right? It'll still try to bundle install, which would break in the current situation. I think a full solution requires packaging, and using a modified buildpack that skips the bundle step.
- gry 14y ago$ bundle package Places the gem binaries in vendor/cache, as noted. SCM those. "While installing gems, Bundler will check vendor/cache and then your system's gems. If a gem isn't cached or installed, Bundler will try to install it from the sources you have declared in your Gemfile." http://gembundler.com/bundle_install.html http://gembundler.com/bundle_install.html Heroku uses this tree lookup AFAIK.
- timr 14y agoYeah, I knew that part...I wasn't sure what the default heroku ruby buildpack did. I'm still digging into the source to see what the build process is. It's non-trivial. UPDATE: For others' edification, the default heroku ruby buildpack respects vendor/cache, but will purge it in the following scenarios: * if vendor/ruby_version exists * if vendor/heroku/buildpack_version exists, but vendor/heroku/ruby_version does not * if the bundler cache exists, but vendor/heroku/ruby_version file specifies a different version of ruby than the one actually being used.