Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning and to Conventional Commits.
Unreleased
v0.1.0 (2026-07-10)
Added
Briefly.definebuilds a facade of real, introspectable, stubbable methods — nomethod_missing.shortcut(canonical, *aliases, &body)with argument, keyword and block forwarding; predicate and bang names; last-declaration-wins overrides. Each shortcut compiles to a real method carrying its body'sarityand parameter kinds, with asource_locationpointing at the block you declared — keyword names are exact, positionals get generated ones (__p0,__r1, …). A wrong-arity call, a missing required keyword and an unknown keyword raiseArgumentErrorat the call site, before anyrescue_fromhandler is consulted.namespace(name) { ... }— groups shortcuts behind a child facade, soApp.db.queryworks without burning root-level names. Takes the whole DSL, including nested namespaces.clear_memos!cascades into it.configurestays atomic across the whole tree: a pass that raises anywhere leaves the root and every namespace untouched. Ashortcutof the same name overrides a namespace and drops the child.memoize— permanent per-process caching, correct fornil/false, never caching a rescued fallback.rescue_from— facade-scoped, facade-wide and global (Briefly.rescue_from) handlers whose return value becomes the shortcut's value.clear_memos!/reset!,configure,shortcuts,shortcut?,inspect.- Pack protocol: any object responding to
#install(builder, **opts).useaccepts keywords, forwarded to the pack'sinstall.Briefly.register(name, pack)/Briefly.pack(name)provide a pack registry, souse "rails/db"resolves; values may be a pack or a constant path resolved on first use, and an unknown name raisesBriefly::UnknownPackError. - Method fabrication — the arity,
parametersandsource_locationeach shortcut reports — is provided by candor, the sole runtime dependency (candor itself has none). Compiled bodies live underCandor::BODY_PREFIX; a shortcut may not take a name there. Briefly::Rails—config/c,config_x/x,envand its predicates,root,cache,logger/log,credentials/cred,helpers/h,routes/r,renderer,render, plus adbnamespace. Nothing in the pack is memoized. ItsConfig,EnvandViewgroups are usable alone.Briefly::Rails::DB—connection/conn,transaction/txn,query.querytakes positional (query(sql, 1)) or named (query(sql, id: 1)) binds, and passes a bindless statement through unsanitized. Takesbase:(default"ApplicationRecord"), resolved on every call so a reloaded class is never captured. Memoizes nothing and wires no lifecycle hook, so it works without a booted application.Briefly::Rails::Reload— clears memos viaRails.application.reloader.to_prepare.- RBS signatures in
sig/.