From 00bc01154bee36fc55b77bc83e7dd9985b8bafa8 Mon Sep 17 00:00:00 2001 From: Chris Oliver Date: Thu, 25 Jan 2024 16:56:21 -0600 Subject: [PATCH] Add some deprecations & backwards compatibility to make upgrading easier --- UPGRADE.md | 4 ++-- app/models/concerns/noticed/deliverable.rb | 15 ++++++++++----- test/dummy/app/notifiers/deprecated_notifier.rb | 3 +++ test/notifier_test.rb | 8 ++++++++ 4 files changed, 23 insertions(+), 7 deletions(-) create mode 100644 test/dummy/app/notifiers/deprecated_notifier.rb diff --git a/UPGRADE.md b/UPGRADE.md index 1a52efe..2e55206 100644 --- a/UPGRADE.md +++ b/UPGRADE.md @@ -93,7 +93,7 @@ class CommentNotifier < Noticed::Event config.message = :to_websocket end - def to_websocket + def to_websocket(notification) { foo: :bar } end end @@ -172,7 +172,7 @@ end ### Deliver Later -Notifications are always delivered later now. The `.deliver_later` method has been removed. Instead you can just user `.deliver` +Notifications are always delivered later now. `deliver` and `deliver_later` perform the same action. ### Required Params diff --git a/app/models/concerns/noticed/deliverable.rb b/app/models/concerns/noticed/deliverable.rb index 0a90c9f..1b2ff26 100644 --- a/app/models/concerns/noticed/deliverable.rb +++ b/app/models/concerns/noticed/deliverable.rb @@ -35,6 +35,13 @@ def bulk_deliver_by(name, options = {}) def deliver_by(name, options = {}) raise NameError, "#{name} has already been used for this Notifier." if delivery_methods.has_key?(name) + if name == :database + Noticed.deprecator.warn <<-WARNING.squish + The :database delivery method has been deprecated and does nothing. Notifiers automatically save to the database now. + WARNING + return + end + config = ActiveSupport::OrderedOptions.new.merge(options) yield config if block_given? delivery_methods[name] = DeliverBy.new(name, config) @@ -67,11 +74,7 @@ def with(params) def deliver(recipients = nil, options = {}) new.deliver(recipients, options) end - - # For backwards compatibility - def deliver_later(recipients = nil, options = {}) - deliver(recipients, options) - end + alias_method :deliver_later, :deliver end # CommentNotifier.deliver(User.all) @@ -106,6 +109,8 @@ def deliver(recipients = nil, options = {}) self end + alias_method :deliver_later, :deliver + def recipient_attributes_for(recipient) { diff --git a/test/dummy/app/notifiers/deprecated_notifier.rb b/test/dummy/app/notifiers/deprecated_notifier.rb new file mode 100644 index 0000000..81aebef --- /dev/null +++ b/test/dummy/app/notifiers/deprecated_notifier.rb @@ -0,0 +1,3 @@ +class DeprecatedNotifier < Noticed::Base + param :message +end diff --git a/test/notifier_test.rb b/test/notifier_test.rb index 84e3e49..2740567 100644 --- a/test/notifier_test.rb +++ b/test/notifier_test.rb @@ -139,4 +139,12 @@ class NotifierTest < ActiveSupport::TestCase end end end + + test "deprecations don't cause problems" do + assert_nothing_raised do + Noticed.deprecator.silence do + DeprecatedNotifier.with(message: "test").deliver_later + end + end + end end