sanitize_email 2.0.5 → 2.0.6
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
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +21 -1
- data/CONTRIBUTING.md +8 -0
- data/README.md +10 -5
- data/lib/sanitize_email/engine_v5.rb +1 -0
- data/lib/sanitize_email/engine_v6.rb +3 -2
- data/lib/sanitize_email/mail_ext.rb +2 -0
- data/lib/sanitize_email/overridden_addresses.rb +7 -2
- data/lib/sanitize_email/railtie.rb +1 -0
- data/lib/sanitize_email/version.rb +1 -1
- data/lib/sanitize_email.rb +84 -75
- data.tar.gz.sig +0 -0
- metadata +14 -34
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ab280a496e5f7c676c9f34a0d9c947e79015cc1001fb64dd9c9d7240d140eeea
|
4
|
+
data.tar.gz: 455e2718f6bc3cf995b444768c2fcb855ff15685077d234c4887c829cb3b36ca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 847a73eb85a827ff002f26e0108f3bd5ad4f9750d3de08e8461363e6effe31058fe92dee7ea7b1d3fa0260ad4f00b0f52d6df285ab0dc9fc029faac34ccca380
|
7
|
+
data.tar.gz: 1e53fb956e7bb1223192164e151509c45c6f2c7e653c5b9d194925164e1141ae969a8364209e3fd5a7db4c5d833146016a9fbdfe2c7b8f38a17be1b4c6d04004
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/CHANGELOG.md
CHANGED
@@ -10,6 +10,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
10
10
|
### Fixed
|
11
11
|
### Removed
|
12
12
|
|
13
|
+
## [2.0.6] - 2024-04-25 ([tag][2.0.6t])
|
14
|
+
### Added
|
15
|
+
* Appraisals & Combustion for comprehensive testing across versions of Rails (@pboling)
|
16
|
+
* Rails 3.0 to Test Matrix (@pboling)
|
17
|
+
* Rails 3.1 to Test Matrix (@pboling)
|
18
|
+
* Rails 3.2 to Test Matrix (@pboling)
|
19
|
+
* Rails 4.0 to Test Matrix (@pboling)
|
20
|
+
* Rails 4.1 to Test Matrix (@pboling)
|
21
|
+
* Rails 4.2 to Test Matrix (@pboling)
|
22
|
+
* Rails 5.0 to Test Matrix (@pboling)
|
23
|
+
* Rails 5.1 to Test Matrix (@pboling)
|
24
|
+
* More Documentation (@pboling)
|
25
|
+
### Fixed
|
26
|
+
* Compatibility with Rails 3.0, 3.1, 3.2 (@pboling)
|
27
|
+
* Compatibility with Rails 6.0, 6.1, 7.0, 7.1 (@pboling)
|
28
|
+
|
13
29
|
## [2.0.5] - 2024-04-18 ([tag][2.0.5t])
|
14
30
|
### Added
|
15
31
|
* New RSpec matcher (@pboling)
|
@@ -275,7 +291,11 @@ Old version?
|
|
275
291
|
* Fixed require paths
|
276
292
|
* added about.yml and this CHANGELOG
|
277
293
|
|
278
|
-
[Unreleased]: https://github.com/pboling/sanitize_email/compare/v2.0.
|
294
|
+
[Unreleased]: https://github.com/pboling/sanitize_email/compare/v2.0.6...HEAD
|
295
|
+
[2.0.6]: https://github.com/pboling/sanitize_email/compare/v2.0.5...v2.0.6
|
296
|
+
[2.0.6t]: https://github.com/pboling/sanitize_email/tags/v2.0.6
|
297
|
+
[2.0.5]: https://github.com/pboling/sanitize_email/compare/v2.0.4...v2.0.5
|
298
|
+
[2.0.5t]: https://github.com/pboling/sanitize_email/tags/v2.0.5
|
279
299
|
[2.0.4]: https://github.com/pboling/sanitize_email/compare/v2.0.3...v2.0.4
|
280
300
|
[2.0.4t]: https://github.com/pboling/sanitize_email/tags/v2.0.4
|
281
301
|
[2.0.3]: https://github.com/pboling/sanitize_email/compare/v2.0.2...v2.0.3
|
data/CONTRIBUTING.md
CHANGED
@@ -7,6 +7,14 @@ the [code of conduct][🤝conduct].
|
|
7
7
|
To submit a patch, please fork the project and create a patch with tests. Once you're happy with it send a pull request
|
8
8
|
and post a message to the [gitter chat][🏘chat].
|
9
9
|
|
10
|
+
## Appraisal & Combustion
|
11
|
+
|
12
|
+
### Generate a new set of Appraisal gemfiles:
|
13
|
+
|
14
|
+
```sh
|
15
|
+
BUNDLE_GEMFILE=gemfiles/vanilla.gemfile appraisal generate
|
16
|
+
```
|
17
|
+
|
10
18
|
## Release
|
11
19
|
|
12
20
|
To release a new version:
|
data/README.md
CHANGED
@@ -63,13 +63,15 @@ then this is the gem for you.
|
|
63
63
|
|
64
64
|
## Compatibility
|
65
65
|
|
66
|
-
⚙️ Compatible with all versions of Ruby >= 2.3.
|
66
|
+
⚙️ Compatible with all versions of Ruby >= 2.3, plus JRuby and Truffleruby.
|
67
67
|
⚙️ Compatible with all Ruby web Frameworks (Hanami, Roda, Sinatra, Rails).
|
68
68
|
⚙️ Compatible with all versions of Rails from 3.0 - 7.1+.
|
69
69
|
⚙️ Compatible with scripted usage of Mail gem outside a web framework.
|
70
70
|
⚙️ Compatible with [`sendgrid-actionmailer`](https://github.com/eddiezane/sendgrid-actionmailer)'s support for personalizations, and will override email addresses there according to the configuration.
|
71
71
|
⚙️ If this gem is not compatible with your use case, and you'd like it to be, I'd like to hear about it!
|
72
72
|
|
73
|
+
It was a slog getting (very nearly) the entire compatibility matrix working with Github Actions, [`appraisal`](https://github.com/thoughtbot/appraisal), and [`combustion`](https://github.com/pat/combustion), and I'm very interested in hearing about ways to improve it!
|
74
|
+
|
73
75
|
## 🛞 DVCS
|
74
76
|
|
75
77
|
This project does not trust any one version control system,
|
@@ -228,7 +230,7 @@ The link tokens in the following sections should be kept ordered by the row and
|
|
228
230
|
It's particularly helpful when you want to prevent the delivery of email (e.g. in development/test environments) or alter the to/cc/bcc (e.g. in staging or demo environments) of all email generated from your application.
|
229
231
|
|
230
232
|
* compatible without Rails! Can work with just the `mail` gem.
|
231
|
-
* compatible with Rails >=
|
233
|
+
* compatible with Rails >= 3.0. See gem versions 1.x for older versions of Rails.
|
232
234
|
* compatible with Ruby >= 2.3. See gem versions 1.x for older versions of Ruby.
|
233
235
|
* compatible with any Ruby app with a mail handler that uses the `register_interceptor` API (a la ActionMailer and `mail` gems)
|
234
236
|
* configure it and forget it
|
@@ -674,15 +676,18 @@ Learn more about, or become one of, our 🎖 contributors on:
|
|
674
676
|
## Running Specs
|
675
677
|
|
676
678
|
The basic compatibility matrix:
|
677
|
-
```
|
679
|
+
```sh
|
678
680
|
appraisal install
|
679
681
|
appraisal rake test
|
680
682
|
```
|
681
683
|
|
682
684
|
Sometimes also:
|
685
|
+
```sh
|
686
|
+
BUNDLE_GEMFILE=gemfiles/vanilla.gemfile appraisal update
|
683
687
|
```
|
684
|
-
|
685
|
-
|
688
|
+
|
689
|
+
Except, is unlikely to be possible to install all of the supported Rubies & Railsies in a single container...
|
690
|
+
See the various github action workflows for more inspiration on running certain oldies.
|
686
691
|
|
687
692
|
### Code Coverage
|
688
693
|
|
@@ -2,14 +2,15 @@
|
|
2
2
|
|
3
3
|
# Copyright (c) 2008 - 2018, 2020, 2022, 2024 Peter H. Boling of RailsBling.com
|
4
4
|
# Released under the MIT license
|
5
|
+
require "rails/engine"
|
5
6
|
|
6
7
|
module SanitizeEmail
|
7
8
|
# For Rails >= 6.0
|
8
|
-
class
|
9
|
+
class EngineV6 < ::Rails::Engine
|
9
10
|
config.to_prepare do
|
10
11
|
# For the reasoning behind the difference between v5 and v6 engines,
|
11
12
|
# - see: https://github.com/rails/rails/issues/36546#issuecomment-850888284
|
12
|
-
config.action_mailer.register_interceptor(SanitizeEmail::Bleach)
|
13
|
+
Rails.application.config.action_mailer.register_interceptor(SanitizeEmail::Bleach)
|
13
14
|
end
|
14
15
|
end
|
15
16
|
end
|
@@ -55,10 +55,15 @@ module SanitizeEmail
|
|
55
55
|
@overridden_cc = tempmail[:cc].decoded
|
56
56
|
@overridden_bcc = tempmail[:bcc].decoded
|
57
57
|
|
58
|
-
|
58
|
+
actual_personalizations = message["personalizations"]
|
59
|
+
if actual_personalizations.nil?
|
59
60
|
raise MissingRecipients, "No recipients left post-sanitization" if (tempmail.to + tempmail.cc + tempmail.bcc).empty?
|
61
|
+
elsif actual_personalizations.respond_to?(:unparsed_value)
|
62
|
+
@overridden_personalizations = personalizations_override(actual_personalizations)
|
60
63
|
else
|
61
|
-
|
64
|
+
# TODO: Remove check when dropping Rails 3.x
|
65
|
+
# undefined method `unparsed_value' for #<Mail::OptionalField>
|
66
|
+
raise MissingRecipients, "Mail version is too old to use personalizations"
|
62
67
|
end
|
63
68
|
end
|
64
69
|
|
data/lib/sanitize_email.rb
CHANGED
@@ -18,6 +18,9 @@ module SanitizeEmail
|
|
18
18
|
# Error is raised when a block parameter is required and not provided to a method
|
19
19
|
class MissingBlockParameter < StandardError; end
|
20
20
|
|
21
|
+
# Load order matters here!
|
22
|
+
# This gem must be loaded **after** Rails in order for the Engine/Railtie to register itself automatically.
|
23
|
+
# Otherwise, you'd have to manually require what you need from below.
|
21
24
|
# Allow non-rails implementations to use this gem
|
22
25
|
if defined?(::Rails) && defined?(::Rails::VERSION)
|
23
26
|
if defined?(::Rails::Engine)
|
@@ -48,95 +51,101 @@ module SanitizeEmail
|
|
48
51
|
end
|
49
52
|
end
|
50
53
|
|
51
|
-
|
52
|
-
|
53
|
-
SanitizeEmail::Config.config[key.to_sym]
|
54
|
-
end
|
54
|
+
class << self
|
55
|
+
extend SanitizeEmail::Deprecation
|
55
56
|
|
56
|
-
|
57
|
-
SanitizeEmail[name]
|
58
|
-
end
|
57
|
+
attr_accessor :force_sanitize
|
59
58
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
end
|
59
|
+
def [](key)
|
60
|
+
return unless key.respond_to?(:to_sym)
|
61
|
+
SanitizeEmail::Config.config[key.to_sym]
|
62
|
+
end
|
65
63
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
64
|
+
def method_missing(name, *_args)
|
65
|
+
if name
|
66
|
+
SanitizeEmail[name]
|
67
|
+
else
|
68
|
+
super
|
69
|
+
end
|
70
|
+
end
|
71
71
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
end
|
72
|
+
def respond_to_missing?(method_name, include_private = false)
|
73
|
+
method_name ? method_name : super
|
74
|
+
end
|
76
75
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
76
|
+
# NOTE: Deprecated method
|
77
|
+
# We have to actually define because we can't deprecate methods that are hooked up via method_missing
|
78
|
+
def sanitized_recipients
|
79
|
+
# NOOP - This method is never actually executed, because the deprecations redirects the call to sanitized_to
|
80
|
+
end
|
81
81
|
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
#
|
87
|
-
# SanitizeEmail.sanitary({:sanitized_to => "boo@example.com"}) do
|
88
|
-
# Mail.deliver do
|
89
|
-
# from "from@example.org"
|
90
|
-
# # Will actually be sent to the override addresses, not this one:
|
91
|
-
# to "to@example.org"
|
92
|
-
# reply_to "reply_to@example.org"
|
93
|
-
# subject "subject"
|
94
|
-
# end
|
95
|
-
# end
|
96
|
-
#
|
97
|
-
def self.sanitary(config_options = {})
|
98
|
-
raise MissingBlockParameter, "SanitizeEmail.sanitary must be called with a block" unless block_given?
|
99
|
-
janitor(forcing: true) do
|
100
|
-
original = SanitizeEmail::Config.config.dup
|
101
|
-
SanitizeEmail::Config.config.merge!(config_options)
|
102
|
-
yield
|
103
|
-
SanitizeEmail::Config.config = original
|
82
|
+
# NOTE: Deprecated method
|
83
|
+
# We have to actually define because we can't deprecate methods that are hooked up via method_missing
|
84
|
+
def local_environments
|
85
|
+
SanitizeEmail::Config.config[:local_environments]
|
104
86
|
end
|
105
|
-
end
|
106
87
|
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
# SanitizeEmail.unsanitary do
|
111
|
-
# Mail.deliver do
|
112
|
-
# from "from@example.org"
|
113
|
-
# to "to@example.org"
|
114
|
-
# reply_to "reply_to@example.org"
|
115
|
-
# subject "subject"
|
116
|
-
# end
|
117
|
-
# end
|
118
|
-
#
|
119
|
-
def self.unsanitary
|
120
|
-
raise MissingBlockParameter, "SanitizeEmail.unsanitary must be called with a block" unless block_given?
|
121
|
-
janitor(forcing: false) do
|
122
|
-
yield
|
88
|
+
def activate?(message)
|
89
|
+
proc = SanitizeEmail::Config.config[:activation_proc]
|
90
|
+
proc.call(message) if proc.respond_to?(:call)
|
123
91
|
end
|
124
|
-
end
|
125
92
|
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
SanitizeEmail.
|
130
|
-
|
131
|
-
SanitizeEmail.
|
132
|
-
|
93
|
+
# Regardless of the Config settings of SanitizeEmail you can do a local
|
94
|
+
# override to send sanitary email in any environment.
|
95
|
+
# You have access to all the same configuration options in the parameter hash
|
96
|
+
# as you can set in the actual SanitizeEmail.configure block.
|
97
|
+
#
|
98
|
+
# SanitizeEmail.sanitary({:sanitized_to => "boo@example.com"}) do
|
99
|
+
# Mail.deliver do
|
100
|
+
# from "from@example.org"
|
101
|
+
# # Will actually be sent to the override addresses, not this one:
|
102
|
+
# to "to@example.org"
|
103
|
+
# reply_to "reply_to@example.org"
|
104
|
+
# subject "subject"
|
105
|
+
# end
|
106
|
+
# end
|
107
|
+
#
|
108
|
+
def sanitary(config_options = {})
|
109
|
+
raise MissingBlockParameter, "SanitizeEmail.sanitary must be called with a block" unless block_given?
|
110
|
+
janitor(forcing: true) do
|
111
|
+
original = SanitizeEmail::Config.config.dup
|
112
|
+
SanitizeEmail::Config.config.merge!(config_options)
|
113
|
+
yield
|
114
|
+
SanitizeEmail::Config.config = original
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
# Regardless of the Config settings of SanitizeEmail you can do a local
|
119
|
+
# override to force unsanitary email in any environment.
|
120
|
+
#
|
121
|
+
# SanitizeEmail.unsanitary do
|
122
|
+
# Mail.deliver do
|
123
|
+
# from "from@example.org"
|
124
|
+
# to "to@example.org"
|
125
|
+
# reply_to "reply_to@example.org"
|
126
|
+
# subject "subject"
|
127
|
+
# end
|
128
|
+
# end
|
129
|
+
#
|
130
|
+
def unsanitary
|
131
|
+
raise MissingBlockParameter, "SanitizeEmail.unsanitary must be called with a block" unless block_given?
|
132
|
+
janitor(forcing: false) do
|
133
|
+
yield
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
def janitor(options)
|
138
|
+
raise MissingBlockParameter, "SanitizeEmail.janitor must be called with a block" unless block_given?
|
139
|
+
original = SanitizeEmail.force_sanitize
|
140
|
+
SanitizeEmail.force_sanitize = options[:forcing]
|
141
|
+
yield
|
142
|
+
SanitizeEmail.force_sanitize = original
|
143
|
+
end
|
133
144
|
|
134
|
-
# Setup Deprecations!
|
135
|
-
class << self
|
136
|
-
extend SanitizeEmail::Deprecation
|
137
145
|
deprecated_alias :sanitized_recipients, :sanitized_to
|
138
146
|
deprecated :local_environments, :activation_proc
|
139
147
|
end
|
148
|
+
@force_sanitize = nil
|
140
149
|
end
|
141
150
|
|
142
151
|
SanitizeEmail::Version.class_eval do
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sanitize_email
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Boling
|
@@ -38,7 +38,7 @@ cert_chain:
|
|
38
38
|
KuxrfYrN+9HvMdm+nZ6TypmKftHY3Gj+/uu+g8Icm/zrvTWAEE0mcJOkfrIoNPJb
|
39
39
|
pF8dMA==
|
40
40
|
-----END CERTIFICATE-----
|
41
|
-
date: 2024-04-
|
41
|
+
date: 2024-04-25 00:00:00.000000000 Z
|
42
42
|
dependencies:
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: mail
|
@@ -74,82 +74,62 @@ dependencies:
|
|
74
74
|
- - ">="
|
75
75
|
- !ruby/object:Gem::Version
|
76
76
|
version: 1.1.4
|
77
|
-
- !ruby/object:Gem::Dependency
|
78
|
-
name: actionmailer
|
79
|
-
requirement: !ruby/object:Gem::Requirement
|
80
|
-
requirements:
|
81
|
-
- - ">="
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
version: '3'
|
84
|
-
type: :development
|
85
|
-
prerelease: false
|
86
|
-
version_requirements: !ruby/object:Gem::Requirement
|
87
|
-
requirements:
|
88
|
-
- - ">="
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
version: '3'
|
91
77
|
- !ruby/object:Gem::Dependency
|
92
78
|
name: appraisal
|
93
79
|
requirement: !ruby/object:Gem::Requirement
|
94
80
|
requirements:
|
95
81
|
- - "~>"
|
96
82
|
- !ruby/object:Gem::Version
|
97
|
-
version: '2'
|
83
|
+
version: '2.5'
|
98
84
|
type: :development
|
99
85
|
prerelease: false
|
100
86
|
version_requirements: !ruby/object:Gem::Requirement
|
101
87
|
requirements:
|
102
88
|
- - "~>"
|
103
89
|
- !ruby/object:Gem::Version
|
104
|
-
version: '2'
|
90
|
+
version: '2.5'
|
105
91
|
- !ruby/object:Gem::Dependency
|
106
|
-
name:
|
92
|
+
name: json
|
107
93
|
requirement: !ruby/object:Gem::Requirement
|
108
94
|
requirements:
|
109
95
|
- - ">="
|
110
96
|
- !ruby/object:Gem::Version
|
111
|
-
version:
|
112
|
-
- - "<="
|
113
|
-
- !ruby/object:Gem::Version
|
114
|
-
version: '8'
|
97
|
+
version: 1.7.7
|
115
98
|
type: :development
|
116
99
|
prerelease: false
|
117
100
|
version_requirements: !ruby/object:Gem::Requirement
|
118
101
|
requirements:
|
119
102
|
- - ">="
|
120
103
|
- !ruby/object:Gem::Version
|
121
|
-
version:
|
122
|
-
- - "<="
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '8'
|
104
|
+
version: 1.7.7
|
125
105
|
- !ruby/object:Gem::Dependency
|
126
106
|
name: rake
|
127
107
|
requirement: !ruby/object:Gem::Requirement
|
128
108
|
requirements:
|
129
109
|
- - ">="
|
130
110
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
111
|
+
version: 0.8.7
|
132
112
|
type: :development
|
133
113
|
prerelease: false
|
134
114
|
version_requirements: !ruby/object:Gem::Requirement
|
135
115
|
requirements:
|
136
116
|
- - ">="
|
137
117
|
- !ruby/object:Gem::Version
|
138
|
-
version:
|
118
|
+
version: 0.8.7
|
139
119
|
- !ruby/object:Gem::Dependency
|
140
120
|
name: rdoc
|
141
121
|
requirement: !ruby/object:Gem::Requirement
|
142
122
|
requirements:
|
143
123
|
- - ">="
|
144
124
|
- !ruby/object:Gem::Version
|
145
|
-
version: '3
|
125
|
+
version: '3'
|
146
126
|
type: :development
|
147
127
|
prerelease: false
|
148
128
|
version_requirements: !ruby/object:Gem::Requirement
|
149
129
|
requirements:
|
150
130
|
- - ">="
|
151
131
|
- !ruby/object:Gem::Version
|
152
|
-
version: '3
|
132
|
+
version: '3'
|
153
133
|
- !ruby/object:Gem::Dependency
|
154
134
|
name: rspec
|
155
135
|
requirement: !ruby/object:Gem::Requirement
|
@@ -237,10 +217,10 @@ licenses:
|
|
237
217
|
- MIT
|
238
218
|
metadata:
|
239
219
|
homepage_uri: https://github.com/pboling/sanitize_email
|
240
|
-
source_code_uri: https://github.com/pboling/sanitize_email/tree/v2.0.
|
241
|
-
changelog_uri: https://github.com/pboling/sanitize_email/blob/v2.0.
|
220
|
+
source_code_uri: https://github.com/pboling/sanitize_email/tree/v2.0.6
|
221
|
+
changelog_uri: https://github.com/pboling/sanitize_email/blob/v2.0.6/CHANGELOG.md
|
242
222
|
bug_tracker_uri: https://github.com/pboling/sanitize_email/issues
|
243
|
-
documentation_uri: https://www.rubydoc.info/gems/sanitize_email/2.0.
|
223
|
+
documentation_uri: https://www.rubydoc.info/gems/sanitize_email/2.0.6
|
244
224
|
wiki_uri: https://github.com/pboling/sanitize_email/wiki
|
245
225
|
funding_uri: https://liberapay.com/pboling
|
246
226
|
rubygems_mfa_required: 'true'
|
metadata.gz.sig
CHANGED
Binary file
|