nomono standardizes local sibling-gem dependency loading for multi-repo setups.
It provides two Gemfile macros:
nomono_gems(**opts)returns{ gem_name => absolute_path }eval_nomono_gems(**opts)directly emitsgem "name", path: "..."
The API mirrors existing *_local.gemfile patterns used in kettle-rb projects, but centralizes path/env logic in one reusable library.
Install the gem and add it to your Gemfile:
bundle add nomonoOr install directly:
gem install nomonoIn your Gemfile (or a modular Gemfile loaded via eval_gemfile):
require "nomono/bundler"
local_gems = %w[
kettle-dev
kettle-test
kettle-soup-cover
]
if ENV.fetch("KETTLE_RB_DEV", "false").casecmp("false").zero?
# remote/released gems
gem "kettle-soup-cover", require: false
else
eval_nomono_gems(gems: local_gems, prefix: "KETTLE_RB")
endBy default (prefix: "NOMONO_GEMS"):
NOMONO_GEMS_DEVcontrols local mode (falsedisables;trueuses~/src/kettle-rb; any other value is a path)NOMONO_GEMS_VENDORED_GEMS(or legacyVENDORED_GEMS) is a comma-delimited list of gems resolved from vendor dirNOMONO_GEMS_VENDOR_GEM_DIR(or legacyVENDOR_GEM_DIR) points at the vendor base pathNOMONO_GEMS_DEBUGenables debug output
Override env variable names with options:
nomono_gems(
gems: %w[rubocop-lts rubocop-ruby3_2],
prefix: "RUBOCOP_LTS",
path_env: "RUBOCOP_LTS_LOCAL",
vendored_gems_env: "VENDORED_GEMS",
vendor_gem_dir_env: "VENDOR_GEM_DIR",
debug_env: "RUBOCOP_LTS_DEBUG"
)After checking out the repo, run bin/setup to install dependencies. Then run specs:
bundle exec rspecTo install locally:
bundle exec rake installBug reports and pull requests are welcome.
The gem is available as open source under the terms of the MIT License.
Everyone interacting in the Nomono project is expected to follow the code of conduct.