snfoil 1.0.0 → 1.1.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 +4 -4
- data/Gemfile +12 -0
- data/lib/snfoil/crud/build_context.rb +14 -4
- data/lib/snfoil/crud/change_context.rb +1 -1
- data/lib/snfoil/crud/create_context.rb +10 -9
- data/lib/snfoil/crud/destroy_context.rb +11 -11
- data/lib/snfoil/crud/index_context.rb +3 -3
- data/lib/snfoil/crud/setup_context.rb +9 -6
- data/lib/snfoil/crud/show_context.rb +4 -4
- data/lib/snfoil/crud/update_context.rb +11 -18
- data/lib/snfoil/version.rb +1 -1
- data/lib/snfoil.rb +1 -0
- data/snfoil.gemspec +4 -14
- metadata +35 -143
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3500d78488d532373cb7c2c92d96b088f03d63a911068bdb701ae0edf747ad4a
|
4
|
+
data.tar.gz: 7cbb265e59f7281f5d0e5f63474a66f2269bccfd9cffa6bc611c9ed0d494957b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 94cf8d81536f89f3dc633cf6fae71d4e73105fdee3f975d148d7c44e576da47293bc1293078bf8b92d4c684988a1ba07db0289ad5e3910dba1338ae57786cba2
|
7
|
+
data.tar.gz: 901c5055ef1c7e191e6232c11cb0371d049d688378ab3bbc3683808b1c46d7ceed3da919b9c01d736ed3890183c98983e085679aba5dd959717413cb681d65f4
|
data/Gemfile
CHANGED
@@ -4,3 +4,15 @@ source 'https://rubygems.org'
|
|
4
4
|
|
5
5
|
# Specify your gem's dependencies in snfoil.gemspec
|
6
6
|
gemspec
|
7
|
+
|
8
|
+
group :development, :test do
|
9
|
+
gem 'bundle-audit', '~> 0.1.0'
|
10
|
+
gem 'dry-struct', '~> 1.0'
|
11
|
+
gem 'fasterer', '~> 0.10.0'
|
12
|
+
gem 'pry-byebug', '~> 3.9', platform: :mri
|
13
|
+
gem 'rake', '~> 13.0'
|
14
|
+
gem 'rspec', '~> 3.9'
|
15
|
+
gem 'rubocop', '1.33'
|
16
|
+
gem 'rubocop-performance', '1.14.3'
|
17
|
+
gem 'rubocop-rspec', '2.12.1'
|
18
|
+
end
|
@@ -27,12 +27,22 @@ module SnFoil
|
|
27
27
|
include SetupContext
|
28
28
|
|
29
29
|
interval :setup_build
|
30
|
+
interval :before_build
|
30
31
|
|
31
32
|
setup_build do |**options|
|
32
|
-
|
33
|
-
options[:object] ||= options.fetch(:model) { model }.new
|
33
|
+
next options if options[:object]
|
34
34
|
|
35
|
-
|
35
|
+
options[:object] ||= if options[:id]
|
36
|
+
options.fetch(:scope) { scope.resolve }.find(options[:id])
|
37
|
+
else
|
38
|
+
options.fetch(:model) { model }.new
|
39
|
+
end
|
40
|
+
|
41
|
+
options
|
42
|
+
end
|
43
|
+
|
44
|
+
before_build do |**options|
|
45
|
+
wrap_object(options[:object]).attributes = options.fetch(:params) { {} }
|
36
46
|
|
37
47
|
options
|
38
48
|
end
|
@@ -41,7 +51,7 @@ module SnFoil
|
|
41
51
|
options[:action] = :build
|
42
52
|
options = run_interval(:setup, **options)
|
43
53
|
options = run_interval(:setup_build, **options)
|
44
|
-
options
|
54
|
+
run_interval(:before_build, **options)
|
45
55
|
end
|
46
56
|
end
|
47
57
|
end
|
@@ -27,7 +27,7 @@ module SnFoil
|
|
27
27
|
|
28
28
|
intervals :setup_change, :before_change, :after_change, :after_change_success, :after_change_failure
|
29
29
|
|
30
|
-
setup_change do
|
30
|
+
setup_change do |**options|
|
31
31
|
options[:pre_change_context_params] ||= options[:params]
|
32
32
|
options[:params] = options[:params].select { |params| self.class.i_params.include?(params) } if self.class.i_params
|
33
33
|
|
@@ -28,15 +28,16 @@ module SnFoil
|
|
28
28
|
|
29
29
|
action :create, with: :create_action
|
30
30
|
|
31
|
-
setup_create {
|
32
|
-
setup_create {
|
33
|
-
setup_create {
|
34
|
-
before_create {
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
31
|
+
setup_create { |**options| run_interval(:setup, **options) }
|
32
|
+
setup_create { |**options| run_interval(:setup_build, **options) }
|
33
|
+
setup_create { |**options| run_interval(:setup_change, **options) }
|
34
|
+
before_create { |**options| run_interval(:before_build, **options) }
|
35
|
+
before_create { |**options| run_interval(:before_change, **options) }
|
36
|
+
after_create_success { |**options| run_interval(:after_change_success, **options) }
|
37
|
+
after_create_failure { |**options| run_interval(:after_change_failure, **options) }
|
38
|
+
after_create { |**options| run_interval(:after_change, **options) }
|
39
|
+
|
40
|
+
def create_action(**options)
|
40
41
|
wrap_object(options[:object]).save
|
41
42
|
end
|
42
43
|
end
|
@@ -29,26 +29,26 @@ module SnFoil
|
|
29
29
|
|
30
30
|
action :destroy, with: :destroy_action
|
31
31
|
|
32
|
-
setup_destroy {
|
33
|
-
setup_destroy {
|
34
|
-
before_destroy {
|
35
|
-
after_destroy_success {
|
36
|
-
after_destroy_failure {
|
37
|
-
after_destroy {
|
38
|
-
|
39
|
-
setup_destroy do
|
32
|
+
setup_destroy { |**options| run_interval(:setup, **options) }
|
33
|
+
setup_destroy { |**options| run_interval(:setup_change, **options) }
|
34
|
+
before_destroy { |**options| run_interval(:before_change, **options) }
|
35
|
+
after_destroy_success { |**options| run_interval(:after_change_success, **options) }
|
36
|
+
after_destroy_failure { |**options| run_interval(:after_change_failure, **options) }
|
37
|
+
after_destroy { |**options| run_interval(:after_change, **options) }
|
38
|
+
|
39
|
+
setup_destroy do |**options|
|
40
40
|
raise ArgumentError, 'one of the following keywords is required: id, object' unless options[:id] || options[:object]
|
41
41
|
|
42
42
|
options
|
43
43
|
end
|
44
44
|
|
45
|
-
|
46
|
-
options[:object] ||= scope.resolve.find(options[:id])
|
45
|
+
before_change do |**options|
|
46
|
+
options[:object] ||= options.fetch(:scope) { scope.resolve }.find(options[:id])
|
47
47
|
|
48
48
|
options
|
49
49
|
end
|
50
50
|
|
51
|
-
def destroy_action(options)
|
51
|
+
def destroy_action(**options)
|
52
52
|
wrap_object(options[:object]).destroy
|
53
53
|
end
|
54
54
|
end
|
@@ -27,11 +27,11 @@ module SnFoil
|
|
27
27
|
|
28
28
|
action :index, with: :index_action
|
29
29
|
|
30
|
-
setup_index {
|
30
|
+
setup_index { |**options| run_interval(:setup, **options) }
|
31
31
|
|
32
|
-
before_index do
|
32
|
+
before_index do |**options|
|
33
33
|
options[:object] ||= options.fetch(:searcher) { self.class.snfoil_searcher }
|
34
|
-
.new(scope: scope.resolve)
|
34
|
+
.new(scope: options.fetch(:scope) { scope.resolve })
|
35
35
|
.search(options.fetch(:params) { {} })
|
36
36
|
|
37
37
|
options
|
@@ -29,10 +29,13 @@ module SnFoil
|
|
29
29
|
|
30
30
|
interval :setup
|
31
31
|
|
32
|
-
authorize do
|
33
|
-
options.fetch(:policy) { policy }
|
34
|
-
|
35
|
-
|
32
|
+
authorize do |**options|
|
33
|
+
authentication_policy = options.fetch(:policy) { policy }
|
34
|
+
authentication_action = options.fetch(:authorize) { "#{options[:action]}?" }
|
35
|
+
next true if authentication_policy.new(entity, options[:object], **options).send(authentication_action)
|
36
|
+
|
37
|
+
raise SnFoil::AuthorizationError,
|
38
|
+
"#{entity ? entity&.class : 'Unknown'}: #{entity&.id} is not allowed to #{authentication_action} on #{authentication_policy}"
|
36
39
|
end
|
37
40
|
end
|
38
41
|
|
@@ -60,8 +63,8 @@ module SnFoil
|
|
60
63
|
self.class.snfoil_policy
|
61
64
|
end
|
62
65
|
|
63
|
-
def scope
|
64
|
-
"#{policy.name}::Scope".safe_constantize.new(wrap_object(model)
|
66
|
+
def scope
|
67
|
+
"#{policy.name}::Scope".safe_constantize.new(entity, wrap_object(model))
|
65
68
|
end
|
66
69
|
|
67
70
|
def wrap_object(object)
|
@@ -27,23 +27,23 @@ module SnFoil
|
|
27
27
|
|
28
28
|
action :show, with: :show_action
|
29
29
|
|
30
|
-
setup_show do
|
30
|
+
setup_show do |**options|
|
31
31
|
raise ArgumentError, 'one of the following keywords is required: id, object' unless options[:id] || options[:object]
|
32
32
|
|
33
33
|
options
|
34
34
|
end
|
35
35
|
|
36
|
-
setup_show do
|
36
|
+
setup_show do |**options|
|
37
37
|
run_interval(:setup, **options)
|
38
38
|
end
|
39
39
|
|
40
40
|
before_show do |**options|
|
41
|
-
options[:object] ||= scope.resolve.find(options[:id])
|
41
|
+
options[:object] ||= options.fetch(:scope) { scope.resolve }.find(options[:id])
|
42
42
|
|
43
43
|
options
|
44
44
|
end
|
45
45
|
|
46
|
-
def show_action(options)
|
46
|
+
def show_action(**options)
|
47
47
|
options[:object]
|
48
48
|
end
|
49
49
|
end
|
@@ -24,34 +24,27 @@ module SnFoil
|
|
24
24
|
extend ActiveSupport::Concern
|
25
25
|
|
26
26
|
included do
|
27
|
-
include
|
27
|
+
include BuildContext
|
28
28
|
include ChangeContext
|
29
29
|
|
30
30
|
action :update, with: :update_action
|
31
31
|
|
32
|
-
setup_update
|
33
|
-
setup_update { |options| run_interval(:setup_change, **options) }
|
34
|
-
before_update { |options| run_interval(:before_change, **options) }
|
35
|
-
after_update_success { |options| run_interval(:after_change_success, **options) }
|
36
|
-
after_update_failure { |options| run_interval(:after_change_failure, **options) }
|
37
|
-
after_update { |options| run_interval(:after_change, **options) }
|
38
|
-
|
39
|
-
setup_update do |options|
|
32
|
+
setup_update do |**options|
|
40
33
|
raise ArgumentError, 'one of the following keywords is required: id, object' unless options[:id] || options[:object]
|
41
34
|
|
42
35
|
options
|
43
36
|
end
|
44
37
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
38
|
+
setup_update { |**options| run_interval(:setup, **options) }
|
39
|
+
setup_update { |**options| run_interval(:setup_build, **options) }
|
40
|
+
setup_update { |**options| run_interval(:setup_change, **options) }
|
41
|
+
before_update { |**options| run_interval(:before_build, **options) }
|
42
|
+
before_update { |**options| run_interval(:before_change, **options) }
|
43
|
+
after_update_success { |**options| run_interval(:after_change_success, **options) }
|
44
|
+
after_update_failure { |**options| run_interval(:after_change_failure, **options) }
|
45
|
+
after_update { |**options| run_interval(:after_change, **options) }
|
53
46
|
|
54
|
-
def update_action(options)
|
47
|
+
def update_action(**options)
|
55
48
|
wrap_object(options[:object]).save
|
56
49
|
end
|
57
50
|
end
|
data/lib/snfoil/version.rb
CHANGED
data/lib/snfoil.rb
CHANGED
data/snfoil.gemspec
CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
|
|
12
12
|
spec.description = 'A collection of SnFoil gems and additional helper classes'
|
13
13
|
spec.homepage = 'https://github.com/limited-effort/snfoil'
|
14
14
|
spec.license = 'Apache-2.0'
|
15
|
-
spec.required_ruby_version = '>= 2.
|
15
|
+
spec.required_ruby_version = '>= 2.6'
|
16
16
|
|
17
17
|
spec.metadata['homepage_uri'] = spec.homepage
|
18
18
|
spec.metadata['source_code_uri'] = spec.homepage
|
@@ -31,17 +31,7 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.add_dependency 'activesupport', '>= 5.2.6'
|
32
32
|
spec.add_dependency 'logger', '~> 1.0'
|
33
33
|
spec.add_dependency 'pundit', '~> 2.0'
|
34
|
-
spec.add_dependency 'snfoil-context', '
|
35
|
-
spec.add_dependency 'snfoil-policy', '
|
36
|
-
spec.add_dependency 'snfoil-searcher', '
|
37
|
-
|
38
|
-
spec.add_development_dependency 'bundle-audit', '~> 0.1.0'
|
39
|
-
spec.add_development_dependency 'dry-struct', '~> 1.0'
|
40
|
-
spec.add_development_dependency 'fasterer', '~> 0.10.0'
|
41
|
-
spec.add_development_dependency 'pry-byebug', '~> 3.9'
|
42
|
-
spec.add_development_dependency 'rake', '~> 13.0'
|
43
|
-
spec.add_development_dependency 'rspec', '~> 3.9'
|
44
|
-
spec.add_development_dependency 'rubocop', '~> 1.29'
|
45
|
-
spec.add_development_dependency 'rubocop-performance', '~> 1.11'
|
46
|
-
spec.add_development_dependency 'rubocop-rspec', '~> 2.4'
|
34
|
+
spec.add_dependency 'snfoil-context', '>= 1.1.0', '< 2.0'
|
35
|
+
spec.add_dependency 'snfoil-policy', '>= 1.1.0', '< 2.0'
|
36
|
+
spec.add_dependency 'snfoil-searcher', '>= 1.1.0', '< 2.0'
|
47
37
|
end
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: snfoil
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew Howes
|
8
8
|
- Danny Murphy
|
9
9
|
- Cliff Campbell
|
10
|
-
autorequire:
|
10
|
+
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date: 2022-05
|
13
|
+
date: 2022-10-05 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -58,170 +58,62 @@ dependencies:
|
|
58
58
|
name: snfoil-context
|
59
59
|
requirement: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
|
-
- - "
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
version: '1.0'
|
64
|
-
type: :runtime
|
65
|
-
prerelease: false
|
66
|
-
version_requirements: !ruby/object:Gem::Requirement
|
67
|
-
requirements:
|
68
|
-
- - "~>"
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
version: '1.0'
|
71
|
-
- !ruby/object:Gem::Dependency
|
72
|
-
name: snfoil-policy
|
73
|
-
requirement: !ruby/object:Gem::Requirement
|
74
|
-
requirements:
|
75
|
-
- - "~>"
|
61
|
+
- - ">="
|
76
62
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
78
|
-
|
79
|
-
prerelease: false
|
80
|
-
version_requirements: !ruby/object:Gem::Requirement
|
81
|
-
requirements:
|
82
|
-
- - "~>"
|
63
|
+
version: 1.1.0
|
64
|
+
- - "<"
|
83
65
|
- !ruby/object:Gem::Version
|
84
|
-
version: '
|
85
|
-
- !ruby/object:Gem::Dependency
|
86
|
-
name: snfoil-searcher
|
87
|
-
requirement: !ruby/object:Gem::Requirement
|
88
|
-
requirements:
|
89
|
-
- - "~>"
|
90
|
-
- !ruby/object:Gem::Version
|
91
|
-
version: '1.0'
|
66
|
+
version: '2.0'
|
92
67
|
type: :runtime
|
93
68
|
prerelease: false
|
94
69
|
version_requirements: !ruby/object:Gem::Requirement
|
95
70
|
requirements:
|
96
|
-
- - "
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
version: '1.0'
|
99
|
-
- !ruby/object:Gem::Dependency
|
100
|
-
name: bundle-audit
|
101
|
-
requirement: !ruby/object:Gem::Requirement
|
102
|
-
requirements:
|
103
|
-
- - "~>"
|
104
|
-
- !ruby/object:Gem::Version
|
105
|
-
version: 0.1.0
|
106
|
-
type: :development
|
107
|
-
prerelease: false
|
108
|
-
version_requirements: !ruby/object:Gem::Requirement
|
109
|
-
requirements:
|
110
|
-
- - "~>"
|
111
|
-
- !ruby/object:Gem::Version
|
112
|
-
version: 0.1.0
|
113
|
-
- !ruby/object:Gem::Dependency
|
114
|
-
name: dry-struct
|
115
|
-
requirement: !ruby/object:Gem::Requirement
|
116
|
-
requirements:
|
117
|
-
- - "~>"
|
118
|
-
- !ruby/object:Gem::Version
|
119
|
-
version: '1.0'
|
120
|
-
type: :development
|
121
|
-
prerelease: false
|
122
|
-
version_requirements: !ruby/object:Gem::Requirement
|
123
|
-
requirements:
|
124
|
-
- - "~>"
|
125
|
-
- !ruby/object:Gem::Version
|
126
|
-
version: '1.0'
|
127
|
-
- !ruby/object:Gem::Dependency
|
128
|
-
name: fasterer
|
129
|
-
requirement: !ruby/object:Gem::Requirement
|
130
|
-
requirements:
|
131
|
-
- - "~>"
|
71
|
+
- - ">="
|
132
72
|
- !ruby/object:Gem::Version
|
133
|
-
version:
|
134
|
-
|
135
|
-
prerelease: false
|
136
|
-
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
requirements:
|
138
|
-
- - "~>"
|
73
|
+
version: 1.1.0
|
74
|
+
- - "<"
|
139
75
|
- !ruby/object:Gem::Version
|
140
|
-
version:
|
76
|
+
version: '2.0'
|
141
77
|
- !ruby/object:Gem::Dependency
|
142
|
-
name:
|
78
|
+
name: snfoil-policy
|
143
79
|
requirement: !ruby/object:Gem::Requirement
|
144
80
|
requirements:
|
145
|
-
- - "
|
146
|
-
- !ruby/object:Gem::Version
|
147
|
-
version: '3.9'
|
148
|
-
type: :development
|
149
|
-
prerelease: false
|
150
|
-
version_requirements: !ruby/object:Gem::Requirement
|
151
|
-
requirements:
|
152
|
-
- - "~>"
|
81
|
+
- - ">="
|
153
82
|
- !ruby/object:Gem::Version
|
154
|
-
version:
|
155
|
-
-
|
156
|
-
name: rake
|
157
|
-
requirement: !ruby/object:Gem::Requirement
|
158
|
-
requirements:
|
159
|
-
- - "~>"
|
83
|
+
version: 1.1.0
|
84
|
+
- - "<"
|
160
85
|
- !ruby/object:Gem::Version
|
161
|
-
version: '
|
162
|
-
type: :
|
86
|
+
version: '2.0'
|
87
|
+
type: :runtime
|
163
88
|
prerelease: false
|
164
89
|
version_requirements: !ruby/object:Gem::Requirement
|
165
90
|
requirements:
|
166
|
-
- - "
|
91
|
+
- - ">="
|
167
92
|
- !ruby/object:Gem::Version
|
168
|
-
version:
|
169
|
-
-
|
170
|
-
name: rspec
|
171
|
-
requirement: !ruby/object:Gem::Requirement
|
172
|
-
requirements:
|
173
|
-
- - "~>"
|
93
|
+
version: 1.1.0
|
94
|
+
- - "<"
|
174
95
|
- !ruby/object:Gem::Version
|
175
|
-
version: '
|
176
|
-
type: :development
|
177
|
-
prerelease: false
|
178
|
-
version_requirements: !ruby/object:Gem::Requirement
|
179
|
-
requirements:
|
180
|
-
- - "~>"
|
181
|
-
- !ruby/object:Gem::Version
|
182
|
-
version: '3.9'
|
96
|
+
version: '2.0'
|
183
97
|
- !ruby/object:Gem::Dependency
|
184
|
-
name:
|
98
|
+
name: snfoil-searcher
|
185
99
|
requirement: !ruby/object:Gem::Requirement
|
186
100
|
requirements:
|
187
|
-
- - "
|
188
|
-
- !ruby/object:Gem::Version
|
189
|
-
version: '1.29'
|
190
|
-
type: :development
|
191
|
-
prerelease: false
|
192
|
-
version_requirements: !ruby/object:Gem::Requirement
|
193
|
-
requirements:
|
194
|
-
- - "~>"
|
101
|
+
- - ">="
|
195
102
|
- !ruby/object:Gem::Version
|
196
|
-
version:
|
197
|
-
-
|
198
|
-
name: rubocop-performance
|
199
|
-
requirement: !ruby/object:Gem::Requirement
|
200
|
-
requirements:
|
201
|
-
- - "~>"
|
103
|
+
version: 1.1.0
|
104
|
+
- - "<"
|
202
105
|
- !ruby/object:Gem::Version
|
203
|
-
version: '
|
204
|
-
type: :
|
106
|
+
version: '2.0'
|
107
|
+
type: :runtime
|
205
108
|
prerelease: false
|
206
109
|
version_requirements: !ruby/object:Gem::Requirement
|
207
110
|
requirements:
|
208
|
-
- - "
|
209
|
-
- !ruby/object:Gem::Version
|
210
|
-
version: '1.11'
|
211
|
-
- !ruby/object:Gem::Dependency
|
212
|
-
name: rubocop-rspec
|
213
|
-
requirement: !ruby/object:Gem::Requirement
|
214
|
-
requirements:
|
215
|
-
- - "~>"
|
111
|
+
- - ">="
|
216
112
|
- !ruby/object:Gem::Version
|
217
|
-
version:
|
218
|
-
|
219
|
-
prerelease: false
|
220
|
-
version_requirements: !ruby/object:Gem::Requirement
|
221
|
-
requirements:
|
222
|
-
- - "~>"
|
113
|
+
version: 1.1.0
|
114
|
+
- - "<"
|
223
115
|
- !ruby/object:Gem::Version
|
224
|
-
version: '2.
|
116
|
+
version: '2.0'
|
225
117
|
description: A collection of SnFoil gems and additional helper classes
|
226
118
|
email:
|
227
119
|
- howeszy@gmail.com
|
@@ -265,7 +157,7 @@ metadata:
|
|
265
157
|
source_code_uri: https://github.com/limited-effort/snfoil
|
266
158
|
changelog_uri: https://github.com/limited-effort/snfoil/blob/main/CHANGELOG.md
|
267
159
|
rubygems_mfa_required: 'true'
|
268
|
-
post_install_message:
|
160
|
+
post_install_message:
|
269
161
|
rdoc_options: []
|
270
162
|
require_paths:
|
271
163
|
- lib
|
@@ -273,15 +165,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
273
165
|
requirements:
|
274
166
|
- - ">="
|
275
167
|
- !ruby/object:Gem::Version
|
276
|
-
version: '2.
|
168
|
+
version: '2.6'
|
277
169
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
278
170
|
requirements:
|
279
171
|
- - ">="
|
280
172
|
- !ruby/object:Gem::Version
|
281
173
|
version: '0'
|
282
174
|
requirements: []
|
283
|
-
rubygems_version: 3.
|
284
|
-
signing_key:
|
175
|
+
rubygems_version: 3.3.7
|
176
|
+
signing_key:
|
285
177
|
specification_version: 4
|
286
178
|
summary: A Toolbox of Context Behaviors
|
287
179
|
test_files: []
|