Sha256: 1e3f0b4e85ce8ccddff1c64039f8e9d0818efae2460ada51ca12b867cd54a220

Contents?: true

Size: 1012 Bytes

Versions: 1

Compression:

Stored size: 1012 Bytes

Contents

module SubPub
  class ActiveRecordExtensions < Rails::Railtie
    initializer "pub sub configuration of active record extensions" do
      class ::ActiveRecord::Base
        after_create :notify_of_after_create

        private

        def notify_of_after_create
          notify_pub_sub_of_active_record_callback('after_create')
        end

        def notify_pub_sub_of_active_record_callback(callback)
          message = "active_record::#{self.class.to_s.underscore}::#{callback}"
          SubPub.publish(message, record: self)
        end
      end

      config.after_initialize do
        Dir[
          File.expand_path("app/models/pub_sub/*.rb", Rails.root)
        ].each { |file| require file }
      end
    end
  end

  module ActiveRecord
    class Subscriber < SubPub::Subscriber
      def self.subscribe_to(class_instance, callback)
        super("active_record::#{class_instance.to_s.underscore}::#{callback}")
      end

      def record
        options[:record]
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sub_pub-0.0.3 lib/sub_pub/active_record_extensions.rb