active_delivery 0.3.1 → 0.4.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: 58549c626e3d38e914f029cb7b9b05f9dc47656ee0f7c21e995d84da6077b55b
4
- data.tar.gz: 908b2c2c78171799a1373f832b24a1a6f10e59f3b5cce40ab28e7e6827b370ee
3
+ metadata.gz: cb5ab8a6ec56fff50826ab85c266e3feb22f621495b7004b52b3e57230f4cf22
4
+ data.tar.gz: 18cd0ec87390d72dfc358988f53d801f2bb7175c5fda373243705518bf66c7d9
5
5
  SHA512:
6
- metadata.gz: a28d44569bcd3c15e52308b60bad60a7bb0eb3b25680099130afe8fd743ab5cacb43e1ef972306a0983f10d17375666e1fa0394e6cfbc17ee929cc05f338857a
7
- data.tar.gz: 243c05d65a2b795ff2f4a0b3722f37e523a2169282345a226c3fba9f1924040cf1ae9feefce35f603d5287c38d7bd92992a72f57dd0ef32a30e8fd0e63ca8c28
6
+ metadata.gz: 1a154c82c76c588059e7c41a725c58118b9e9e5c59b5695846505f880e830d59ff27e8db90ef661b3a1a98739e62f0baba4efb48d4a453e2d1fe46b0f1358325
7
+ data.tar.gz: 5cab3665df3ee06eb878a9e78f15f754ef48ce3b2f71c5e9c14711215ffa584e8ecf3c18b84cfd03cdb00ece0e89da86ed4c812712e2f30f320d9a2ae70417ef
@@ -13,7 +13,7 @@ AllCops:
13
13
  - 'vendor/**/*'
14
14
  - 'gemfiles/**/*'
15
15
  DisplayCopNames: true
16
- TargetRubyVersion: 2.4
16
+ TargetRubyVersion: 2.5
17
17
 
18
18
  Standard/SemanticBlocks:
19
19
  Enabled: false
@@ -26,6 +26,3 @@ Style/TrailingCommaInArrayLiteral:
26
26
 
27
27
  Style/TrailingCommaInHashLiteral:
28
28
  EnforcedStyleForMultiline: no_comma
29
-
30
- Layout/AlignParameters:
31
- EnforcedStyle: with_first_parameter
@@ -14,17 +14,17 @@ matrix:
14
14
  include:
15
15
  - rvm: ruby-head
16
16
  gemfile: gemfiles/railsmaster.gemfile
17
- - rvm: 2.5.3
17
+ - rvm: 2.7
18
18
  gemfile: Gemfile
19
- - rvm: 2.6.0
19
+ - rvm: 2.6
20
20
  gemfile: Gemfile
21
- - rvm: 2.5.3
21
+ - rvm: 2.5
22
+ gemfile: Gemfile
23
+ - rvm: 2.5
22
24
  gemfile: Gemfile
23
25
  env:
24
26
  - NO_RAILS=1
25
- - rvm: 2.4.3
26
- gemfile: Gemfile
27
- - rvm: 2.4.3
27
+ - rvm: 2.5
28
28
  gemfile: gemfiles/rails42.gemfile
29
29
  allow_failures:
30
30
  - rvm: ruby-head
@@ -2,6 +2,12 @@
2
2
 
3
3
  ## master
4
4
 
5
+ ## 0.4.0 (2020-03-02)
6
+
7
+ - **Drop Ruby 2.4 support**. ([@palkan][])
8
+
9
+ - Allow passing keyword arugments to `notify`. ([@palkan][])
10
+
5
11
  ## 0.3.1 (2020-02-21)
6
12
 
7
13
  - Fixed RSpec detection. ([@palkan][])
data/Gemfile CHANGED
@@ -9,5 +9,5 @@ local_gemfile = File.join(__dir__, "Gemfile.local")
9
9
  if File.exist?(local_gemfile)
10
10
  eval(File.read(local_gemfile)) # rubocop:disable Security/Eval
11
11
  else
12
- gem "rails", "~> 5.2"
12
+ gem "rails", "~> 6.0"
13
13
  end
data/README.md CHANGED
@@ -243,17 +243,17 @@ class PigeonLine < ActiveDelivery::Lines::Base
243
243
  # Called when we want to send message synchronously
244
244
  # `sender` here either `sender_class` or `sender_class.with(params)`
245
245
  # if params passed.
246
- def notify_now(sender, delivery_action, *args)
246
+ def notify_now(sender, delivery_action, *args, **kwargs)
247
247
  # For example, our EventPigeon class returns some `Pigeon` object
248
- pigeon = sender.public_send(delivery_action, *args)
248
+ pigeon = sender.public_send(delivery_action, *args, **kwargs)
249
249
  # PigeonLaunchService do all the sending job
