catch_all 0.0.2 → 0.0.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 +7 -0
- data/.gitignore +2 -1
- data/Gemfile +3 -1
- data/Gemfile.lock +85 -55
- data/README.md +11 -0
- data/lib/catch_all/version.rb +2 -2
- data/lib/catch_all.rb +24 -6
- data/spec/catch_all_spec.rb +19 -7
- data/spec/spec_helper.rb +12 -0
- metadata +11 -11
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b9ecfda75b7a73bcb32ada1f5e876e4e03e23a93
|
4
|
+
data.tar.gz: facd9a247bbc4416f5ad83df7442439f5174dfbe
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 0d8821cf46adab5a2b268cdf5bcca4c3bec692ea04a3096fa4a96e857ea65280f6a6ad521fdcedd38b1831198ab10d8d10ea368013911935cef7402bab0c792b
|
7
|
+
data.tar.gz: 11afad6bec26b7c9c70ce4c6730a4fe1da9855c16ed0491ab4c772480299d54eabf8250b370a67d95c7fb3cfbde23c65f49360a5f707f49ed7ba4f30737d7616
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,66 +1,91 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
catch_all (0.0.
|
4
|
+
catch_all (0.0.2)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
9
|
ZenTest (4.4.2)
|
10
|
-
actionmailer (
|
11
|
-
actionpack (=
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
rack (~>
|
20
|
-
rack-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
activesupport (=
|
25
|
-
builder (~> 3.
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
10
|
+
actionmailer (5.2.0)
|
11
|
+
actionpack (= 5.2.0)
|
12
|
+
actionview (= 5.2.0)
|
13
|
+
activejob (= 5.2.0)
|
14
|
+
mail (~> 2.5, >= 2.5.4)
|
15
|
+
rails-dom-testing (~> 2.0)
|
16
|
+
actionpack (5.2.0)
|
17
|
+
actionview (= 5.2.0)
|
18
|
+
activesupport (= 5.2.0)
|
19
|
+
rack (~> 2.0)
|
20
|
+
rack-test (>= 0.6.3)
|
21
|
+
rails-dom-testing (~> 2.0)
|
22
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
23
|
+
actionview (5.2.0)
|
24
|
+
activesupport (= 5.2.0)
|
25
|
+
builder (~> 3.1)
|
26
|
+
erubi (~> 1.4)
|
27
|
+
rails-dom-testing (~> 2.0)
|
28
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
29
|
+
activejob (5.2.0)
|
30
|
+
activesupport (= 5.2.0)
|
31
|
+
globalid (>= 0.3.6)
|
32
|
+
activesupport (5.2.0)
|
33
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
34
|
+
i18n (>= 0.7, < 2)
|
35
|
+
minitest (~> 5.1)
|
36
|
+
tzinfo (~> 1.1)
|
37
|
+
builder (3.2.3)
|
38
|
+
byebug (10.0.2)
|
39
|
+
coderay (1.1.2)
|
40
|
+
concurrent-ruby (1.0.5)
|
41
|
+
crass (1.0.4)
|
42
|
+
diff-lcs (1.3)
|
43
|
+
erubi (1.7.1)
|
44
|
+
globalid (0.4.1)
|
45
|
+
activesupport (>= 4.2.0)
|
46
|
+
i18n (1.0.1)
|
47
|
+
concurrent-ruby (~> 1.0)
|
48
|
+
loofah (2.2.2)
|
49
|
+
crass (~> 1.0.2)
|
50
|
+
nokogiri (>= 1.5.9)
|
51
|
+
mail (2.7.0)
|
52
|
+
mini_mime (>= 0.1.1)
|
53
|
+
method_source (0.9.0)
|
54
|
+
mini_mime (1.0.0)
|
55
|
+
mini_portile2 (2.3.0)
|
56
|
+
minitest (5.11.3)
|
57
|
+
nokogiri (1.8.2)
|
58
|
+
mini_portile2 (~> 2.3.0)
|
59
|
+
pry (0.11.3)
|
60
|
+
coderay (~> 1.1.0)
|
61
|
+
method_source (~> 0.9.0)
|
62
|
+
pry-byebug (3.6.0)
|
63
|
+
byebug (~> 10.0)
|
64
|
+
pry (~> 0.10)
|
65
|
+
rack (2.0.5)
|
66
|
+
rack-test (1.0.0)
|
67
|
+
rack (>= 1.0, < 3)
|
68
|
+
rails-dom-testing (2.0.3)
|
69
|
+
activesupport (>= 4.2.0)
|
70
|
+
nokogiri (>= 1.6)
|
71
|
+
rails-html-sanitizer (1.0.4)
|
72
|
+
loofah (~> 2.2, >= 2.2.2)
|
73
|
+
rspec (3.7.0)
|
74
|
+
rspec-core (~> 3.7.0)
|
75
|
+
rspec-expectations (~> 3.7.0)
|
76
|
+
rspec-mocks (~> 3.7.0)
|
77
|
+
rspec-core (3.7.1)
|
78
|
+
rspec-support (~> 3.7.0)
|
79
|
+
rspec-expectations (3.7.0)
|
80
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
81
|
+
rspec-support (~> 3.7.0)
|
82
|
+
rspec-mocks (3.7.0)
|
83
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
84
|
+
rspec-support (~> 3.7.0)
|
85
|
+
rspec-support (3.7.1)
|
86
|
+
thread_safe (0.3.6)
|
87
|
+
tzinfo (1.2.5)
|
88
|
+
thread_safe (~> 0.1)
|
64
89
|
|
65
90
|
PLATFORMS
|
66
91
|
ruby
|
@@ -68,5 +93,10 @@ PLATFORMS
|
|
68
93
|
DEPENDENCIES
|
69
94
|
ZenTest (~> 4.4.2)
|
70
95
|
actionmailer
|
96
|
+
byebug
|
71
97
|
catch_all!
|
98
|
+
pry-byebug
|
72
99
|
rspec (>= 2.3.0)
|
100
|
+
|
101
|
+
BUNDLED WITH
|
102
|
+
1.16.1
|
data/README.md
CHANGED
@@ -2,6 +2,10 @@
|
|
2
2
|
|
3
3
|
ActionMailer::CatchAll is a simple module to define a white-list of email addresses, used for staging environments.
|
4
4
|
|
5
|
+
If the emailed user is on the whitelist, it sends to that user.
|
6
|
+
|
7
|
+
If the user isn't on the whitelist, it sends to the fallback email address(es).
|
8
|
+
|
5
9
|
## Usage
|
6
10
|
|
7
11
|
Gemfile:
|
@@ -14,4 +18,11 @@ ActionMailer::CatchAll is a simple module to define a white-list of email addres
|
|
14
18
|
ActionMailer::CatchAll.enable('scott@railsnewbie.com')
|
15
19
|
end
|
16
20
|
|
21
|
+
Or, if you want to use a whitelist of domains:
|
17
22
|
|
23
|
+
if Rails.env.staging?
|
24
|
+
ActionMailer::CatchAll.enable({
|
25
|
+
whitelist: [/\@railsnewbie.com$/, /\@example.com$/],
|
26
|
+
fallback: 'scott@railsnewbie.com',
|
27
|
+
})
|
28
|
+
end
|
data/lib/catch_all/version.rb
CHANGED
data/lib/catch_all.rb
CHANGED
@@ -8,10 +8,18 @@ module ActionMailer
|
|
8
8
|
ActionMailer::Base.instance_methods.include?(:mail_aliased_from_action_mailer_staging)
|
9
9
|
end
|
10
10
|
|
11
|
-
def enable(*
|
12
|
-
|
11
|
+
def enable(*options)
|
12
|
+
if options.length == 1 && options[0].is_a?(Hash)
|
13
|
+
hash = options[0]
|
13
14
|
|
14
|
-
|
15
|
+
whitelist_email_addresses = Array(hash[:whitelist]).flatten.compact
|
16
|
+
fallback_email_addresses = Array(hash[:fallback]).flatten.compact
|
17
|
+
else
|
18
|
+
whitelist_email_addresses = options.flatten.compact
|
19
|
+
fallback_email_addresses = whitelist_email_addresses
|
20
|
+
end
|
21
|
+
|
22
|
+
if fallback_email_addresses.length == 0
|
15
23
|
Kernel.warn("No email addresses passed to ActionMailer::CatchAll!")
|
16
24
|
end
|
17
25
|
|
@@ -31,11 +39,21 @@ module ActionMailer
|
|
31
39
|
|
32
40
|
# save the original to header
|
33
41
|
mailer['X-Action-Mailer-Staging-Original-Email-To'] = to_values.inspect
|
34
|
-
|
42
|
+
|
43
|
+
selected_to_addresses = to_values.select do |to|
|
44
|
+
whitelist_email_addresses.any? do |email|
|
45
|
+
if email.is_a?(Regexp)
|
46
|
+
email =~ to
|
47
|
+
else
|
48
|
+
email == to
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
35
53
|
if selected_to_addresses.any?
|
36
54
|
mailer[:to] = selected_to_addresses
|
37
55
|
else
|
38
|
-
mailer[:to] =
|
56
|
+
mailer[:to] = fallback_email_addresses
|
39
57
|
end
|
40
58
|
|
41
59
|
mailer
|
@@ -53,4 +71,4 @@ module ActionMailer
|
|
53
71
|
end
|
54
72
|
end
|
55
73
|
end
|
56
|
-
end
|
74
|
+
end
|
data/spec/catch_all_spec.rb
CHANGED
@@ -1,24 +1,24 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
class Notifier < ActionMailer::Base
|
4
4
|
def notify
|
5
|
-
mail(:to => "scott@learnup.me")
|
5
|
+
mail(:to => "scott@learnup.me", body: "body")
|
6
6
|
end
|
7
7
|
|
8
8
|
def notify_multiple
|
9
|
-
mail(:to => ["scott@learnup.me", "kenny@learnup.me"])
|
9
|
+
mail(:to => ["scott@learnup.me", "kenny@learnup.me"], body: "body")
|
10
10
|
end
|
11
11
|
|
12
12
|
def notify_with_name
|
13
|
-
mail(:to => "Scott Taylor <scott@learnup.me>")
|
13
|
+
mail(:to => "Scott Taylor <scott@learnup.me>", body: "body")
|
14
14
|
end
|
15
15
|
|
16
16
|
def notify_no_address
|
17
|
-
mail()
|
17
|
+
mail(body: "body")
|
18
18
|
end
|
19
19
|
|
20
20
|
def notify_with_empty_to
|
21
|
-
mail(:to => [])
|
21
|
+
mail(:to => [], body: "body")
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
@@ -118,4 +118,16 @@ describe ActionMailer::CatchAll do
|
|
118
118
|
mailer = Notifier.notify
|
119
119
|
mailer.to.should == []
|
120
120
|
end
|
121
|
-
|
121
|
+
|
122
|
+
it "should work with a whitelist regex" do
|
123
|
+
ActionMailer::CatchAll.enable(fallback: 'fallback@example.com', whitelist: [/\@learnup.me$/])
|
124
|
+
mailer = Notifier.notify
|
125
|
+
mailer.to.should == ["scott@learnup.me"]
|
126
|
+
end
|
127
|
+
|
128
|
+
it "should work with a fallback" do
|
129
|
+
ActionMailer::CatchAll.enable(fallback: 'fallback@example.com')
|
130
|
+
mailer = Notifier.notify
|
131
|
+
mailer.to.should == ["fallback@example.com"]
|
132
|
+
end
|
133
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: catch_all
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.3
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Scott Taylor
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2018-06-12 00:00:00.000000000 Z
|
13
12
|
dependencies: []
|
14
13
|
description: Define a white-list only set of emails for ActionMailer
|
15
14
|
email:
|
@@ -18,8 +17,8 @@ executables: []
|
|
18
17
|
extensions: []
|
19
18
|
extra_rdoc_files: []
|
20
19
|
files:
|
21
|
-
- .gitignore
|
22
|
-
- .rspec
|
20
|
+
- ".gitignore"
|
21
|
+
- ".rspec"
|
23
22
|
- Gemfile
|
24
23
|
- Gemfile.lock
|
25
24
|
- README.md
|
@@ -27,30 +26,31 @@ files:
|
|
27
26
|
- lib/catch_all.rb
|
28
27
|
- lib/catch_all/version.rb
|
29
28
|
- spec/catch_all_spec.rb
|
29
|
+
- spec/spec_helper.rb
|
30
30
|
homepage: ''
|
31
31
|
licenses: []
|
32
|
+
metadata: {}
|
32
33
|
post_install_message:
|
33
34
|
rdoc_options: []
|
34
35
|
require_paths:
|
35
36
|
- lib
|
36
37
|
required_ruby_version: !ruby/object:Gem::Requirement
|
37
|
-
none: false
|
38
38
|
requirements:
|
39
|
-
- -
|
39
|
+
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '0'
|
42
42
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
43
|
-
none: false
|
44
43
|
requirements:
|
45
|
-
- -
|
44
|
+
- - ">="
|
46
45
|
- !ruby/object:Gem::Version
|
47
46
|
version: '0'
|
48
47
|
requirements: []
|
49
48
|
rubyforge_project:
|
50
|
-
rubygems_version:
|
49
|
+
rubygems_version: 2.6.14
|
51
50
|
signing_key:
|
52
|
-
specification_version:
|
51
|
+
specification_version: 4
|
53
52
|
summary: Define a white-list only set of emails for ActionMailer. Used in staging
|
54
53
|
environments.
|
55
54
|
test_files:
|
56
55
|
- spec/catch_all_spec.rb
|
56
|
+
- spec/spec_helper.rb
|