active_delivery 0.3.0 → 0.4.3
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 +4 -4
- data/.gem_release.yml +3 -0
- data/.github/ISSUE_TEMPLATE/bug_report.md +24 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +24 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +23 -0
- data/.github/workflows/docs-lint.yml +72 -0
- data/.github/workflows/rspec-jruby.yml +35 -0
- data/.github/workflows/rspec.yml +51 -0
- data/.github/workflows/rubocop.yml +21 -0
- data/.gitignore +41 -8
- data/.mdlrc +1 -0
- data/.rspec +1 -1
- data/.rubocop-md.yml +16 -0
- data/.rubocop.yml +1 -4
- data/CHANGELOG.md +28 -1
- data/Gemfile +8 -4
- data/README.md +27 -16
- data/RELEASING.md +43 -0
- data/Rakefile +13 -3
- data/active_delivery.gemspec +12 -12
- data/forspell.dict +8 -0
- data/gemfiles/jruby.gemfile +5 -0
- data/gemfiles/rails5.gemfile +5 -0
- data/gemfiles/rails50.gemfile +8 -0
- data/gemfiles/rails6.gemfile +5 -0
- data/gemfiles/railsmaster.gemfile +4 -6
- data/gemfiles/rubocop.gemfile +4 -0
- data/lefthook.yml +18 -0
- data/lib/active_delivery/action_mailer/parameterized.rb +7 -1
- data/lib/active_delivery/base.rb +8 -8
- data/lib/active_delivery/callbacks.rb +13 -13
- data/lib/active_delivery/lines/base.rb +9 -5
- data/lib/active_delivery/lines/mailer.rb +15 -9
- data/lib/active_delivery/testing.rb +5 -5
- data/lib/active_delivery/version.rb +1 -1
- metadata +26 -9
- data/.travis.yml +0 -31
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5798b0d549774cc32295198d1f1ebcd155c07e0624ff8260b427d437cd0ac465
|
|
4
|
+
data.tar.gz: '086acc7c7080f9170663353740d462acbd065d4eb105a23193aa9150bdb84327'
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b74b9673fd219caec608b4a20cfc0cd94eb55df0b4a52b95edd799d5aea9552e0913c9861d06412494cd160fa7fd6f77c27bae603e60659bf58ad5adda9b71f0
|
|
7
|
+
data.tar.gz: 3a0e73e048db14768401cc0f1406ad0aaa09888ef2c18c739d15b2daaf0199375eee437b229e60b8aab7af38659d2bd815a7cd8402620618def7498a6d1373ac
|
data/.gem_release.yml
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug report
|
|
3
|
+
about: Create a report to help us improve
|
|
4
|
+
title: ''
|
|
5
|
+
labels: ''
|
|
6
|
+
assignees: palkan
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## What did you do?
|
|
11
|
+
|
|
12
|
+
## What did you expect to happen?
|
|
13
|
+
|
|
14
|
+
## What actually happened?
|
|
15
|
+
|
|
16
|
+
## Additional context
|
|
17
|
+
|
|
18
|
+
## Environment
|
|
19
|
+
|
|
20
|
+
**Ruby Version:**
|
|
21
|
+
|
|
22
|
+
**Framework Version (Rails, whatever):**
|
|
23
|
+
|
|
24
|
+
**Active Delivery Version:**
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Feature request
|
|
3
|
+
about: Suggest an idea for this project
|
|
4
|
+
title: ''
|
|
5
|
+
labels: enhancement
|
|
6
|
+
assignees: palkan
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Is your feature request related to a problem? Please describe.
|
|
11
|
+
|
|
12
|
+
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
|
13
|
+
|
|
14
|
+
## Describe the solution you'd like
|
|
15
|
+
|
|
16
|
+
A clear and concise description of what you want to happen.
|
|
17
|
+
|
|
18
|
+
## Describe alternatives you've considered
|
|
19
|
+
|
|
20
|
+
A clear and concise description of any alternative solutions or features you've considered.
|
|
21
|
+
|
|
22
|
+
## Additional context
|
|
23
|
+
|
|
24
|
+
Add any other context or screenshots about the feature request here.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
First of all, thanks for contributing!
|
|
3
|
+
|
|
4
|
+
If it's a typo fix or minor documentation update feel free to skip the rest of this template!
|
|
5
|
+
-->
|
|
6
|
+
|
|
7
|
+
## What is the purpose of this pull request?
|
|
8
|
+
|
|
9
|
+
<!--
|
|
10
|
+
If it's a bug fix, then link it to the issue, for example:
|
|
11
|
+
|
|
12
|
+
Fixes #xxx
|
|
13
|
+
-->
|
|
14
|
+
|
|
15
|
+
## What changes did you make? (overview)
|
|
16
|
+
|
|
17
|
+
## Is there anything you'd like reviewers to focus on?
|
|
18
|
+
|
|
19
|
+
## Checklist
|
|
20
|
+
|
|
21
|
+
- [ ] I've added tests for this change
|
|
22
|
+
- [ ] I've added a Changelog entry
|
|
23
|
+
- [ ] I've updated a documentation
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
name: Lint Docs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- master
|
|
7
|
+
paths:
|
|
8
|
+
- "*.md"
|
|
9
|
+
- "**/*.md"
|
|
10
|
+
pull_request:
|
|
11
|
+
paths:
|
|
12
|
+
- "*.md"
|
|
13
|
+
- "**/*.md"
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
markdownlint:
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
steps:
|
|
19
|
+
- uses: actions/checkout@v2
|
|
20
|
+
- uses: ruby/setup-ruby@v1
|
|
21
|
+
with:
|
|
22
|
+
ruby-version: 2.7
|
|
23
|
+
- name: Run Markdown linter
|
|
24
|
+
run: |
|
|
25
|
+
gem install mdl
|
|
26
|
+
mdl *.md
|
|
27
|
+
rubocop:
|
|
28
|
+
runs-on: ubuntu-latest
|
|
29
|
+
steps:
|
|
30
|
+
- uses: actions/checkout@v2
|
|
31
|
+
- uses: ruby/setup-ruby@v1
|
|
32
|
+
with:
|
|
33
|
+
ruby-version: 2.7
|
|
34
|
+
- name: Lint Markdown files with RuboCop
|
|
35
|
+
run: |
|
|
36
|
+
gem install bundler
|
|
37
|
+
bundle install --gemfile gemfiles/rubocop.gemfile --jobs 4 --retry 3
|
|
38
|
+
bundle exec --gemfile gemfiles/rubocop.gemfile rubocop -c .rubocop-md.yml
|
|
39
|
+
forspell:
|
|
40
|
+
runs-on: ubuntu-latest
|
|
41
|
+
steps:
|
|
42
|
+
- uses: actions/checkout@v2
|
|
43
|
+
- name: Install Hunspell
|
|
44
|
+
run: |
|
|
45
|
+
sudo apt-get install hunspell
|
|
46
|
+
- uses: ruby/setup-ruby@v1
|
|
47
|
+
with:
|
|
48
|
+
ruby-version: 2.7
|
|
49
|
+
- name: Cache installed gems
|
|
50
|
+
uses: actions/cache@v1
|
|
51
|
+
with:
|
|
52
|
+
path: /home/runner/.rubies/ruby-2.7.0/lib/ruby/gems/2.7.0
|
|
53
|
+
key: gems-cache-${{ runner.os }}
|
|
54
|
+
- name: Install Forspell
|
|
55
|
+
run: gem install forspell
|
|
56
|
+
- name: Run Forspell
|
|
57
|
+
run: forspell *.md .github/**/*.md
|
|
58
|
+
liche:
|
|
59
|
+
runs-on: ubuntu-latest
|
|
60
|
+
env:
|
|
61
|
+
GO111MODULE: on
|
|
62
|
+
steps:
|
|
63
|
+
- uses: actions/checkout@v2
|
|
64
|
+
- name: Set up Go
|
|
65
|
+
uses: actions/setup-go@v1
|
|
66
|
+
with:
|
|
67
|
+
go-version: 1.13.x
|
|
68
|
+
- name: Run liche
|
|
69
|
+
run: |
|
|
70
|
+
export PATH=$PATH:$(go env GOPATH)/bin
|
|
71
|
+
go get -u github.com/raviqqe/liche
|
|
72
|
+
liche README.md CHANGELOG.md
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
name: JRuby Build
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- master
|
|
7
|
+
pull_request:
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
rspec:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
env:
|
|
13
|
+
BUNDLE_JOBS: 4
|
|
14
|
+
BUNDLE_RETRY: 3
|
|
15
|
+
CI: true
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v2
|
|
18
|
+
- uses: actions/cache@v1
|
|
19
|
+
with:
|
|
20
|
+
path: /home/runner/bundle
|
|
21
|
+
key: bundle-${{ hashFiles('**/gemfiles/jruby.gemfile') }}-${{ hashFiles('**/*.gemspec') }}
|
|
22
|
+
restore-keys: |
|
|
23
|
+
bundle-
|
|
24
|
+
- uses: ruby/setup-ruby@v1
|
|
25
|
+
with:
|
|
26
|
+
ruby-version: jruby
|
|
27
|
+
- name: Bundle install
|
|
28
|
+
run: |
|
|
29
|
+
bundle config --global gemfile gemfiles/jruby.gemfile
|
|
30
|
+
bundle config path /home/runner/bundle
|
|
31
|
+
bundle install
|
|
32
|
+
bundle update
|
|
33
|
+
- name: Run RSpec
|
|
34
|
+
run: |
|
|
35
|
+
bundle exec rspec
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
name: Build
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- master
|
|
7
|
+
pull_request:
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
rspec:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
env:
|
|
13
|
+
BUNDLE_JOBS: 4
|
|
14
|
+
BUNDLE_RETRY: 3
|
|
15
|
+
CI: true
|
|
16
|
+
strategy:
|
|
17
|
+
fail-fast: false
|
|
18
|
+
matrix:
|
|
19
|
+
ruby: ["2.7"]
|
|
20
|
+
gemfile: [
|
|
21
|
+
"gemfiles/rails6.gemfile"
|
|
22
|
+
]
|
|
23
|
+
include:
|
|
24
|
+
- ruby: "2.5"
|
|
25
|
+
gemfile: "gemfiles/rails42.gemfile"
|
|
26
|
+
- ruby: "2.6"
|
|
27
|
+
gemfile: "gemfiles/rails50.gemfile"
|
|
28
|
+
- ruby: "2.6"
|
|
29
|
+
gemfile: "gemfiles/rails5.gemfile"
|
|
30
|
+
- ruby: "2.7"
|
|
31
|
+
gemfile: "gemfiles/railsmaster.gemfile"
|
|
32
|
+
steps:
|
|
33
|
+
- uses: actions/checkout@v2
|
|
34
|
+
- uses: actions/cache@v1
|
|
35
|
+
with:
|
|
36
|
+
path: /home/runner/bundle
|
|
37
|
+
key: bundle-${{ matrix.ruby }}-${{ matrix.gemfile }}-${{ hashFiles(matrix.gemfile) }}-${{ hashFiles('**/*.gemspec') }}
|
|
38
|
+
restore-keys: |
|
|
39
|
+
bundle-${{ matrix.ruby }}-${{ matrix.gemfile }}-
|
|
40
|
+
- uses: ruby/setup-ruby@v1
|
|
41
|
+
with:
|
|
42
|
+
ruby-version: ${{ matrix.ruby }}
|
|
43
|
+
- name: Bundle install
|
|
44
|
+
run: |
|
|
45
|
+
bundle config path /home/runner/bundle
|
|
46
|
+
bundle config --global gemfile ${{ matrix.gemfile }}
|
|
47
|
+
bundle install
|
|
48
|
+
bundle update
|
|
49
|
+
- name: Run RSpec
|
|
50
|
+
run: |
|
|
51
|
+
bundle exec rspec
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
name: Lint Ruby
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- master
|
|
7
|
+
pull_request:
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
rubocop:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@v2
|
|
14
|
+
- uses: ruby/setup-ruby@v1
|
|
15
|
+
with:
|
|
16
|
+
ruby-version: 2.7
|
|
17
|
+
- name: Lint Ruby code with RuboCop
|
|
18
|
+
run: |
|
|
19
|
+
gem install bundler
|
|
20
|
+
bundle install --gemfile gemfiles/rubocop.gemfile --jobs 4 --retry 3
|
|
21
|
+
bundle exec --gemfile gemfiles/rubocop.gemfile rubocop
|
data/.gitignore
CHANGED
|
@@ -1,10 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
# Numerous always-ignore extensions
|
|
2
|
+
*.diff
|
|
3
|
+
*.err
|
|
4
|
+
*.orig
|
|
5
|
+
*.log
|
|
6
|
+
*.rej
|
|
7
|
+
*.swo
|
|
8
|
+
*.swp
|
|
9
|
+
*.vi
|
|
10
|
+
*~
|
|
11
|
+
*.sass-cache
|
|
12
|
+
*.iml
|
|
13
|
+
.idea/
|
|
14
|
+
|
|
15
|
+
# Sublime
|
|
16
|
+
*.sublime-project
|
|
17
|
+
*.sublime-workspace
|
|
18
|
+
|
|
19
|
+
# OS or Editor folders
|
|
20
|
+
.DS_Store
|
|
21
|
+
.cache
|
|
22
|
+
.project
|
|
23
|
+
.settings
|
|
24
|
+
.tmproj
|
|
25
|
+
Thumbs.db
|
|
26
|
+
|
|
27
|
+
.bundle/
|
|
28
|
+
log/*.log
|
|
29
|
+
pkg/
|
|
30
|
+
spec/dummy/db/*.sqlite3
|
|
31
|
+
spec/dummy/db/*.sqlite3-journal
|
|
32
|
+
spec/dummy/tmp/
|
|
33
|
+
|
|
9
34
|
Gemfile.lock
|
|
10
35
|
Gemfile.local
|
|
36
|
+
.rspec
|
|
37
|
+
.ruby-version
|
|
38
|
+
*.gem
|
|
39
|
+
|
|
40
|
+
tmp/
|
|
41
|
+
.rbnext/
|
|
42
|
+
|
|
43
|
+
gemfiles/*.lock
|
data/.mdlrc
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
rules "~MD013", "~MD033", "~MD034", "~MD029", "~MD026", "~MD002"
|
data/.rspec
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
-f d
|
|
2
2
|
--color
|
data/.rubocop-md.yml
ADDED
data/.rubocop.yml
CHANGED
|
@@ -13,7 +13,7 @@ AllCops:
|
|
|
13
13
|
- 'vendor/**/*'
|
|
14
14
|
- 'gemfiles/**/*'
|
|
15
15
|
DisplayCopNames: true
|
|
16
|
-
TargetRubyVersion: 2.
|
|
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
|
data/CHANGELOG.md
CHANGED
|
@@ -2,11 +2,35 @@
|
|
|
2
2
|
|
|
3
3
|
## master
|
|
4
4
|
|
|
5
|
+
## 0.4.3 (2020-08-21)
|
|
6
|
+
|
|
7
|
+
- Fix parameterized mailers support in Rails >= 5.0, <5.2 ([@dmitryzuev][])
|
|
8
|
+
|
|
9
|
+
## 0.4.2 (2020-04-28)
|
|
10
|
+
|
|
11
|
+
- Allow resolve mailer class with custom pattern ([@brovikov][])
|
|
12
|
+
|
|
13
|
+
## 0.4.1 (2020-04-22)
|
|
14
|
+
|
|
15
|
+
- Fixed TestDelivery fiber support. ([@pauldub](https://github.com/pauldub))
|
|
16
|
+
|
|
17
|
+
## 0.4.0 (2020-03-02)
|
|
18
|
+
|
|
19
|
+
- **Drop Ruby 2.4 support**. ([@palkan][])
|
|
20
|
+
|
|
21
|
+
- Allow passing keyword arguments to `notify`. ([@palkan][])
|
|
22
|
+
|
|
23
|
+
## 0.3.1 (2020-02-21)
|
|
24
|
+
|
|
25
|
+
- Fixed RSpec detection. ([@palkan][])
|
|
26
|
+
|
|
27
|
+
- Add note about usage with Spring. ([@iBublik][])
|
|
28
|
+
|
|
5
29
|
## 0.3.0 (2019-12-25)
|
|
6
30
|
|
|
7
31
|
- Add support of :only, :except params for callbacks. ([@curpeng][])
|
|
8
32
|
|
|
9
|
-
- Add negation rspec matcher: `have_not_delivered_to`. ([@StanisLove]
|
|
33
|
+
- Add negation rspec matcher: `have_not_delivered_to`. ([@StanisLove](https://github.com/stanislove))
|
|
10
34
|
|
|
11
35
|
- Improve RSpec matcher's failure message. ([@iBublik][])
|
|
12
36
|
|
|
@@ -26,3 +50,6 @@ Initial version.
|
|
|
26
50
|
|
|
27
51
|
[@palkan]: https://github.com/palkan
|
|
28
52
|
[@curpeng]: https://github.com/curpeng
|
|
53
|
+
[@iBublik]: https://github.com/ibublik
|
|
54
|
+
[@brovikov]: https://github.com/brovikov
|
|
55
|
+
[@dmitryzuev]: https://github.com/dmitryzuev
|
data/Gemfile
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
source 'https://rubygems.org'
|
|
4
|
+
|
|
5
|
+
gem 'pry-byebug', platform: :mri
|
|
2
6
|
|
|
3
7
|
gemspec
|
|
4
8
|
|
|
5
|
-
|
|
9
|
+
eval_gemfile "gemfiles/rubocop.gemfile"
|
|
6
10
|
|
|
7
|
-
local_gemfile = File.
|
|
11
|
+
local_gemfile = "#{File.dirname(__FILE__)}/Gemfile.local"
|
|
8
12
|
|
|
9
13
|
if File.exist?(local_gemfile)
|
|
10
14
|
eval(File.read(local_gemfile)) # rubocop:disable Security/Eval
|
|
11
15
|
else
|
|
12
|
-
gem "rails", "~>
|
|
16
|
+
gem "rails", "~> 6.0"
|
|
13
17
|
end
|
data/README.md
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
[](https://badge.fury.io/rb/active_delivery)
|
|
2
|
-
|
|
2
|
+

|
|
3
|
+

|
|
3
4
|
|
|
4
5
|
# Active Delivery
|
|
5
6
|
|
|
@@ -11,7 +12,8 @@ Framework providing an entry point (single _interface_) for all types of notific
|
|
|
11
12
|
<img src="https://evilmartians.com/badges/sponsored-by-evil-martians.svg" alt="Sponsored by Evil Martians" width="236" height="54"></a>
|
|
12
13
|
|
|
13
14
|
Requirements:
|
|
14
|
-
|
|
15
|
+
|
|
16
|
+
- Ruby ~> 2.5
|
|
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
|
|
|
@@ -28,7 +30,8 @@ Here comes _Active Delivery_.
|
|
|
28
30
|
In the simplest case when we have only mailers Active Delivery is just a wrapper for Mailer with (possibly) some additional logic provided (e.g., preventing emails to unsubscribed users).
|
|
29
31
|
|
|
30
32
|
Motivations behind Active Delivery:
|
|
31
|
-
|
|
33
|
+
|
|
34
|
+
- Organize notifications related logic:
|
|
32
35
|
|
|
33
36
|
```ruby
|
|
34
37
|
# Before
|
|
@@ -43,20 +46,20 @@ def after_some_action
|
|
|
43
46
|
end
|
|
44
47
|
```
|
|
45
48
|
|
|
46
|
-
-
|
|
49
|
+
- Better testability (see [Testing](#testing)).
|
|
47
50
|
|
|
48
51
|
## Installation
|
|
49
52
|
|
|
50
53
|
Add this line to your application's Gemfile:
|
|
51
54
|
|
|
52
55
|
```ruby
|
|
53
|
-
gem
|
|
56
|
+
gem "active_delivery"
|
|
54
57
|
```
|
|
55
58
|
|
|
56
59
|
And then execute:
|
|
57
60
|
|
|
58
61
|
```sh
|
|
59
|
-
|
|
62
|
+
bundle
|
|
60
63
|
```
|
|
61
64
|
|
|
62
65
|
## Usage
|
|
@@ -84,15 +87,23 @@ PostsNotifier.published(user, post).notify_later
|
|
|
84
87
|
|
|
85
88
|
P.S. Naming ("delivery") is inspired by Basecamp: https://www.youtube.com/watch?v=m1jOWu7woKM.
|
|
86
89
|
|
|
90
|
+
**NOTE**: You could specify Mailer class explicitly or by custom pattern, using resolver:
|
|
91
|
+
|
|
92
|
+
```ruby
|
|
93
|
+
class PostsDelivery < ActiveDelivery::Base
|
|
94
|
+
register_line :custom_mailer, ActiveDelivery::Lines::Mailer, resolver: ->(name) { CustomMailer }
|
|
95
|
+
end
|
|
96
|
+
```
|
|
97
|
+
|
|
87
98
|
Delivery also supports _parameterized_ calling:
|
|
88
99
|
|
|
89
100
|
```ruby
|
|
90
|
-
|
|
101
|
+
PostsDelivery.with(user: user).notify(:published, post)
|
|
91
102
|
```
|
|
92
103
|
|
|
93
104
|
The parameters could be accessed through the `params` instance method (e.g., to implement guard-like logic).
|
|
94
105
|
|
|
95
|
-
**NOTE**: When params are presents the
|
|
106
|
+
**NOTE**: When params are presents the parameterized mailer is used, i.e.:
|
|
96
107
|
|
|
97
108
|
```ruby
|
|
98
109
|
PostsMailer.with(user: user).published(post)
|
|
@@ -149,14 +160,15 @@ Active Delivery provides an elegant way to test deliveries in your code (i.e., w
|
|
|
149
160
|
it "delivers notification" do
|
|
150
161
|
expect { subject }.to have_delivered_to(Community::EventsDelivery, :modified, event)
|
|
151
162
|
.with(profile: profile)
|
|
163
|
+
end
|
|
152
164
|
```
|
|
153
165
|
|
|
154
166
|
You can also use such RSpec features as [compound expectations](https://relishapp.com/rspec/rspec-expectations/docs/compound-expectations) and [composed matchers](https://relishapp.com/rspec/rspec-expectations/v/3-8/docs/composing-matchers):
|
|
155
167
|
|
|
156
168
|
```ruby
|
|
157
169
|
it "delivers to RSVPed members via .notify" do
|
|
158
|
-
expect { subject }
|
|
159
|
-
to have_delivered_to(Community::EventsDelivery, :canceled, an_instance_of(event)).with(
|
|
170
|
+
expect { subject }
|
|
171
|
+
.to have_delivered_to(Community::EventsDelivery, :canceled, an_instance_of(event)).with(
|
|
160
172
|
a_hash_including(profile: another_profile)
|
|
161
173
|
).and have_delivered_to(Community::EventsDelivery, :canceled, event).with(
|
|
162
174
|
profile: profile
|
|
@@ -184,7 +196,7 @@ specify "when event is not found" do
|
|
|
184
196
|
end
|
|
185
197
|
```
|
|
186
198
|
|
|
187
|
-
|
|
199
|
+
**NOTE:** test mode activated automatically if `RAILS_ENV` or `RACK_ENV` env variable is equal to "test". Otherwise add `require "active_delivery/testing/rspec"` to your `spec_helper.rb` / `rails_helper.rb` manually. This is also required if you're using Spring in test environment (e.g. with help of [spring-commands-rspec](https://github.com/jonleighton/spring-commands-rspec)).
|
|
188
200
|
|
|
189
201
|
## Custom "lines"
|
|
190
202
|
|
|
@@ -226,7 +238,6 @@ we call `EventDelivery.notify(:message_arrived, "ping-pong!")`.
|
|
|
226
238
|
Line class has the following API:
|
|
227
239
|
|
|
228
240
|
```ruby
|
|
229
|
-
|
|
230
241
|
class PigeonLine < ActiveDelivery::Lines::Base
|
|
231
242
|
# This method is used to infer sender class
|
|
232
243
|
# `name` is the name of the delivery class
|
|
@@ -243,17 +254,17 @@ class PigeonLine < ActiveDelivery::Lines::Base
|
|
|
243
254
|
# Called when we want to send message synchronously
|
|
244
255
|
# `sender` here either `sender_class` or `sender_class.with(params)`
|
|
245
256
|
# if params passed.
|
|
246
|
-
def notify_now(sender, delivery_action, *args)
|
|
257
|
+
def notify_now(sender, delivery_action, *args, **kwargs)
|
|
247
258
|
# For example, our EventPigeon class returns some `Pigeon` object
|
|
248
|
-
pigeon = sender.public_send(delivery_action, *args)
|
|
259
|
+
pigeon = sender.public_send(delivery_action, *args, **kwargs)
|
|
249
260
|
# PigeonLaunchService do all the sending job
|
|
250
261
|
PigeonService.launch pigeon
|
|
251
262
|
end
|
|
252
263
|
|
|
253
264
|
# Called when we want to send a message asynchronously.
|
|
254
265
|
# 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)
|
|
266
|
+
def notify_later(sender, delivery_action, *args, **kwargs)
|
|
267
|
+
pigeon = sender.public_send(delivery_action, *args, **kwargs)
|
|
257
268
|
# PigeonLaunchService do all the sending job
|
|
258
269
|
PigeonLaunchJob.perform_later pigeon
|
|
259
270
|
end
|
data/RELEASING.md
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# How to release a gem
|
|
2
|
+
|
|
3
|
+
This document describes a process of releasing a new version of a gem.
|
|
4
|
+
|
|
5
|
+
1. Bump version.
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
git commit -m "Bump 1.<x>.<y>"
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
We're (kinda) using semantic versioning:
|
|
12
|
+
|
|
13
|
+
- Bugfixes should be released as fast as possible as patch versions.
|
|
14
|
+
- New features could be combined and released as minor or patch version upgrades (depending on the _size of the feature_—it's up to maintainers to decide).
|
|
15
|
+
- Breaking API changes should be avoided in minor and patch releases.
|
|
16
|
+
- Breaking dependencies changes (e.g., dropping older Ruby support) could be released in minor versions.
|
|
17
|
+
|
|
18
|
+
How to bump a version:
|
|
19
|
+
|
|
20
|
+
- Change the version number in `lib/active_delivery/version.rb` file.
|
|
21
|
+
- Update the changelog (add new heading with the version name and date).
|
|
22
|
+
- Update the installation documentation if necessary (e.g., during minor and major updates).
|
|
23
|
+
|
|
24
|
+
2. Push code to GitHub and make sure CI passes.
|
|
25
|
+
|
|
26
|
+
```sh
|
|
27
|
+
git push
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
3. Release a gem.
|
|
31
|
+
|
|
32
|
+
```sh
|
|
33
|
+
gem release -t
|
|
34
|
+
git push --tags
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
We use [gem-release](https://github.com/svenfuchs/gem-release) for publishing gems with a single command:
|
|
38
|
+
|
|
39
|
+
```sh
|
|
40
|
+
gem release -t
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Don't forget to push tags and write release notes on GitHub (if necessary).
|
data/Rakefile
CHANGED
|
@@ -2,9 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
require "bundler/gem_tasks"
|
|
4
4
|
require "rspec/core/rake_task"
|
|
5
|
-
require "rubocop/rake_task"
|
|
6
5
|
|
|
7
|
-
RuboCop::RakeTask.new
|
|
8
6
|
RSpec::Core::RakeTask.new(:spec)
|
|
9
7
|
|
|
10
|
-
|
|
8
|
+
begin
|
|
9
|
+
require "rubocop/rake_task"
|
|
10
|
+
RuboCop::RakeTask.new
|
|
11
|
+
|
|
12
|
+
RuboCop::RakeTask.new("rubocop:md") do |task|
|
|
13
|
+
task.options << %w[-c .rubocop-md.yml]
|
|
14
|
+
end
|
|
15
|
+
rescue LoadError
|
|
16
|
+
task(:rubocop) {}
|
|
17
|
+
task("rubocop:md") {}
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
task default: %w[rubocop rubocop:md spec]
|
data/active_delivery.gemspec
CHANGED
|
@@ -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
|
|
9
|
-
spec.version
|
|
10
|
-
spec.authors
|
|
11
|
-
spec.email
|
|
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
|
|
14
|
-
spec.description
|
|
15
|
-
spec.homepage
|
|
16
|
-
spec.license
|
|
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.
|
|
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
|
|
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", "~>
|
|
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
|
|
34
|
+
spec.add_development_dependency "standard", "~> 0.2.0"
|
|
35
35
|
end
|
data/forspell.dict
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Format: one word per line. Empty lines and #-comments are supported too.
|
|
2
|
+
# If you want to add word with its forms, you can write 'word: example' (without quotes) on the line,
|
|
3
|
+
# where 'example' is existing word with the same possible forms (endings) as your word.
|
|
4
|
+
# Example: deduplicate: duplicate
|
|
5
|
+
assignees
|
|
6
|
+
matchers
|
|
7
|
+
palkan
|
|
8
|
+
testability
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
source 'https://rubygems.org'
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
gem 'arel', github: 'rails/arel'
|
|
4
|
+
gem 'rails', github: 'rails/rails'
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
gem "rubocop", github: "rubocop-hq/rubocop"
|
|
7
|
-
|
|
8
|
-
gemspec path: ".."
|
|
6
|
+
gemspec path: '..'
|
data/lefthook.yml
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
pre-commit:
|
|
2
|
+
commands:
|
|
3
|
+
mdl:
|
|
4
|
+
tags: style
|
|
5
|
+
glob: "**/*.md"
|
|
6
|
+
run: mdl {staged_files}
|
|
7
|
+
liche:
|
|
8
|
+
tags: links
|
|
9
|
+
glob: "docs/*.md"
|
|
10
|
+
run: liche -d docs/ -r docs/* && test {staged_files}
|
|
11
|
+
forspell:
|
|
12
|
+
tags: grammar
|
|
13
|
+
glob: "**/*.md"
|
|
14
|
+
run: forspell {staged_files}
|
|
15
|
+
rubocop:
|
|
16
|
+
tags: style
|
|
17
|
+
glob: "**/*.md"
|
|
18
|
+
run: BUNDLE_GEMFILE=gemfiles/rubocop.gemfile bundle exec rubocop {staged_files}
|
|
@@ -43,6 +43,8 @@ module ActionMailer
|
|
|
43
43
|
class MessageDelivery < ActionMailer::MessageDelivery # :nodoc:
|
|
44
44
|
def initialize(mailer_class, action, params, *args)
|
|
45
45
|
super(mailer_class, action, *args)
|
|
46
|
+
@mailer ||= mailer_class
|
|
47
|
+
@mail_method ||= action
|
|
46
48
|
@params = params
|
|
47
49
|
end
|
|
48
50
|
|
|
@@ -57,12 +59,16 @@ module ActionMailer
|
|
|
57
59
|
private
|
|
58
60
|
|
|
59
61
|
def processed_mailer
|
|
60
|
-
@processed_mailer ||= @mailer.send(
|
|
62
|
+
@processed_mailer ||= @mailer.send(*mailer_args).tap do |m|
|
|
61
63
|
m.params = @params
|
|
62
64
|
m.process @mail_method, *@args
|
|
63
65
|
end
|
|
64
66
|
end
|
|
65
67
|
|
|
68
|
+
def mailer_args
|
|
69
|
+
ActionMailer::VERSION::MAJOR < 5 ? [:new, nil, *@args] : [:new]
|
|
70
|
+
end
|
|
71
|
+
|
|
66
72
|
def enqueue_delivery(delivery_method, options = {})
|
|
67
73
|
if processed?
|
|
68
74
|
super
|
data/lib/active_delivery/base.rb
CHANGED
|
@@ -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(
|
|
49
|
-
run_callbacks(
|
|
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
|
-
|
|
77
|
-
|
|
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 ||=
|
|
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 ||=
|
|
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 ||=
|
|
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
|
|
@@ -11,6 +11,7 @@ module ActiveDelivery
|
|
|
11
11
|
@id = id
|
|
12
12
|
@owner = owner
|
|
13
13
|
@options = options.tap(&:freeze)
|
|
14
|
+
@resolver = options[:resolver]
|
|
14
15
|
end
|
|
15
16
|
|
|
16
17
|
def dup_for(new_owner)
|
|
@@ -18,21 +19,22 @@ module ActiveDelivery
|
|
|
18
19
|
end
|
|
19
20
|
|
|
20
21
|
def resolve_class(name)
|
|
22
|
+
resolver&.call(name)
|
|
21
23
|
end
|
|
22
24
|
|
|
23
25
|
def notify?(method_name)
|
|
24
26
|
handler_class.respond_to?(method_name)
|
|
25
27
|
end
|
|
26
28
|
|
|
27
|
-
def notify_now(handler, mid, *args)
|
|
29
|
+
def notify_now(handler, mid, *args, **kwargs)
|
|
28
30
|
end
|
|
29
31
|
|
|
30
|
-
def notify_later(handler, mid, *args)
|
|
32
|
+
def notify_later(handler, mid, *args, **kwargs)
|
|
31
33
|
end
|
|
32
34
|
|
|
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)
|
|
35
|
+
def notify(mid, *args, params:, sync:, **kwargs)
|
|
36
|
+
clazz = params.empty? ? handler_class : handler_class.with(**params)
|
|
37
|
+
sync ? notify_now(clazz, mid, *args, **kwargs) : notify_later(clazz, mid, *args, **kwargs)
|
|
36
38
|
end
|
|
37
39
|
|
|
38
40
|
def handler_class
|
|
@@ -54,6 +56,8 @@ module ActiveDelivery
|
|
|
54
56
|
|
|
55
57
|
owner.superclass.public_send(handler_method)
|
|
56
58
|
end
|
|
59
|
+
|
|
60
|
+
attr_reader :resolver
|
|
57
61
|
end
|
|
58
62
|
end
|
|
59
63
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
if ActionMailer::VERSION::MAJOR < 5
|
|
3
|
+
if ActionMailer::VERSION::MAJOR < 5 || (ActionMailer::VERSION::MAJOR == 5 && ActionMailer::VERSION::MINOR < 2)
|
|
4
4
|
require "active_delivery/action_mailer/parameterized"
|
|
5
5
|
end
|
|
6
6
|
|
|
@@ -9,23 +9,29 @@ module ActiveDelivery
|
|
|
9
9
|
class Mailer < Base
|
|
10
10
|
alias mailer_class handler_class
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
name.gsub(/Delivery$/, "Mailer").safe_constantize
|
|
14
|
-
end
|
|
12
|
+
DEFAULT_RESOLVER = ->(name) { name.gsub(/Delivery$/, "Mailer").safe_constantize }
|
|
15
13
|
|
|
16
14
|
def notify?(method_name)
|
|
17
15
|
mailer_class.action_methods.include?(method_name.to_s)
|
|
18
16
|
end
|
|
19
17
|
|
|
20
|
-
def notify_now(mailer, mid, *args)
|
|
21
|
-
|
|
18
|
+
def notify_now(mailer, mid, *args, **kwargs)
|
|
19
|
+
if kwargs.empty?
|
|
20
|
+
mailer.public_send(mid, *args).deliver_now
|
|
21
|
+
else
|
|
22
|
+
mailer.public_send(mid, *args, **kwargs).deliver_now
|
|
23
|
+
end
|
|
22
24
|
end
|
|
23
25
|
|
|
24
|
-
def notify_later(mailer, mid, *args)
|
|
25
|
-
|
|
26
|
+
def notify_later(mailer, mid, *args, **kwargs)
|
|
27
|
+
if kwargs.empty?
|
|
28
|
+
mailer.public_send(mid, *args).deliver_later
|
|
29
|
+
else
|
|
30
|
+
mailer.public_send(mid, *args, **kwargs).deliver_later
|
|
31
|
+
end
|
|
26
32
|
end
|
|
27
33
|
end
|
|
28
34
|
|
|
29
|
-
ActiveDelivery::Base.register_line :mailer, Mailer
|
|
35
|
+
ActiveDelivery::Base.register_line :mailer, Mailer, resolver: Mailer::DEFAULT_RESOLVER
|
|
30
36
|
end
|
|
31
37
|
end
|
|
@@ -4,18 +4,18 @@ module ActiveDelivery
|
|
|
4
4
|
module TestDelivery
|
|
5
5
|
class << self
|
|
6
6
|
def enable
|
|
7
|
-
raise ArgumentError, "block is
|
|
7
|
+
raise ArgumentError, "block is required" unless block_given?
|
|
8
8
|
begin
|
|
9
9
|
clear
|
|
10
|
-
Thread.current
|
|
10
|
+
Thread.current.thread_variable_set(:active_delivery_testing, true)
|
|
11
11
|
yield
|
|
12
12
|
ensure
|
|
13
|
-
Thread.current
|
|
13
|
+
Thread.current.thread_variable_set(:active_delivery_testing, false)
|
|
14
14
|
end
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
def enabled?
|
|
18
|
-
Thread.current
|
|
18
|
+
Thread.current.thread_variable_get(:active_delivery_testing) == true
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
def track(delivery, event, args, options)
|
|
@@ -45,4 +45,4 @@ end
|
|
|
45
45
|
|
|
46
46
|
ActiveDelivery::Base.prepend ActiveDelivery::TestDelivery
|
|
47
47
|
|
|
48
|
-
require "active_delivery/testing/rspec" if defined?(RSpec)
|
|
48
|
+
require "active_delivery/testing/rspec" if defined?(RSpec::Core)
|
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
|
|
4
|
+
version: 0.4.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Vladimir Dementyev
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2020-08-21 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: '
|
|
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: '
|
|
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
|
|
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
|
|
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
|
|
@@ -73,20 +73,37 @@ executables: []
|
|
|
73
73
|
extensions: []
|
|
74
74
|
extra_rdoc_files: []
|
|
75
75
|
files:
|
|
76
|
+
- ".gem_release.yml"
|
|
77
|
+
- ".github/ISSUE_TEMPLATE/bug_report.md"
|
|
78
|
+
- ".github/ISSUE_TEMPLATE/feature_request.md"
|
|
79
|
+
- ".github/PULL_REQUEST_TEMPLATE.md"
|
|
80
|
+
- ".github/workflows/docs-lint.yml"
|
|
81
|
+
- ".github/workflows/rspec-jruby.yml"
|
|
82
|
+
- ".github/workflows/rspec.yml"
|
|
83
|
+
- ".github/workflows/rubocop.yml"
|
|
76
84
|
- ".gitignore"
|
|
85
|
+
- ".mdlrc"
|
|
77
86
|
- ".rspec"
|
|
87
|
+
- ".rubocop-md.yml"
|
|
78
88
|
- ".rubocop.yml"
|
|
79
|
-
- ".travis.yml"
|
|
80
89
|
- CHANGELOG.md
|
|
81
90
|
- Gemfile
|
|
82
91
|
- LICENSE.txt
|
|
83
92
|
- README.md
|
|
93
|
+
- RELEASING.md
|
|
84
94
|
- Rakefile
|
|
85
95
|
- active_delivery.gemspec
|
|
86
96
|
- bin/console
|
|
87
97
|
- bin/setup
|
|
98
|
+
- forspell.dict
|
|
99
|
+
- gemfiles/jruby.gemfile
|
|
88
100
|
- gemfiles/rails42.gemfile
|
|
101
|
+
- gemfiles/rails5.gemfile
|
|
102
|
+
- gemfiles/rails50.gemfile
|
|
103
|
+
- gemfiles/rails6.gemfile
|
|
89
104
|
- gemfiles/railsmaster.gemfile
|
|
105
|
+
- gemfiles/rubocop.gemfile
|
|
106
|
+
- lefthook.yml
|
|
90
107
|
- lib/active_delivery.rb
|
|
91
108
|
- lib/active_delivery/action_mailer/parameterized.rb
|
|
92
109
|
- lib/active_delivery/base.rb
|
|
@@ -113,14 +130,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
113
130
|
requirements:
|
|
114
131
|
- - ">="
|
|
115
132
|
- !ruby/object:Gem::Version
|
|
116
|
-
version: '2.
|
|
133
|
+
version: '2.5'
|
|
117
134
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
118
135
|
requirements:
|
|
119
136
|
- - ">="
|
|
120
137
|
- !ruby/object:Gem::Version
|
|
121
138
|
version: '0'
|
|
122
139
|
requirements: []
|
|
123
|
-
rubygems_version: 3.0.
|
|
140
|
+
rubygems_version: 3.0.6
|
|
124
141
|
signing_key:
|
|
125
142
|
specification_version: 4
|
|
126
143
|
summary: Rails framework for managing all types of notifications in one place
|
data/.travis.yml
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
sudo: false
|
|
2
|
-
language: ruby
|
|
3
|
-
cache: bundler
|
|
4
|
-
|
|
5
|
-
notifications:
|
|
6
|
-
email: false
|
|
7
|
-
|
|
8
|
-
before_install:
|
|
9
|
-
- gem update --system
|
|
10
|
-
- gem install bundler -v '< 2'
|
|
11
|
-
|
|
12
|
-
matrix:
|
|
13
|
-
fast_finish: true
|
|
14
|
-
include:
|
|
15
|
-
- rvm: ruby-head
|
|
16
|
-
gemfile: gemfiles/railsmaster.gemfile
|
|
17
|
-
- rvm: 2.5.3
|
|
18
|
-
gemfile: Gemfile
|
|
19
|
-
- rvm: 2.6.0
|
|
20
|
-
gemfile: Gemfile
|
|
21
|
-
- rvm: 2.5.3
|
|
22
|
-
gemfile: Gemfile
|
|
23
|
-
env:
|
|
24
|
-
- NO_RAILS=1
|
|
25
|
-
- rvm: 2.4.3
|
|
26
|
-
gemfile: Gemfile
|
|
27
|
-
- rvm: 2.4.3
|
|
28
|
-
gemfile: gemfiles/rails42.gemfile
|
|
29
|
-
allow_failures:
|
|
30
|
-
- rvm: ruby-head
|
|
31
|
-
gemfile: gemfiles/railsmaster.gemfile
|