250
250
  PigeonService.launch pigeon
251
251
  end
252
252
 
253
253
  # Called when we want to send a message asynchronously.
254
254
  # For example, you can use a background job here.
255
- def notify_later(sender, delivery_action, *args)
256
- pigeon = sender.public_send(delivery_action, *args)
255
+ def notify_later(sender, delivery_action, *args, **kwargs)
256
+ pigeon = sender.public_send(delivery_action, *args, **kwargs)
257
257
  # PigeonLaunchService do all the sending job
258
258
  PigeonLaunchJob.perform_later pigeon
259
259
  end
@@ -5,17 +5,17 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
  require "active_delivery/version"
6
6
 
7
7
  Gem::Specification.new do |spec|
8
- spec.name = "active_delivery"
9
- spec.version = ActiveDelivery::VERSION
10
- spec.authors = ["Vladimir Dementyev"]
11
- spec.email = ["dementiev.vm@gmail.com"]
8
+ spec.name = "active_delivery"
9
+ spec.version = ActiveDelivery::VERSION
10
+ spec.authors = ["Vladimir Dementyev"]
11
+ spec.email = ["dementiev.vm@gmail.com"]
12
12
 
13
- spec.summary = "Rails framework for managing all types of notifications in one place"
14
- spec.description = "Rails framework for managing all types of notifications in one place"
15
- spec.homepage = "https://github.com/palkan/active_delivery"
16
- spec.license = "MIT"
13
+ spec.summary = "Rails framework for managing all types of notifications in one place"
14
+ spec.description = "Rails framework for managing all types of notifications in one place"
15
+ spec.homepage = "https://github.com/palkan/active_delivery"
16
+ spec.license = "MIT"
17
17
 
18
- spec.required_ruby_version = ">= 2.4"
18
+ spec.required_ruby_version = ">= 2.5"
19
19
 
20
20
  spec.metadata = {
21
21
  "bug_tracker_uri" => "http://github.com/palkan/active_delivery/issues",
@@ -25,11 +25,11 @@ Gem::Specification.new do |spec|
25
25
  "source_code_uri" => "http://github.com/palkan/active_delivery"
26
26
  }
27
27
 
28
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
28
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
29
29
  spec.require_paths = ["lib"]
30
30
 
31
31
  spec.add_development_dependency "bundler", ">= 1.16"
32
- spec.add_development_dependency "rake", "~> 10.0"
32
+ spec.add_development_dependency "rake", "~> 13.0"
33
33
  spec.add_development_dependency "rspec", "~> 3.0"
34
- spec.add_development_dependency "standard", "~> 0.0.12"
34
+ spec.add_development_dependency "standard", "~> 0.2.0"
35
35
  end
@@ -37,8 +37,8 @@ module ActiveDelivery
37
37
  alias with new
38
38
 
39
39
  # Enqueues delivery (i.e. uses #deliver_later for mailers)
40
- def notify(*args)
41
- new.notify(*args)
40
+ def notify(*args, **kwargs)
41
+ new.notify(*args, **kwargs)
42
42
  end
43
43
 
44
44
  # The same as .notify but delivers synchronously
@@ -86,9 +86,9 @@ module ActiveDelivery
86
86
  end
87
87
 
88
88
  # Enqueues delivery (i.e. uses #deliver_later for mailers)
89
- def notify(mid, *args)
89
+ def notify(mid, *args, **kwargs)
90
90
  @notification_name = mid
91
- do_notify(*args)
91
+ do_notify(*args, **kwargs)
92
92
  end
93
93
 
94
94
  # The same as .notify but delivers synchronously
@@ -99,17 +99,17 @@ module ActiveDelivery
99
99
 
100
100
  private
101
101
 
102
- def do_notify(*args, sync: false)
102
+ def do_notify(*args, sync: false, **kwargs)
103
103
  delivery_lines.each do |type, line|
104
104
  next if line.handler_class.nil?
105
105
  next unless line.notify?(notification_name)
106
106
 
107
- notify_line(type, *args, params: params, sync: sync)
107
+ notify_line(type, *args, params: params, sync: sync, **kwargs)
108
108
  end
109
109
  end
110
110
 
111
- def notify_line(type, *args)
112
- delivery_lines[type].notify(notification_name, *args)
111
+ def notify_line(type, *args, **kwargs)
112
+ delivery_lines[type].notify(notification_name, *args, **kwargs)
113
113
  end
114
114
 
115
115
  def delivery_lines
@@ -41,17 +41,17 @@ module ActiveDelivery
41
41
  end
42
42
 
43
43
  module InstanceExt
44
- def do_notify(*)
45
- run_callbacks(:notify) { super }
44
+ def do_notify(*args, **kwargs)
45
+ run_callbacks(:notify) { super(*args, **kwargs) }
46
46
  end
