lib/sequel/model.rb in sequel-4.47.0 vs lib/sequel/model.rb in sequel-4.48.0

- old
+ new

@@ -29,67 +29,41 @@ # You can set the +SEQUEL_NO_ASSOCIATIONS+ constant or environment variable to # make Sequel not load the associations plugin by default. class Model OPTS = Sequel::OPTS - # Class methods added to model that call the method of the same name on the dataset - DATASET_METHODS = (Dataset::ACTION_METHODS + Dataset::QUERY_METHODS + [:each_server, :where_all, :where_each, :where_single_value]) - - [:and, :or, :[], :columns, :columns!, :delete, :update, :add_graph_aliases] # SEQUEL5: Remove set_graph_aliases - - # Boolean settings that can be modified at the global, class, or instance level. - BOOLEAN_SETTINGS = [:typecast_empty_string_to_nil, :typecast_on_assignment, :strict_param_setting, \ - :raise_on_save_failure, :raise_on_typecast_failure, :require_modification, :use_transactions, - :use_after_commit_rollback # SEQUEL5: Remove - ] - - # Hooks that are called before an action. Can return false to not do the action. When - # overriding these, it is recommended to call +super+ as the last line of your method, - # so later hooks are called before earlier hooks. + DATASET_METHODS = (Dataset::ACTION_METHODS + Dataset::QUERY_METHODS + [:each_server, :where_all, :where_each, :where_single_value]) - [:and, :or, :[], :columns, :columns!, :delete, :update, :add_graph_aliases] + Sequel::Deprecation.deprecate_constant(self, :DATASET_METHODS) + BOOLEAN_SETTINGS = [:typecast_empty_string_to_nil, :typecast_on_assignment, :strict_param_setting, :raise_on_save_failure, :raise_on_typecast_failure, :require_modification, :use_transactions, :use_after_commit_rollback] + Sequel::Deprecation.deprecate_constant(self, :BOOLEAN_SETTINGS) BEFORE_HOOKS = [:before_create, :before_update, :before_save, :before_destroy, :before_validation] - - # Hooks that are called after an action. When overriding these, it is recommended to call - # +super+ on the first line of your method, so later hooks are called after earlier hooks. - AFTER_HOOKS = [:after_create, :after_update, :after_save, :after_destroy, :after_validation, - :after_commit, :after_rollback, :after_destroy_commit, :after_destroy_rollback] # SEQUEL5: Remove commit/rollback hooks - - # Hooks that are called around an action. If overridden, these methods must call super - # exactly once if the behavior they wrap is desired. The can be used to rescue exceptions - # raised by the code they wrap or ensure that some behavior is executed no matter what. + Sequel::Deprecation.deprecate_constant(self, :BEFORE_HOOKS) + AFTER_HOOKS = [:after_create, :after_update, :after_save, :after_destroy, :after_validation, :after_commit, :after_rollback, :after_destroy_commit, :after_destroy_rollback] + Sequel::Deprecation.deprecate_constant(self, :AFTER_HOOKS) AROUND_HOOKS = [:around_create, :around_update, :around_save, :around_destroy, :around_validation] + Sequel::Deprecation.deprecate_constant(self, :AROUND_HOOKS) + NORMAL_METHOD_NAME_REGEXP = /\A[A-Za-z_][A-Za-z0-9_]*\z/ + Sequel::Deprecation.deprecate_constant(self, :NORMAL_METHOD_NAME_REGEXP) + SETTER_METHOD_REGEXP = /=\z/ + Sequel::Deprecation.deprecate_constant(self, :SETTER_METHOD_REGEXP) + ANONYMOUS_MODEL_CLASSES = @Model_cache = {} + Sequel::Deprecation.deprecate_constant(self, :ANONYMOUS_MODEL_CLASSES) + ANONYMOUS_MODEL_CLASSES_MUTEX = Mutex.new + Sequel::Deprecation.deprecate_constant(self, :ANONYMOUS_MODEL_CLASSES_MUTEX) + INHERITED_INSTANCE_VARIABLES = { :@allowed_columns=>:dup, :@dataset_method_modules=>:dup, :@primary_key=>nil, :@use_transactions=>nil, :@raise_on_save_failure=>nil, :@require_modification=>nil, :@restrict_primary_key=>nil, :@simple_pk=>nil, :@simple_table=>nil, :@strict_param_setting=>nil, :@typecast_empty_string_to_nil=>nil, :@typecast_on_assignment=>nil, :@raise_on_typecast_failure=>nil, :@plugins=>:dup, :@setter_methods=>nil, :@use_after_commit_rollback=>nil, :@fast_pk_lookup_sql=>nil, :@fast_instance_delete_sql=>nil, :@finders=>:dup, :@finder_loaders=>:dup, :@db=>nil, :@default_set_fields_options=>:dup, :@require_valid_table=>nil, :@cache_anonymous_models=>nil, :@dataset_module_class=>nil} + Sequel::Deprecation.deprecate_constant(self, :INHERITED_INSTANCE_VARIABLES) # Empty instance methods to create that the user can override to get hook/callback behavior. # Just like any other method defined by Sequel, if you override one of these, you should # call +super+ to get the default behavior (while empty by default, they can also be defined # by plugins). See the {"Model Hooks" guide}[rdoc-ref:doc/model_hooks.rdoc] for # more detail on hooks. - HOOKS = BEFORE_HOOKS + AFTER_HOOKS + HOOKS = [:before_create, :before_update, :before_save, :before_destroy, :before_validation, + :after_create, :after_update, :after_save, :after_destroy, :after_validation, + :after_commit, :after_rollback, :after_destroy_commit, :after_destroy_rollback # SEQUEL5: Remove commit/rollback hooks + ]#.freeze # SEQUEL5 - # Class instance variables that are inherited in subclasses. If the value is <tt>:dup</tt>, dup is called - # on the superclass's instance variable when creating the instance variable in the subclass. - # If the value is +nil+, the superclass's instance variable is used directly in the subclass. - INHERITED_INSTANCE_VARIABLES = { - :@allowed_columns=>:dup, # SEQUEL5: Remove - :@dataset_method_modules=>:dup, :@primary_key=>nil, :@use_transactions=>nil, - :@raise_on_save_failure=>nil, :@require_modification=>nil, :@restrict_primary_key=>nil, - :@simple_pk=>nil, :@simple_table=>nil, :@strict_param_setting=>nil, - :@typecast_empty_string_to_nil=>nil, :@typecast_on_assignment=>nil, - :@raise_on_typecast_failure=>nil, :@plugins=>:dup, :@setter_methods=>nil, - :@use_after_commit_rollback=>nil, :@fast_pk_lookup_sql=>nil, - :@fast_instance_delete_sql=>nil, - :@finders=>:dup, :@finder_loaders=>:dup, # SEQUEL5: Remove - :@db=>nil, :@default_set_fields_options=>:dup, :@require_valid_table=>nil, - :@cache_anonymous_models=>nil, :@dataset_module_class=>nil} - - # Regular expression that determines if a method name is normal in the sense that - # it could be used literally in ruby code without using send. Used to - # avoid problems when using eval with a string to define methods. - NORMAL_METHOD_NAME_REGEXP = /\A[A-Za-z_][A-Za-z0-9_]*\z/ - - # Regular expression that determines if the method is a valid setter name - # (i.e. it ends with =). - SETTER_METHOD_REGEXP = /=\z/ - @allowed_columns = nil # SEQUEL5: Remove @cache_anonymous_models = true @db = nil @db_schema = nil @dataset = nil @@ -121,16 +95,16 @@ if !defined?(::SEQUEL_NO_ASSOCIATIONS) && !ENV.has_key?('SEQUEL_NO_ASSOCIATIONS') Sequel.require 'associations', 'model' plugin Model::Associations end + def_Model(::Sequel) + # The setter methods (methods ending with =) that are never allowed # to be called automatically via +set+/+update+/+new+/etc.. - RESTRICTED_SETTER_METHODS = instance_methods.map(&:to_s).grep(SETTER_METHOD_REGEXP) + RESTRICTED_SETTER_METHODS = instance_methods.map(&:to_s).select{|l| l.end_with?('=')}#.freeze # SEQUEL5 - def_Model(::Sequel) - # SEQUEL5: Remove class DeprecatedColumnsUpdated # :nodoc: def initialize(columns_updated) @columns_updated = columns_updated end @@ -138,13 +112,7 @@ def method_missing(*args, &block) Sequel::Deprecation.deprecate("Accessing @columns_updated directly", "Use the columns_updated plugin and switch to the columns_updated method") @columns_updated.send(*args, &block) end end - - ANONYMOUS_MODEL_CLASSES = @Model_cache # :nodoc: - Sequel::Deprecation.deprecate_constant(self, :ANONYMOUS_MODEL_CLASSES) - - ANONYMOUS_MODEL_CLASSES_MUTEX = Mutex.new # :nodoc: - Sequel::Deprecation.deprecate_constant(self, :ANONYMOUS_MODEL_CLASSES_MUTEX) end end