If you're hacking on your Gemfile and using Docker, you know the pain of having the bundle install
command run after you've added or removed a gem. Using docker-compose
you could mount a volume and stage your gems there, but this adds additional complexity and doesn't always really solve the problem.
Enter this imperfect solution:
What if we installed every gem into it's own Docker layer which would be happily cached for us?
gem-inject-docker
does just that. It takes the list of gems used by your app via bundle list
and transforms it into a list of RUN gem install <your gem> -v <gem version>
statements and injects them into the Dockerfile at a point of your choosing.