active_delivery 0.3.1 → 0.4.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: 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
  - - ">="