Load the sole extension via db.extension(:sole)
Use Sequel's extension API to load and apply the sole dataset extension,
instead of reaching past the registration with extend_datasets. Puts
lib/ on the load path so Sequel can require "sequel/extensions/sole".

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N92HLTepkg3AtRpDUyZ54o
change
commit 1763df3bc04bd2be724510337ef9a580ea099aee
author Claude <noreply@anthropic.com>
date
parent da0d13d5
diff --git a/lib/app.rb b/lib/app.rb
index a8f53fc..3aee12c 100644
--- a/lib/app.rb
+++ b/lib/app.rb
@@ -2,7 +2,10 @@
 
 require "sequel"
 require_relative "config"
-require_relative "sequel/extensions/sole"
+
+# Put lib/ on the load path so Sequel can find our dataset extensions by name
+# (e.g. db.extension(:sole) requires "sequel/extensions/sole").
+$LOAD_PATH.unshift(__dir__) unless $LOAD_PATH.include?(__dir__)
 
 module Domus
   class App
@@ -12,7 +15,7 @@ module Domus
     def initialize(config = Config.env)
       @config = config
       @db = Sequel.sqlite(config.database_url)
-      @db.extend_datasets(Sequel::Sole::DatasetMethods)
+      @db.extension(:sole)
     end
 
     # : (Hash[Symbol, untyped]) -> Pathname
diff --git a/lib/sequel/extensions/sole.rb b/lib/sequel/extensions/sole.rb
index e9cd62d..bab330b 100644
--- a/lib/sequel/extensions/sole.rb
+++ b/lib/sequel/extensions/sole.rb
@@ -12,9 +12,9 @@ module Sequel
   #   db[:assets].where(id: 0).sole  # raises Sequel::NoMatchingRow
   #   db[:assets].sole               # raises Sequel::Sole::TooManyRows (if > 1)
   #
-  # Apply it to every dataset of a database with:
+  # Load it onto every dataset of a database with:
   #
-  #   db.extend_datasets(Sequel::Sole::DatasetMethods)
+  #   db.extension(:sole)
   module Sole
     class TooManyRows < Sequel::Error; end