Ruby’s Bundler introduced a feature that I’m loving for prototypes and quick scripting
Inline Gemfiles
Introduced in v1.10, these avoid needing a separate declaration of a Gemfile and you write it directly into the script you’re creating.
It fixes the following ergonomic issues:
- Writing a separate Gemfile when your program is a single Ruby script is overkill
- Packaging your Gemfile to accompany aforementioned script is a hassle
- For single file scripts you can now rely on Gems!
How To Use It
require 'bundler/inline'
# Declare Gemfile in ruby script
gemfile do
source 'https://rubygems.org'
gem 'mongo'
gem 'pry'
end
client = Mongo::Client.new(ENV.fetch('MONGO_URL'))
PS
I’m not writing much Ruby these days because I work leading engineers, but when I hack on things in my spare time I’m prototyping and want to iterate on an idea before converting it to Golang. I did this recently when iterating on how to speed up controlled MongoDB failovers and when spiking out a terraform-like system for MongoDB configuration management.
Bundler-inline is great for these situations because they’re a single Ruby script but require installing Gems :).