nifty "microgem" pattern
- published
 - permalink
 - https://accidental.cc/notes/2022/nifty-microgem-pattern/
 
By having a gemspec which parses the yaml frontmatter of it’s own readme,
you can drive a gemspec from a really simple template, and get a nice small
footprint gem, hostable as a gist.
Basically, I found out that since YAML frontmatter in a markdown file uses the
same separators as YAML itself for document separation (which I’m certain was
on purpose), using YAML.load_file on a markdown file will return the frontmatter!
SO, define important parts of the gem in front matter, and take README driven
development to the next level!
require "yaml"
header = YAML.safe_load_file("readme.md")
Gem::Specification.new do |spec|
  spec.name          = header["name"]
  spec.version       = header["version"]
  spec.authors       = ["Jon Raphaelson"]
  spec.email         = ["jon@accidental.cc"]
  spec.summary       = header["summary"]
  spec.license       = "MIT"
  spec.files         = Dir.glob("**/*.rb", base: __dir__)
  spec.require_paths = ["."]
end