Module Sequel::Plugins
In: lib/sequel/plugins/instance_hooks.rb
lib/sequel/plugins/association_proxies.rb
lib/sequel/plugins/serialization.rb
lib/sequel/plugins/constraint_validations.rb
lib/sequel/plugins/boolean_subsets.rb
lib/sequel/plugins/optimistic_locking.rb
lib/sequel/plugins/static_cache.rb
lib/sequel/plugins/dataset_associations.rb
lib/sequel/plugins/column_select.rb
lib/sequel/plugins/unlimited_update.rb
lib/sequel/plugins/insert_returning_select.rb
lib/sequel/plugins/subset_conditions.rb
lib/sequel/plugins/list.rb
lib/sequel/plugins/pg_row.rb
lib/sequel/plugins/association_pks.rb
lib/sequel/plugins/string_stripper.rb
lib/sequel/plugins/columns_updated.rb
lib/sequel/plugins/auto_validations.rb
lib/sequel/plugins/update_or_create.rb
lib/sequel/plugins/caching.rb
lib/sequel/plugins/tree.rb
lib/sequel/plugins/uuid.rb
lib/sequel/plugins/serialization_modification_detection.rb
lib/sequel/plugins/error_splitter.rb
lib/sequel/plugins/validation_contexts.rb
lib/sequel/plugins/input_transformer.rb
lib/sequel/plugins/typecast_on_load.rb
lib/sequel/plugins/defaults_setter.rb
lib/sequel/plugins/finder.rb
lib/sequel/plugins/single_table_inheritance.rb
lib/sequel/plugins/column_conflicts.rb
lib/sequel/plugins/rcte_tree.rb
lib/sequel/plugins/nested_attributes.rb
lib/sequel/plugins/before_after_save.rb
lib/sequel/plugins/association_dependencies.rb
lib/sequel/plugins/timestamps.rb
lib/sequel/plugins/table_select.rb
lib/sequel/plugins/modification_detection.rb
lib/sequel/plugins/composition.rb
lib/sequel/plugins/json_serializer.rb
lib/sequel/plugins/boolean_readers.rb
lib/sequel/plugins/update_refresh.rb
lib/sequel/plugins/tactical_eager_loading.rb
lib/sequel/plugins/hook_class_methods.rb
lib/sequel/plugins/split_values.rb
lib/sequel/plugins/prepared_statements.rb
lib/sequel/plugins/validation_helpers.rb
lib/sequel/plugins/singular_table_names.rb
lib/sequel/plugins/after_initialize.rb
lib/sequel/plugins/xml_serializer.rb
lib/sequel/plugins/delay_add_association.rb
lib/sequel/plugins/inverted_subsets.rb
lib/sequel/plugins/prepared_statements_safe.rb
lib/sequel/plugins/instance_filters.rb
lib/sequel/plugins/blacklist_security.rb
lib/sequel/plugins/def_dataset_method.rb
lib/sequel/plugins/active_model.rb
lib/sequel/plugins/validation_class_methods.rb
lib/sequel/plugins/pg_array_associations.rb
lib/sequel/plugins/class_table_inheritance.rb
lib/sequel/plugins/many_through_many.rb
lib/sequel/plugins/whitelist_security.rb
lib/sequel/plugins/skip_create_refresh.rb
lib/sequel/plugins/force_encoding.rb
lib/sequel/plugins/lazy_attributes.rb
lib/sequel/plugins/validate_associated.rb
lib/sequel/plugins/pg_auto_constraint_validations.rb
lib/sequel/plugins/accessed_columns.rb
lib/sequel/plugins/touch.rb
lib/sequel/plugins/dirty.rb
lib/sequel/plugins/eager_each.rb
lib/sequel/plugins/subclasses.rb
lib/sequel/plugins/sharding.rb
lib/sequel/plugins/csv_serializer.rb
lib/sequel/plugins/mssql_optimistic_locking.rb
lib/sequel/plugins/update_primary_key.rb
lib/sequel/extensions/_model_pg_row.rb
lib/sequel/extensions/_model_constraint_validations.rb
lib/sequel/model/plugins.rb

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.

Methods

Classes and Modules

