abstract_notifier 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a36463d0a1ed93c6f48229bed9135f6c1ec3e301c76dc5b9edcc28f19d75cc3e
4
- data.tar.gz: 7c56ec837be932967f22c592018b2210912fb2e53a40e5b8526b619dff70c4b1
3
+ metadata.gz: 4b04d84548a4895eb31535c7f50540916aa956b6609c5a2970404b4978720215
4
+ data.tar.gz: 6298d48963f69f556d9b26d7f81d67e8b67083bc18bd5ef587f3633a866a2678
5
5
  SHA512:
6
- metadata.gz: 4a191cf257f1691d8df1b395ed14610246e2ae8614bde594abd359fea8104fe3c903a9332060545563e289652b45716d76c89d2f763a8bd0c911d305641c594d
7
- data.tar.gz: 888f89197efafc92cbbfffc220959c449fcd405c8fea6932ab3f1dde4ed4f1d726e2c19ce4c43e68ca2021a8cc040a53831506c05a5272ce7f43330e4b054364
6
+ metadata.gz: 66f870bd767fba06773a9be991a5c0a6a0cd7f25f2a375a7f21b4e323bfceee3bf43de1c431ae43dc528964237d73f3d19876d1f94059b3afb3e43760e8cbdfb
7
+ data.tar.gz: 4686c9145b53a42ba6b649e93ff49d1c48a6c31b1c6056b40ce5fc778b8eb24aeb8bab707639f14d48c689181e15e5a5cf06ed1cffc9ae8129f980a2d650a230
@@ -11,7 +11,9 @@ AllCops:
11
11
  - 'Gemfile'
12
12
  - 'node_modules/**/*'
13
13
  - 'vendor/**/*'
14
+ - 'gemfiles/**/*'
14
15
  DisplayCopNames: true
16
+ TargetRubyVersion: 2.5
15
17
 
16
18
  Standard/SemanticBlocks:
17
19
  Enabled: false
@@ -24,6 +26,3 @@ Style/TrailingCommaInArrayLiteral:
24
26
 
25
27
  Style/TrailingCommaInHashLiteral:
26
28
  EnforcedStyleForMultiline: no_comma
27
-
28
- Layout/AlignParameters:
29
- EnforcedStyle: with_first_parameter
@@ -1,26 +1,35 @@
1
1
  sudo: false
2
2
  language: ruby
3
- rvm:
4
- - 2.5.1
3
+ cache: bundler
5
4
 
6
5
  notifications:
7
6
  email: false
8
7
 
8
+ before_install:
9
+ - gem uninstall -v '>= 2' -i $(rvm gemdir)@global -ax bundler || true
10
+ - gem install bundler -v '< 2'
11
+
9
12
  matrix:
10
13
  fast_finish: true
11
14
  include:
12
15
  - rvm: ruby-head
13
16
  gemfile: gemfiles/railsmaster.gemfile
14
- - rvm: 2.5.1
17
+ - rvm: 2.7
18
+ gemfile: Gemfile
19
+ - rvm: 2.7
20
+ gemfile: gemfiles/activedeliverymaster.gemfile
21
+ - rvm: 2.6
15
22
  gemfile: Gemfile
16
- - rvm: 2.5.1
23
+ - rvm: 2.5
17
24
  gemfile: Gemfile
18
25
  env:
19
26
  - NO_RAILS=1
20
- - rvm: 2.4.3
21
- gemfile: Gemfile
22
- - rvm: 2.3.1
27
+ - rvm: 2.5
28
+ gemfile: gemfiles/rails52.gemfile
29
+ - rvm: 2.5
23
30
  gemfile: gemfiles/rails42.gemfile
24
31
  allow_failures:
25
32
  - rvm: ruby-head
26
33
  gemfile: gemfiles/railsmaster.gemfile
34
+ - rvm: 2.7
35
+ gemfile: gemfiles/activedeliverymaster.gemfile
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## master
4
4
 
5
+ ## 0.3.0 (2020-03-02)
6
+
7
+ - **Drop Ruby 2.4 support**. ([@palkan][])
8
+
5
9
  ## 0.2.0 (2018-01-11)
6
10
 
7
11
  - Add class-level defaults. ([@palkan][])
data/Gemfile CHANGED
@@ -4,12 +4,11 @@ source "https://rubygems.org"
4
4
  gemspec
5
5
 
6
6
  gem "pry-byebug"
7
- gem "rspec-rails"
8
7
 
9
8
  local_gemfile = File.join(__dir__, "Gemfile.local")
10
9
 
11
10
  if File.exist?(local_gemfile)
12
11
  eval(File.read(local_gemfile)) # rubocop:disable Security/Eval
13
12
  else
14
- gem "rails", "~> 5.2"
13
+ gem "rails", "~> 6.0"
15
14
  end
data/README.md CHANGED
@@ -7,11 +7,13 @@ Abstract Notifier is a tool which allows you to describe/model any text-based no
7
7
 
