File: callbacks.rb

package info (click to toggle)
ruby-carrierwave 1.3.2-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,692 kB
  • sloc: ruby: 9,881; sh: 26; makefile: 5
file content (33 lines) | stat: -rw-r--r-- 956 bytes parent folder | download | duplicates (2)
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
module CarrierWave
  module Uploader
    module Callbacks
      extend ActiveSupport::Concern

      included do
        class_attribute :_before_callbacks, :_after_callbacks,
          :instance_writer => false
        self._before_callbacks = Hash.new []
        self._after_callbacks = Hash.new []
      end

      def with_callbacks(kind, *args)
        self.class._before_callbacks[kind].each { |c| send c, *args }
        yield
        self.class._after_callbacks[kind].each { |c| send c, *args }
      end

      module ClassMethods
        def before(kind, callback)
          self._before_callbacks = self._before_callbacks.
            merge kind => _before_callbacks[kind] + [callback]
        end

        def after(kind, callback)
          self._after_callbacks = self._after_callbacks.
            merge kind => _after_callbacks[kind] + [callback]
        end
      end # ClassMethods

    end # Callbacks
  end # Uploader
end # CarrierWave