Module: DbMod::Statements::DefaultMethodSettings
- Defined in:
- lib/db_mod/statements/default_method_settings.rb
Overview
Allows modules to declare a block of default settings that will be applied to all methods declared in the module using def_prepared
or def_statement
. These default settings will be used for all methods in the module where no overriding settings are declared with the method definition.
module JsonAccessors
include DbMod
default_method_settings do
single(:row).as(:json).returning { |json| do_whatever(json) }
end
# Normal access to instance scope for `returning`
def do_whatever(thing)
# ...
end
def_prepared(:foo, 'SELECT * FROM foo WHERE id = $1')
def_prepared(:bar, 'SELECT * FROM bar WHERE id = $1')
# Overrides can be provided for any setting
def_prepared(:all_foos, 'SELECT * FROM foo') { single(false) }
def_prepared(:csv_foo, 'SELECT * FROM foo WHERE id = $1') do
as(:csv)
end
end
Existing Configuration::MethodConfiguration objects may be passed directly to default_method_settings
instead of supplying a block. This allows configurations to be reused between modules.
SETTINGS = DbMod::Statements::Configuration::MethodConfiguration.new do
single(:row).as(:json)
end
module A
include DbMod
default_method_settings(SETTINGS)
# ...
end
module B
include A
# This also works
default_method_settings(A.default_method_settings)
# ...
end
Class Method Summary collapse
-
.setup(mod) ⇒ Object
Defines a module-specific
default_method_settings
function for a module that has just had DbMod included.
Class Method Details
.setup(mod) ⇒ Object
Defines a module-specific default_method_settings
function for a module that has just had DbMod included.
66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/db_mod/statements/default_method_settings.rb', line 66 def self.setup(mod) class << mod define_method(:default_method_settings) do |*args, &block| unless args.any? || block return @default_method_settings ||= Configuration::MethodConfiguration.new end @default_method_settings = Configuration::MethodConfiguration.new(*args, &block) end end end |