Sha256: 73f358cd808d27160a82ab366434b7bd5a4c24457a22541be161b2129de36237

Contents?: true

Size: 1.71 KB

Versions: 36

Compression:

Stored size: 1.71 KB

Contents

# Simpified version of callbacks
# Does not support if
class Jets::Controller
  module Callbacks
    extend ActiveSupport::Concern
    included do
      class_attribute :before_actions, default: []
      class_attribute :after_actions, default: []

      class << self
        def before_action(meth, options={})
          self.before_actions += [[meth, options]]
        end

        def prepend_before_action(meth, options={})
          self.before_actions = [[meth, options]] + self.before_actions
        end

        alias_method :append_before_action, :before_action

        def after_action(meth, options={})
          self.after_actions += [[meth, options]]
        end

        def prepend_after_action(meth, options={})
          self.after_actions = [[meth, options]] + self.after_actions
        end

        alias_method :append_after_action, :after_action
      end
    end # included

    # Instance Methods
    # define run_before_actions and run_after_actions
    # returns true if all actions were run, false if break_if condition yielded `true`
    [:before, :after].each do |type|
      define_method "run_#{type}_actions" do |break_if: nil|
        called_method = @meth.to_sym
        callbacks = self.class.send("#{type}_actions")
        callbacks.each do |array|
          callback, options = array

          except = options[:except]
          next if except && except.include?(called_method)

          only = options[:only]
          if only
            send(callback) if only.include?(called_method)
          else
            send(callback)
          end
          @last_callback_name = callback

          return false if !break_if.nil? && break_if.call
        end
        true
      end
    end
  end # ClassOptions
end

Version data entries

36 entries across 36 versions & 1 rubygems

Version Path
jets-1.9.28 lib/jets/controller/callbacks.rb
jets-1.9.27 lib/jets/controller/callbacks.rb
jets-1.9.26 lib/jets/controller/callbacks.rb
jets-1.9.25 lib/jets/controller/callbacks.rb
jets-1.9.24 lib/jets/controller/callbacks.rb
jets-1.9.23 lib/jets/controller/callbacks.rb
jets-1.9.22 lib/jets/controller/callbacks.rb
jets-1.9.21 lib/jets/controller/callbacks.rb
jets-1.9.20 lib/jets/controller/callbacks.rb
jets-1.9.19 lib/jets/controller/callbacks.rb
jets-1.9.18 lib/jets/controller/callbacks.rb
jets-1.9.17 lib/jets/controller/callbacks.rb
jets-1.9.16 lib/jets/controller/callbacks.rb
jets-1.9.15 lib/jets/controller/callbacks.rb
jets-1.9.14 lib/jets/controller/callbacks.rb
jets-1.9.13 lib/jets/controller/callbacks.rb
jets-1.9.12 lib/jets/controller/callbacks.rb
jets-1.9.11 lib/jets/controller/callbacks.rb
jets-1.9.10 lib/jets/controller/callbacks.rb
jets-1.9.9 lib/jets/controller/callbacks.rb