47
47
 
48
- def notify_line(type, *)
49
- run_callbacks(type) { super }
48
+ def notify_line(*args, **kwargs)
49
+ run_callbacks(args.first) { super(*args, **kwargs) }
50
50
  end
51
51
  end
52
52
 
53
53
  module SingltonExt
54
- def register_line(line_id, *args)
54
+ def register_line(line_id, *args, **kwargs)
55
55
  super
56
56
  define_line_callbacks line_id
57
57
  end
@@ -73,24 +73,24 @@ module ActiveDelivery
73
73
 
74
74
  def define_line_callbacks(name)
75
75
  define_callbacks name,
76
- terminator: CALLBACK_TERMINATOR,
77
- skip_after_callbacks_if_terminated: true
76
+ terminator: CALLBACK_TERMINATOR,
77
+ skip_after_callbacks_if_terminated: true
78
78
  end
79
79
 
80
- def before_notify(method_or_block = nil, on: :notify, **options)
81
- method_or_block ||= Proc.new
80
+ def before_notify(method_or_block = nil, on: :notify, **options, &block)
81
+ method_or_block ||= block
82
82
  _normalize_callback_options(options)
83
83
  set_callback on, :before, method_or_block, options
84
84
  end
85
85
 
86
- def after_notify(method_or_block = nil, on: :notify, **options)
87
- method_or_block ||= Proc.new
86
+ def after_notify(method_or_block = nil, on: :notify, **options, &block)
87
+ method_or_block ||= block
88
88
  _normalize_callback_options(options)
89
89
  set_callback on, :after, method_or_block, options
90
90
  end
91
91
 
92
- def around_notify(method_or_block = nil, on: :notify, **options)
93
- method_or_block ||= Proc.new
92
+ def around_notify(method_or_block = nil, on: :notify, **options, &block)
93
+ method_or_block ||= block
94
94
  _normalize_callback_options(options)
95
95
  set_callback on, :around, method_or_block, options
96
96
  end
@@ -24,15 +24,15 @@ module ActiveDelivery
24
24
  handler_class.respond_to?(method_name)
25
25
  end
26
26
 
27
- def notify_now(handler, mid, *args)
27
+ def notify_now(handler, mid, *args, **kwargs)
28
28
  end
29
29
 
30
- def notify_later(handler, mid, *args)
30
+ def notify_later(handler, mid, *args, **kwargs)
31
31
  end
32
32
 
33
- def notify(mid, *args, params:, sync:)
34
- clazz = params.empty? ? handler_class : handler_class.with(params)
35
- sync ? notify_now(clazz, mid, *args) : notify_later(clazz, mid, *args)
33
+ def notify(mid, *args, params:, sync:, **kwargs)
34
+ clazz = params.empty? ? handler_class : handler_class.with(**params)
35
+ sync ? notify_now(clazz, mid, *args, **kwargs) : notify_later(clazz, mid, *args, **kwargs)
36
36
  end
37
37
 
38
38
  def handler_class
@@ -17,12 +17,20 @@ module ActiveDelivery
17
17
  mailer_class.action_methods.include?(method_name.to_s)
18
18
  end
19
19
 
20
- def notify_now(mailer, mid, *args)
21
- mailer.public_send(mid, *args).deliver_now
20
+ def notify_now(mailer, mid, *args, **kwargs)
21
+ if kwargs.empty?
22
+ mailer.public_send(mid, *args).deliver_now
23
+ else
24
+ mailer.public_send(mid, *args, **kwargs).deliver_now
25
+ end
22
26
  end
23
27
 
24
- def notify_later(mailer, mid, *args)
25
- mailer.public_send(mid, *args).deliver_later
28
+ def notify_later(mailer, mid, *args, **kwargs)
29
+ if kwargs.empty?
30
+ mailer.public_send(mid, *args).deliver_later
31
+ else
32
+ mailer.public_send(mid, *args, **kwargs).deliver_later
33
+ end
26
34
  end
27
35
  end
28
36
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActiveDelivery
4
- VERSION = "0.3.1"
4
+ VERSION = "0.4.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_delivery
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.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: 2020-02-21 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: bundler
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '13.0'
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
- version: '10.0'
40
+ version: '13.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.0.12
61
+ version: 0.2.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.0.12
68
+ version: 0.2.0
69
69
  description: Rails framework for managing all types of notifications in one place
70
70
  email:
71
71
  - dementiev.vm@gmail.com
@@ -113,7 +113,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
113
113
  requirements:
114
114
  - - ">="
115
115
  - !ruby/object:Gem::Version
116
- version: '2.4'
116
+ version: '2.5'
117
117
  required_rubygems_version: !ruby/object:Gem::Requirement
118
118
  requirements:
119
119
  - - ">="