From 371b9d284e2176a7293ef8642e05b20d3016fa31 Mon Sep 17 00:00:00 2001 From: Tim Riley Date: Fri, 24 May 2024 12:53:16 +1000 Subject: [PATCH] Set up Zeitwerk for code loading (#1) --- hanami-db.gemspec | 4 +++- lib/hanami/db.rb | 20 ++++++++++++++++++++ lib/hanami/db/gem_inflector.rb | 14 ++++++++++++++ lib/hanami/db/version.rb | 7 +++++++ 4 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 lib/hanami/db/gem_inflector.rb create mode 100644 lib/hanami/db/version.rb diff --git a/hanami-db.gemspec b/hanami-db.gemspec index 442e81a..e158569 100644 --- a/hanami-db.gemspec +++ b/hanami-db.gemspec @@ -1,8 +1,10 @@ # frozen_string_literal: true +require_relative "lib/hanami/db/version" + Gem::Specification.new do |spec| spec.name = "hanami-db" - spec.version = "0.0.0" + spec.version = Hanami::DB::VERSION spec.authors = ["Hanami team"] spec.email = ["admin@hanamirb.org"] spec.summary = "The database layer for Hanami apps" diff --git a/lib/hanami/db.rb b/lib/hanami/db.rb index ad7a4a2..68fcc86 100644 --- a/lib/hanami/db.rb +++ b/lib/hanami/db.rb @@ -1,6 +1,26 @@ # frozen_string_literal: true +require "zeitwerk" + module Hanami module DB + require_relative "db/gem_inflector" + + # @api private + # @since 2.2.0 + def self.loader + @loader ||= Zeitwerk::Loader.new.tap do |loader| + root = File.expand_path("..", __dir__) + + loader.inflector = GemInflector.new("#{root}/hanami/db.rb") + loader.tag = "hanami-db" + loader.push_dir root + loader.ignore( + "#{root}/hanami-db.rb", + "#{root}/hanami/db/gem_inflector.rb" + ) + end + end + loader.setup end end diff --git a/lib/hanami/db/gem_inflector.rb b/lib/hanami/db/gem_inflector.rb new file mode 100644 index 0000000..733f0d4 --- /dev/null +++ b/lib/hanami/db/gem_inflector.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +module Hanami + module DB + # @api private + class GemInflector < Zeitwerk::GemInflector + def camelize(basename, _abspath) + return "DB" if basename == "db" + + super + end + end + end +end diff --git a/lib/hanami/db/version.rb b/lib/hanami/db/version.rb new file mode 100644 index 0000000..58064d9 --- /dev/null +++ b/lib/hanami/db/version.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +module Hanami + module DB + VERSION = "0.0.0" + end +end