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
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