canvas-lms/gems/broadcast_policy
Cody Cutrer 0236850a35 bundle update minitest
Change-Id: I419dddede5ca12b1682f6c9cbb28686182204587
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/355104
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Aaron Ogata <aogata@instructure.com>
Build-Review: Aaron Ogata <aogata@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
2024-08-23 14:11:12 +00:00
..
lib Fix n+1 when using suspended? in broadcast 2023-08-23 17:46:31 +00:00
spec Rubocop for ruby 3.1 2023-06-06 16:44:26 +00:00
.rspec-local gemify broadcast policy 2014-09-24 11:35:33 +00:00
Gemfile bundle update --bundler 2024-04-01 14:22:00 +00:00
Gemfile.lock bundle update minitest 2024-08-23 14:11:12 +00:00
README.md skip messages for disabled courses 2020-02-29 00:23:14 +00:00
broadcast_policy.gemspec remove pry as a dev dependency in internal gems 2024-04-04 14:47:24 +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/.