lib/authlogic/session/callbacks.rb in authlogic-4.0.1 vs lib/authlogic/session/callbacks.rb in authlogic-4.1.0
- old
+ new
@@ -56,64 +56,71 @@
#
# You can NOT define a "before_validation" method, this is bad practice and does not
# allow Authlogic to extend properly with multiple extensions. Please ONLY use the
# method above.
module Callbacks
- METHODS = [
- "before_persisting",
- "persist",
- "after_persisting",
- "before_validation",
- "before_validation_on_create",
- "before_validation_on_update",
- "validate",
- "after_validation_on_update",
- "after_validation_on_create",
- "after_validation",
- "before_save",
- "before_create",
- "before_update",
- "after_update",
- "after_create",
- "after_save",
- "before_destroy",
- "after_destroy"
+ METHODS = %w[
+ before_persisting
+ persist
+ after_persisting
+ before_validation
+ before_validation_on_create
+ before_validation_on_update
+ validate
+ after_validation_on_update
+ after_validation_on_create
+ after_validation
+ before_save
+ before_create
+ before_update
+ after_update
+ after_create
+ after_save
+ before_destroy
+ after_destroy
].freeze
def self.included(base) #:nodoc:
base.send :include, ActiveSupport::Callbacks
- if Gem::Version.new(ActiveSupport::VERSION::STRING) >= Gem::Version.new('5')
+
+ if Gem::Version.new(ActiveSupport::VERSION::STRING) >= Gem::Version.new("5")
base.define_callbacks(
*METHODS + [{ terminator: ->(_target, result_lambda) { result_lambda.call == false } }]
)
base.define_callbacks(
- 'persist',
+ "persist",
terminator: ->(_target, result_lambda) { result_lambda.call == true }
)
- elsif Gem::Version.new(ActiveSupport::VERSION::STRING) >= Gem::Version.new('4.1')
- base.define_callbacks(*METHODS + [{ terminator: ->(_target, result) { result == false } }])
- base.define_callbacks('persist', terminator: ->(_target, result) { result == true })
else
- base.define_callbacks(*METHODS + [{ terminator: 'result == false' }])
- base.define_callbacks('persist', terminator: 'result == true')
+ base.define_callbacks(
+ *METHODS + [{ terminator: ->(_target, result) { result == false } }]
+ )
+ base.define_callbacks("persist", terminator: ->(_target, result) { result == true })
end
- # If Rails 3, support the new callback syntax
- if base.singleton_class.method_defined?(:set_callback)
- METHODS.each do |method|
- base.class_eval <<-EOS, __FILE__, __LINE__
- def self.#{method}(*methods, &block)
- set_callback :#{method}, *methods, &block
- end
- EOS
- end
+ # Now we define the "callback installation methods". These class methods
+ # will be used by other modules to install their callbacks. Examples:
+ #
+ # ```
+ # # Timeout.included
+ # before_persisting :reset_stale_state
+ #
+ # # Session::Password.included
+ # validate :validate_by_password, if: :authenticating_with_password?
+ # ```
+ METHODS.each do |method|
+ base.class_eval <<-EOS, __FILE__, __LINE__ + 1
+ def self.#{method}(*methods, &block)
+ set_callback :#{method}, *methods, &block
+ end
+ EOS
end
end
private
METHODS.each do |method|
- class_eval <<-EOS, __FILE__, __LINE__
+ class_eval <<-EOS, __FILE__, __LINE__ + 1
def #{method}
run_callbacks(:#{method})
end
EOS
end