canvas-lms/gems/broadcast_policy
Cody Cutrer 7a261cbeef determine recipients and queue notifications _after_ transaction commit
fixes CNVS-22546

test plan:
  * regression test notifications

Change-Id: I7896f03b18b19003cff6228aefa72029a8c08a29
Reviewed-on: https://gerrit.instructure.com/61249
Reviewed-by: Joel Hough <joel@instructure.com>
Tested-by: Jenkins
QA-Review: Adrian Russell <arussell@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
2015-08-20 15:26:21 +00:00
..
lib determine recipients and queue notifications _after_ transaction commit 2015-08-20 15:26:21 +00:00
spec determine recipients and queue notifications _after_ transaction commit 2015-08-20 15:26:21 +00:00
.rspec-local gemify broadcast policy 2014-09-24 11:35:33 +00:00
Gemfile gemify broadcast policy 2014-09-24 11:35:33 +00:00
README.md gemify broadcast policy 2014-09-24 11:35:33 +00:00
broadcast_policy.gemspec determine recipients and queue notifications _after_ transaction commit 2015-08-20 15:26:21 +00:00
test.sh do some cleanup on gem test runs 2015-05-18 22:39:17 +00:00

README.md

BroadcastPolicy

This allows us to do something like:

class Model < ActiveRecord::Base has_a_broadcast_policy

set_broadcast_policy do |p| p.dispatch :notification_name p.to { some_endpoints } p.whenever { |record| record.foo_is_true? && record.bar_is_false? } end

end

Usage

In order to use the gem in Rails, you'll need an initializer something like this:

config/initializers/broadcast_policy.rb

require 'broadcast_policy' BroadcastPolicy.notifier = lambda { Notifier.new } BroadcastPolicy.notification_finder = lambda { NotificationFinder.new(Nofication.all) } ActiveRecord::Base.send(:extend, BroadcastPolicy::ClassMethods)

The two BroadcastPolicy services are necessary to supply the canvas domain objects for integrating with the notification system License

Copyright (C) 2014 Instructure, Inc.

This file is part of Canvas.

Canvas is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, version 3 of the License.

Canvas is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses/.