Module Sequel::Plugins::AccessedColumns
Module Sequel::Plugins::ActiveModel
Module Sequel::Plugins::AfterInitialize
Module Sequel::Plugins::AssociationDependencies
Module Sequel::Plugins::AssociationPks
Module Sequel::Plugins::AssociationProxies
Module Sequel::Plugins::AutoValidations
Module Sequel::Plugins::BeforeAfterSave
Module Sequel::Plugins::BlacklistSecurity
Module Sequel::Plugins::BooleanReaders
Module Sequel::Plugins::BooleanSubsets
Module Sequel::Plugins::Caching
Module Sequel::Plugins::ClassMethods
Module Sequel::Plugins::ClassTableInheritance
Module Sequel::Plugins::ColumnConflicts
Module Sequel::Plugins::ColumnSelect
Module Sequel::Plugins::ColumnsUpdated
Module Sequel::Plugins::Composition
Module Sequel::Plugins::ConstraintValidations
Module Sequel::Plugins::CsvSerializer
Module Sequel::Plugins::DatasetAssociations
Module Sequel::Plugins::DefDatasetMethod
Module Sequel::Plugins::DefaultsSetter
Module Sequel::Plugins::DelayAddAssociation
Module Sequel::Plugins::Dirty
Module Sequel::Plugins::EagerEach
Module Sequel::Plugins::ErrorSplitter
Module Sequel::Plugins::Finder
Module Sequel::Plugins::ForceEncoding
Module Sequel::Plugins::HookClassMethods
Module Sequel::Plugins::InputTransformer
Module Sequel::Plugins::InsertReturningSelect
Module Sequel::Plugins::InstanceFilters
Module Sequel::Plugins::InstanceHooks
Module Sequel::Plugins::InvertedSubsets
Module Sequel::Plugins::JsonSerializer
Module Sequel::Plugins::LazyAttributes
Module Sequel::Plugins::List
Module Sequel::Plugins::ManyThroughMany
Module Sequel::Plugins::ModificationDetection
Module Sequel::Plugins::MssqlOptimisticLocking
Module Sequel::Plugins::NestedAttributes
Module Sequel::Plugins::OptimisticLocking
Module Sequel::Plugins::PgArrayAssociations
Module Sequel::Plugins::PgAutoConstraintValidations
Module Sequel::Plugins::PgRow
Module Sequel::Plugins::PreparedStatements
Module Sequel::Plugins::PreparedStatementsSafe
Module Sequel::Plugins::RcteTree
Module Sequel::Plugins::Serialization
Module Sequel::Plugins::SerializationModificationDetection
Module Sequel::Plugins::Sharding
Module Sequel::Plugins::SingleTableInheritance
Module Sequel::Plugins::SingularTableNames
Module Sequel::Plugins::SkipCreateRefresh
Module Sequel::Plugins::SplitValues
Module Sequel::Plugins::StaticCache
Module Sequel::Plugins::StringStripper
Module Sequel::Plugins::Subclasses
Module Sequel::Plugins::SubsetConditions
Module Sequel::Plugins::TableSelect
Module Sequel::Plugins::TacticalEagerLoading
Module Sequel::Plugins::Timestamps
Module Sequel::Plugins::Touch
Module Sequel::Plugins::Tree
Module Sequel::Plugins::TypecastOnLoad
Module Sequel::Plugins::UnlimitedUpdate
Module Sequel::Plugins::UpdateOrCreate
Module Sequel::Plugins::UpdatePrimaryKey
Module Sequel::Plugins::UpdateRefresh
Module Sequel::Plugins::Uuid
Module Sequel::Plugins::ValidateAssociated
Module Sequel::Plugins::ValidationClassMethods
Module Sequel::Plugins::ValidationContexts
Module Sequel::Plugins::ValidationHelpers
Module Sequel::Plugins::WhitelistSecurity
Module Sequel::Plugins::XmlSerializer

Public Class methods

Add method to mod that overrides set_dataset to call the method afterward.

[Source]

    # File lib/sequel/model/plugins.rb, line 46
46:     def self.after_set_dataset(mod, meth)
47:       mod.send(:define_method, :set_dataset) do |*a|
48:         r = super(*a)
49:         # Allow calling private class methods as methods this specifies are usually private
50:         send(meth)
51:         r
52:       end
53:     end

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.

This should not be called with untrusted input or method names that can‘t be used literally, since it uses class_eval.

[Source]

    # File lib/sequel/model/plugins.rb, line 31
31:     def self.def_dataset_methods(mod, meths)
32:       Array(meths).each do |meth|
33:         mod.class_eval("def #{meth}(*args, &block); dataset.#{meth}(*args, &block) end", __FILE__, __LINE__)
34:       end
35:     end

Add method to mod that overrides inherited_instance_variables to include the values in this hash.

[Source]

    # File lib/sequel/model/plugins.rb, line 39
39:     def self.inherited_instance_variables(mod, hash)
40:       mod.send(:define_method, :inherited_instance_variables) do ||
41:         super().merge!(hash)
42:       end
43:     end

[Validate]