/usr/lib/ruby/vendor_ruby/sequel/model/plugins.rb is in ruby-sequel 4.1.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | module Sequel
# Empty namespace that plugins should use to store themselves,
# so they can be loaded via Model.plugin.
#
# Plugins should be modules with one of the following conditions:
# * A singleton method named apply, which takes a model,
# additional arguments, and an optional block. This is called
# the first time the plugin is loaded for this model (unless it was
# already loaded by an ancestor class), before including/extending
# any modules, with the arguments
# and block provided to the call to Model.plugin.
# * A module inside the plugin module named ClassMethods,
# which will extend the model class.
# * A module inside the plugin module named InstanceMethods,
# which will be included in the model class.
# * A module inside the plugin module named DatasetMethods,
# which will extend the model's dataset.
# * A singleton method named configure, which takes a model,
# additional arguments, and an optional block. This is called
# every time the Model.plugin method is called, after including/extending
# any modules.
module Plugins
# In the given module +mod+, define methods that are call the same method
# on the dataset. This is designed for plugins to define dataset methods
# inside ClassMethods that call the implementations in DatasetMethods.
def self.def_dataset_methods(mod, meths)
Array(meths).each do |meth|
mod.class_eval("def #{meth}(*args, &block); dataset.#{meth}(*args, &block) end", __FILE__, __LINE__)
end
end
# Add method to +mod+ that overrides inherited_instance_variables to include the
# values in this hash.
def self.inherited_instance_variables(mod, hash)
mod.send(:define_method, :inherited_instance_variables) do ||
super().merge!(hash)
end
end
# Add method to +mod+ that overrides set_dataset to call the method afterward.
def self.after_set_dataset(mod, meth)
mod.send(:define_method, :set_dataset) do |*a|
r = super(*a)
send(meth)
r
end
end
end
end
|