8
8
  Abstract Notifier (as the name states) doesn't provide any specific implementation for sending notifications. Instead, it offers tools to organize your notification-specific code and make it easily testable.
9
9
 
10
+ 📖 Read the introduction post: ["Crafting user notifications in Rails with Active Delivery"](https://evilmartians.com/chronicles/crafting-user-notifications-in-rails-with-active-delivery)
11
+
10
12
  <a href="https://evilmartians.com/?utm_source=action_policy">
11
13
  <img src="https://evilmartians.com/badges/sponsored-by-evil-martians.svg" alt="Sponsored by Evil Martians" width="236" height="54"></a>
12
14
 
13
15
  Requirements:
14
- - Ruby ~> 2.3
16
+ - Ruby ~> 2.4
15
17
 
16
18
  **NOTE**: although most of the examples in this readme are Rails-specific, this gem could be used without Rails/ActiveSupport.
17
19
 
@@ -164,10 +166,10 @@ AbstractNotifier.delivery_mode = :test
164
166
  # you can make Abstract Notifier no-op.
165
167
  #
166
168
  # config/environments/development.rb
167
- ActionNotifier.delivery_mode = :noop
169
+ AbstractNotifier.delivery_mode = :noop
168
170
 
169
171
  # Default delivery mode is "normal"
170
- ActionNotifier.delivery_mode = :normal
172
+ AbstractNotifier.delivery_mode = :normal
171
173
  ```
172
174
 
173
175
  **NOTE:** we set `delivery_mode = :test` if `RAILS_ENV` or `RACK_ENV` env variable is equal to "test".
@@ -5,23 +5,33 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
  require "abstract_notifier/version"
6
6
 
7
7
  Gem::Specification.new do |spec|
8
- spec.name = "abstract_notifier"
9
- spec.version = AbstractNotifier::VERSION
10
- spec.authors = ["Vladimir Dementyev"]
11
- spec.email = ["dementiev.vm@gmail.com"]
8
+ spec.name = "abstract_notifier"
9
+ spec.version = AbstractNotifier::VERSION
10
+ spec.authors = ["Vladimir Dementyev"]
11
+ spec.email = ["dementiev.vm@gmail.com"]
12
12
 
13
- spec.summary = "ActionMailer-like interface for any type of notifications"
14
- spec.description = "ActionMailer-like interface for any type of notifications"
15
- spec.homepage = "https://github.com/palkan/abstract_notifier"
16
- spec.license = "MIT"
13
+ spec.summary = "ActionMailer-like interface for any type of notifications"
14
+ spec.description = "ActionMailer-like interface for any type of notifications"
15
+ spec.homepage = "https://github.com/palkan/abstract_notifier"
16
+ spec.license = "MIT"
17
17
 
18
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
+ spec.required_ruby_version = ">= 2.4"
19
+
20
+ spec.metadata = {
21
+ "bug_tracker_uri" => "http://github.com/palkan/abstract_notifier/issues",
22
+ "changelog_uri" => "https://github.com/palkan/abstract_notifier/blob/master/CHANGELOG.md",
23
+ "documentation_uri" => "http://github.com/palkan/abstract_notifier",
24
+ "homepage_uri" => "http://github.com/palkan/abstract_notifier",
25
+ "source_code_uri" => "http://github.com/palkan/abstract_notifier"
26
+ }
27
+
28
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
19
29
  spec.require_paths = ["lib"]
20
30
 
21
31
  spec.add_development_dependency "active_delivery"
22
32
 
23
- spec.add_development_dependency "bundler", "~> 1.16"
24
- spec.add_development_dependency "rake", "~> 10.0"
25
- spec.add_development_dependency "rspec", "~> 3.0"
26
- spec.add_development_dependency "standard", "~> 0.0.12"
33
+ spec.add_development_dependency "bundler", ">= 1.16"
34
+ spec.add_development_dependency "rake", "~> 13.0"
35
+ spec.add_development_dependency "rspec-rails", "~> 3.0"
36
+ spec.add_development_dependency "standard", "~> 0.2.0"
27
37
  end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", "~> 6.0"
6
+ gem "active_delivery", github: "palkan/active_delivery"
7
+
8
+ gemspec path: ".."
@@ -3,5 +3,6 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rails", "~> 4.2"
6
+ gem "bundler", "~> 1.17"
6
7
 
7
8
  gemspec path: ".."
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", "~> 5.2"
6
+
7
+ gemspec path: ".."
@@ -7,7 +7,7 @@ module AbstractNotifier
7
7
  return adapter unless adapter.is_a?(Symbol)
8
8
 
9
9
  adapter_class_name = adapter.to_s.split("_").map(&:capitalize).join
10
- AsyncAdapters.const_get(adapter_class_name).new(options || {})
10
+ AsyncAdapters.const_get(adapter_class_name).new(**(options || {}))
11
11
  rescue NameError => e
12
12
  raise e.class, "Notifier async adapter :#{adapter} haven't been found", e.backtrace
13
13
  end
@@ -34,8 +34,12 @@ module AbstractNotifier
34
34
  end
35
35
 
36
36
  # rubocop:disable Style/MethodMissingSuper
37
- def method_missing(method_name, *args)
38
- notifier_class.new(method_name, params).public_send(method_name, *args)
37
+ def method_missing(method_name, *args, **kwargs)
38
+ if kwargs.empty?
39
+ notifier_class.new(method_name, **params).public_send(method_name, *args)
40
+ else
41
+ notifier_class.new(method_name, **params).public_send(method_name, *args, **kwargs)
42
+ end
39
43
  end
40
44
  # rubocop:enable Style/MethodMissingSuper
41
45
 
@@ -75,8 +79,8 @@ module AbstractNotifier
75
79
  end
76
80
  end
77
81
 
78
- def default(method_name = nil, **hargs)
79
- return @defaults_generator = Proc.new if block_given?
82
+ def default(method_name = nil, **hargs, &block)
83
+ return @defaults_generator = block if block_given?
80
84
 
81
85
  return @defaults_generator = proc { send(method_name) } unless method_name.nil?
82
86
 
@@ -129,7 +129,7 @@ module AbstractNotifier
129
129
  end
130
130
  end
131
131
 
132
- class HaveEqueuedNotification < HaveSentNotification
132
+ class HaveEnqueuedNotification < HaveSentNotification
133
133
  private
134
134
 
135
135
  def deliveries
@@ -153,7 +153,7 @@ RSpec.configure do |config|
153
153
  end
154
154
 
155
155
  def have_enqueued_notification(*args)
156
- AbstractNotifier::HaveEqueuedNotification.new(*args)
156
+ AbstractNotifier::HaveEnqueuedNotification.new(*args)
157
157
  end
158
158
  end)
159
159
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AbstractNotifier
4
- VERSION = "0.2.0"
4
+ VERSION = "0.3.0"
5
5
  end
@@ -11,9 +11,9 @@ module ActiveDelivery
11
11
  class Notifier < ActiveDelivery::Lines::Base
12
12
  DEFAULT_RESOLVER = ->(name) { name.gsub(/Delivery$/, "Notifier").safe_constantize }
13
13
 
14
- def initialize(*)
14
+ def initialize(**opts)
15
15
  super
16
- @resolver = options[:resolver]
16
+ @resolver = opts[:resolver]
17
17
  end
18
18
 
19
19
  def resolve_class(name)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: abstract_notifier
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vladimir Dementyev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-12 00:00:00.000000000 Z
11
+ date: 2020-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_delivery
@@ -28,14 +28,14 @@ dependencies:
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.16'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.16'
41
41
  - !ruby/object:Gem::Dependency
@@ -44,16 +44,16 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '10.0'
47
+ version: '13.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '10.0'
54
+ version: '13.0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: rspec
56
+ name: rspec-rails
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.0.12
75
+ version: 0.2.0
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.0.12
82
+ version: 0.2.0
83
83
  description: ActionMailer-like interface for any type of notifications
84
84
  email:
85
85
  - dementiev.vm@gmail.com
@@ -99,7 +99,9 @@ files:
99
99
  - abstract_notifier.gemspec
100
100
  - bin/console
101
101
  - bin/setup
102
+ - gemfiles/activedeliverymaster.gemfile
102
103
  - gemfiles/rails42.gemfile
104
+ - gemfiles/rails52.gemfile
103
105
  - gemfiles/railsmaster.gemfile
104
106
  - lib/abstract_notifier.rb
105
107
  - lib/abstract_notifier/async_adapters.rb
@@ -112,7 +114,12 @@ files:
112
114
  homepage: https://github.com/palkan/abstract_notifier
113
115
  licenses:
114
116
  - MIT
115
- metadata: {}
117
+ metadata:
118
+ bug_tracker_uri: http://github.com/palkan/abstract_notifier/issues
119
+ changelog_uri: https://github.com/palkan/abstract_notifier/blob/master/CHANGELOG.md
120
+ documentation_uri: http://github.com/palkan/abstract_notifier
121
+ homepage_uri: http://github.com/palkan/abstract_notifier
122
+ source_code_uri: http://github.com/palkan/abstract_notifier
116
123
  post_install_message:
117
124
  rdoc_options: []
118
125
  require_paths:
@@ -121,15 +128,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
121
128
  requirements:
122
129
  - - ">="
123
130
  - !ruby/object:Gem::Version
124
- version: '0'
131
+ version: '2.4'
125
132
  required_rubygems_version: !ruby/object:Gem::Requirement
126
133
  requirements:
127
134
  - - ">="
128
135
  - !ruby/object:Gem::Version
129
136
  version: '0'
130
137
  requirements: []
131
- rubyforge_project:
132
- rubygems_version: 2.7.6
138
+ rubygems_version: 3.0.6
133
139
  signing_key:
134
140
  specification_version: 4
135
141
  summary: ActionMailer-like interface for any type of notifications