abstract_notifier 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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