canvas-lms/gems/broadcast_policy
Cody Cutrer c2cba46851 RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation
[skip-stages=Flakey]

auto-corrected

Change-Id: I4a0145abfd50f126669b20f3deaeae8377bac24d
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/279535
Tested-by: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
Migration-Review: Cody Cutrer <cody@instructure.com>
Reviewed-by: Jacob Burroughs <jburroughs@instructure.com>
2021-11-25 14:03:06 +00:00
..
lib RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
spec RuboCop: Style/StringLiterals, Style/StringLiteralsInInterpolation 2021-11-25 14:03:06 +00:00
.rspec-local gemify broadcast policy 2014-09-24 11:35:33 +00:00
Gemfile add frozen_string_literal comment to engines and gems 2021-03-30 18:14:15 +00:00
README.md skip messages for disabled courses 2020-02-29 00:23:14 +00:00
broadcast_policy.gemspec RuboCop: Style/ExpandPathArguments 2021-11-17 22:06:59 +00:00
test.sh simplify gem test harnesses 2016-01-19 17:52:58 +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? } p.data { course_id: course_id, root_account_id: root_account_id} 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' Rails.configuration.to_prepare do BroadcastPolicy.notifier = lambda { Notifier.new } BroadcastPolicy.notification_finder = lambda { NotificationFinder.new(Notification.all_cached) } end 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 - present 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/.