activeadmin_settings_cached 2.2.0 → 3.0.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 +5 -5
- data/.github/stale.yml +17 -0
- data/.github/workflows/ci.yml +27 -0
- data/Appraisals +4 -12
- data/CHANGELOG.md +24 -0
- data/Dockerfile +3 -16
- data/Gemfile +5 -1
- data/Makefile +14 -3
- data/README.md +61 -15
- data/activeadmin_settings_cached.gemspec +3 -7
- data/app/views/admin/settings/_index.html.erb +20 -13
- data/config/locales/de.yml +1 -0
- data/config/locales/en.yml +1 -0
- data/config/locales/ru.yml +1 -0
- data/docker-compose.yml +9 -5
- data/gemfiles/{rails4.2.gemfile → rails7.2.gemfile} +4 -2
- data/gemfiles/rails8.0.gemfile +14 -0
- data/lib/activeadmin_settings_cached/dsl.rb +17 -9
- data/lib/activeadmin_settings_cached/engine.rb +0 -3
- data/lib/activeadmin_settings_cached/model.rb +64 -67
- data/lib/activeadmin_settings_cached/options.rb +1 -2
- data/lib/activeadmin_settings_cached/version.rb +1 -1
- data/lib/activeadmin_settings_cached.rb +3 -0
- data/spec/model_spec.rb +75 -120
- data/spec/settings_spec.rb +112 -195
- data/spec/spec_helper.rb +3 -26
- data/spec/support/admin.rb +3 -10
- data/spec/support/rails_template.rb +36 -22
- data/tasks/test.rake +4 -6
- metadata +23 -80
- data/.travis.yml +0 -17
- data/gemfiles/rails5.0.gemfile +0 -14
- data/gemfiles/rails5.1.gemfile +0 -14
- data/lib/activeadmin_settings_cached/coercions.rb +0 -57
- data/spec/coercions_spec.rb +0 -80
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: activeadmin_settings_cached
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 3.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Semyon Pupkov
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 2026-10-31 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: activeadmin
|
|
@@ -16,48 +15,40 @@ dependencies:
|
|
|
16
15
|
requirements:
|
|
17
16
|
- - ">="
|
|
18
17
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '0'
|
|
20
|
-
|
|
21
|
-
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - ">="
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: '0'
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: dry-types
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - ">="
|
|
18
|
+
version: '1.0'
|
|
19
|
+
- - "<"
|
|
32
20
|
- !ruby/object:Gem::Version
|
|
33
|
-
version:
|
|
21
|
+
version: '4'
|
|
34
22
|
type: :runtime
|
|
35
23
|
prerelease: false
|
|
36
24
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
25
|
requirements:
|
|
38
26
|
- - ">="
|
|
39
27
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: 0
|
|
28
|
+
version: '1.0'
|
|
29
|
+
- - "<"
|
|
30
|
+
- !ruby/object:Gem::Version
|
|
31
|
+
version: '4'
|
|
41
32
|
- !ruby/object:Gem::Dependency
|
|
42
33
|
name: rails-settings-cached
|
|
43
34
|
requirement: !ruby/object:Gem::Requirement
|
|
44
35
|
requirements:
|
|
45
|
-
- - "
|
|
36
|
+
- - "~>"
|
|
46
37
|
- !ruby/object:Gem::Version
|
|
47
|
-
version:
|
|
48
|
-
- - "
|
|
38
|
+
version: '2.8'
|
|
39
|
+
- - ">="
|
|
49
40
|
- !ruby/object:Gem::Version
|
|
50
|
-
version:
|
|
41
|
+
version: 2.8.2
|
|
51
42
|
type: :runtime
|
|
52
43
|
prerelease: false
|
|
53
44
|
version_requirements: !ruby/object:Gem::Requirement
|
|
54
45
|
requirements:
|
|
55
|
-
- - "
|
|
46
|
+
- - "~>"
|
|
56
47
|
- !ruby/object:Gem::Version
|
|
57
|
-
version:
|
|
58
|
-
- - "
|
|
48
|
+
version: '2.8'
|
|
49
|
+
- - ">="
|
|
59
50
|
- !ruby/object:Gem::Version
|
|
60
|
-
version:
|
|
51
|
+
version: 2.8.2
|
|
61
52
|
- !ruby/object:Gem::Dependency
|
|
62
53
|
name: appraisal
|
|
63
54
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -101,35 +92,7 @@ dependencies:
|
|
|
101
92
|
- !ruby/object:Gem::Version
|
|
102
93
|
version: '0'
|
|
103
94
|
- !ruby/object:Gem::Dependency
|
|
104
|
-
name:
|
|
105
|
-
requirement: !ruby/object:Gem::Requirement
|
|
106
|
-
requirements:
|
|
107
|
-
- - ">="
|
|
108
|
-
- !ruby/object:Gem::Version
|
|
109
|
-
version: '0'
|
|
110
|
-
type: :development
|
|
111
|
-
prerelease: false
|
|
112
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
113
|
-
requirements:
|
|
114
|
-
- - ">="
|
|
115
|
-
- !ruby/object:Gem::Version
|
|
116
|
-
version: '0'
|
|
117
|
-
- !ruby/object:Gem::Dependency
|
|
118
|
-
name: database_cleaner
|
|
119
|
-
requirement: !ruby/object:Gem::Requirement
|
|
120
|
-
requirements:
|
|
121
|
-
- - ">="
|
|
122
|
-
- !ruby/object:Gem::Version
|
|
123
|
-
version: '0'
|
|
124
|
-
type: :development
|
|
125
|
-
prerelease: false
|
|
126
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
127
|
-
requirements:
|
|
128
|
-
- - ">="
|
|
129
|
-
- !ruby/object:Gem::Version
|
|
130
|
-
version: '0'
|
|
131
|
-
- !ruby/object:Gem::Dependency
|
|
132
|
-
name: poltergeist
|
|
95
|
+
name: database_cleaner-active_record
|
|
133
96
|
requirement: !ruby/object:Gem::Requirement
|
|
134
97
|
requirements:
|
|
135
98
|
- - ">="
|
|
@@ -170,20 +133,6 @@ dependencies:
|
|
|
170
133
|
- - ">="
|
|
171
134
|
- !ruby/object:Gem::Version
|
|
172
135
|
version: '0'
|
|
173
|
-
- !ruby/object:Gem::Dependency
|
|
174
|
-
name: selenium-webdriver
|
|
175
|
-
requirement: !ruby/object:Gem::Requirement
|
|
176
|
-
requirements:
|
|
177
|
-
- - ">="
|
|
178
|
-
- !ruby/object:Gem::Version
|
|
179
|
-
version: '0'
|
|
180
|
-
type: :development
|
|
181
|
-
prerelease: false
|
|
182
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
183
|
-
requirements:
|
|
184
|
-
- - ">="
|
|
185
|
-
- !ruby/object:Gem::Version
|
|
186
|
-
version: '0'
|
|
187
136
|
- !ruby/object:Gem::Dependency
|
|
188
137
|
name: sqlite3
|
|
189
138
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -205,9 +154,10 @@ executables: []
|
|
|
205
154
|
extensions: []
|
|
206
155
|
extra_rdoc_files: []
|
|
207
156
|
files:
|
|
157
|
+
- ".github/stale.yml"
|
|
158
|
+
- ".github/workflows/ci.yml"
|
|
208
159
|
- ".gitignore"
|
|
209
160
|
- ".rspec"
|
|
210
|
-
- ".travis.yml"
|
|
211
161
|
- Appraisals
|
|
212
162
|
- CHANGELOG.md
|
|
213
163
|
- Dockerfile
|
|
@@ -222,11 +172,9 @@ files:
|
|
|
222
172
|
- config/locales/en.yml
|
|
223
173
|
- config/locales/ru.yml
|
|
224
174
|
- docker-compose.yml
|
|
225
|
-
- gemfiles/
|
|
226
|
-
- gemfiles/
|
|
227
|
-
- gemfiles/rails5.1.gemfile
|
|
175
|
+
- gemfiles/rails7.2.gemfile
|
|
176
|
+
- gemfiles/rails8.0.gemfile
|
|
228
177
|
- lib/activeadmin_settings_cached.rb
|
|
229
|
-
- lib/activeadmin_settings_cached/coercions.rb
|
|
230
178
|
- lib/activeadmin_settings_cached/dsl.rb
|
|
231
179
|
- lib/activeadmin_settings_cached/engine.rb
|
|
232
180
|
- lib/activeadmin_settings_cached/model.rb
|
|
@@ -235,7 +183,6 @@ files:
|
|
|
235
183
|
- lib/generators/active_admin/USAGE
|
|
236
184
|
- lib/generators/active_admin/settings_generator.rb
|
|
237
185
|
- lib/generators/active_admin/templates/settings.rb
|
|
238
|
-
- spec/coercions_spec.rb
|
|
239
186
|
- spec/model_spec.rb
|
|
240
187
|
- spec/settings_spec.rb
|
|
241
188
|
- spec/spec_helper.rb
|
|
@@ -246,7 +193,6 @@ homepage: https://github.com/artofhuman/activeadmin_settings_cached
|
|
|
246
193
|
licenses:
|
|
247
194
|
- MIT
|
|
248
195
|
metadata: {}
|
|
249
|
-
post_install_message:
|
|
250
196
|
rdoc_options: []
|
|
251
197
|
require_paths:
|
|
252
198
|
- lib
|
|
@@ -261,13 +207,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
261
207
|
- !ruby/object:Gem::Version
|
|
262
208
|
version: '0'
|
|
263
209
|
requirements: []
|
|
264
|
-
|
|
265
|
-
rubygems_version: 2.6.13
|
|
266
|
-
signing_key:
|
|
210
|
+
rubygems_version: 3.6.2
|
|
267
211
|
specification_version: 4
|
|
268
212
|
summary: UI interface for rails-settings-cached in active admin
|
|
269
213
|
test_files:
|
|
270
|
-
- spec/coercions_spec.rb
|
|
271
214
|
- spec/model_spec.rb
|
|
272
215
|
- spec/settings_spec.rb
|
|
273
216
|
- spec/spec_helper.rb
|
data/.travis.yml
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
language: ruby
|
|
2
|
-
cache: bundler
|
|
3
|
-
|
|
4
|
-
gemfile:
|
|
5
|
-
- gemfiles/rails4.2.gemfile
|
|
6
|
-
- gemfiles/rails5.0.gemfile
|
|
7
|
-
- gemfiles/rails5.1.gemfile
|
|
8
|
-
|
|
9
|
-
before_script:
|
|
10
|
-
- bundle exec rake setup
|
|
11
|
-
|
|
12
|
-
script:
|
|
13
|
-
- bundle exec rake
|
|
14
|
-
|
|
15
|
-
rvm:
|
|
16
|
-
- 2.2.6
|
|
17
|
-
- 2.3.4
|
data/gemfiles/rails5.0.gemfile
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
# This file was generated by Appraisal
|
|
2
|
-
|
|
3
|
-
source "https://rubygems.org"
|
|
4
|
-
|
|
5
|
-
gem "rails", "~> 5.0.1"
|
|
6
|
-
gem "inherited_resources", git: "https://github.com/activeadmin/inherited_resources.git"
|
|
7
|
-
gem "listen"
|
|
8
|
-
|
|
9
|
-
group :test do
|
|
10
|
-
gem "pry-byebug"
|
|
11
|
-
gem "therubyracer"
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
gemspec path: "../"
|
data/gemfiles/rails5.1.gemfile
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
# This file was generated by Appraisal
|
|
2
|
-
|
|
3
|
-
source "https://rubygems.org"
|
|
4
|
-
|
|
5
|
-
gem "rails", "~> 5.1.0"
|
|
6
|
-
gem "inherited_resources", git: "https://github.com/activeadmin/inherited_resources.git"
|
|
7
|
-
gem "listen"
|
|
8
|
-
|
|
9
|
-
group :test do
|
|
10
|
-
gem "pry-byebug"
|
|
11
|
-
gem "therubyracer"
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
gemspec path: "../"
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'dry-types'
|
|
4
|
-
|
|
5
|
-
module ActiveadminSettingsCached
|
|
6
|
-
# Coerce user input values to defined types
|
|
7
|
-
#
|
|
8
|
-
# @api private
|
|
9
|
-
class Coercions
|
|
10
|
-
attr_reader :defaults, :display
|
|
11
|
-
|
|
12
|
-
def initialize(defaults, display)
|
|
13
|
-
@defaults = defaults
|
|
14
|
-
@display = display
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def cast_params(params)
|
|
18
|
-
coerced_params = params.to_unsafe_h.map do |name, value|
|
|
19
|
-
[name, cast_value(name, value)]
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
return coerced_params unless block_given?
|
|
23
|
-
|
|
24
|
-
coerced_params.each do |name, value|
|
|
25
|
-
yield(name, value.call) unless value.nil?
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
private
|
|
30
|
-
|
|
31
|
-
def cast_value(name, value)
|
|
32
|
-
case defaults[name]
|
|
33
|
-
when TrueClass, FalseClass
|
|
34
|
-
-> { value_or_default('bool', value, false) }
|
|
35
|
-
when Integer
|
|
36
|
-
-> { value_or_default('int', value, 0) }
|
|
37
|
-
when Float
|
|
38
|
-
-> { value_or_default('float', value, 0.0) }
|
|
39
|
-
when Hash, 'ActiveSupport::HashWithIndifferentAccess'
|
|
40
|
-
nil
|
|
41
|
-
when Symbol
|
|
42
|
-
-> { value.to_sym }
|
|
43
|
-
else
|
|
44
|
-
-> { value }
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def value_or_default(type, value, default)
|
|
49
|
-
result = Dry::Types["form.#{type}"].call(value)
|
|
50
|
-
if Dry::Types[type].valid?(result)
|
|
51
|
-
result
|
|
52
|
-
else
|
|
53
|
-
default
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
data/spec/coercions_spec.rb
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
RSpec.describe ActiveadminSettingsCached::Coercions do
|
|
4
|
-
let(:display) do
|
|
5
|
-
Hash[
|
|
6
|
-
'base.first_setting' => 'string',
|
|
7
|
-
'base.second_setting' => 'boolean',
|
|
8
|
-
'base.third_setting' => 'number',
|
|
9
|
-
'base.four_setting' => 'number',
|
|
10
|
-
'second.first_setting' => 'boolean',
|
|
11
|
-
'second.second_setting' => 'string'
|
|
12
|
-
].with_indifferent_access
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
let(:defaults) do
|
|
16
|
-
Hash[
|
|
17
|
-
'base.first_setting' => 'AAA',
|
|
18
|
-
'base.second_setting' => true,
|
|
19
|
-
'base.third_setting' => 5,
|
|
20
|
-
'base.four_setting' => 5.5,
|
|
21
|
-
'base.five_setting' => :aaa,
|
|
22
|
-
'second.first_setting' => false,
|
|
23
|
-
'second.second_setting' => 'BBB',
|
|
24
|
-
'some' => Hash.new
|
|
25
|
-
].with_indifferent_access
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
let(:right_params) do
|
|
29
|
-
ActionController::Parameters.new(
|
|
30
|
-
Hash[
|
|
31
|
-
'base.first_setting' => 'BBB',
|
|
32
|
-
'base.second_setting' => 'false',
|
|
33
|
-
'base.third_setting' => '155',
|
|
34
|
-
'base.four_setting' => '55.5',
|
|
35
|
-
'base.five_setting' => 'bbb',
|
|
36
|
-
'second.first_setting' => 'true',
|
|
37
|
-
'second.second_setting' => 'AAA'
|
|
38
|
-
]
|
|
39
|
-
)
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
let(:wrong_params) do
|
|
43
|
-
ActionController::Parameters.new(
|
|
44
|
-
Hash['base.second_setting' => 'hjgj',
|
|
45
|
-
'base.third_setting' => 'fhfh',
|
|
46
|
-
'base.four_setting' => 'gjfhg',
|
|
47
|
-
'second.first_setting' => 'ggf',
|
|
48
|
-
'some' => Hash.new
|
|
49
|
-
])
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
let(:no_params) { ActionController::Parameters.new(Hash[]) }
|
|
53
|
-
|
|
54
|
-
subject(:coercions) do
|
|
55
|
-
ActiveadminSettingsCached::Coercions.new(defaults, display)
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
it 'when good params' do
|
|
59
|
-
expect { |b| coercions.cast_params(right_params, &b) }
|
|
60
|
-
.to yield_successive_args(['base.first_setting', 'BBB'],
|
|
61
|
-
['base.second_setting', false],
|
|
62
|
-
['base.third_setting', 155],
|
|
63
|
-
['base.four_setting', 55.5],
|
|
64
|
-
['base.five_setting', :bbb],
|
|
65
|
-
['second.first_setting', true],
|
|
66
|
-
['second.second_setting', 'AAA'])
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
it 'when wrong params' do
|
|
70
|
-
expect { |b| coercions.cast_params(wrong_params, &b) }
|
|
71
|
-
.to yield_successive_args(['base.second_setting', false],
|
|
72
|
-
['base.third_setting', 0],
|
|
73
|
-
['base.four_setting', 0.0],
|
|
74
|
-
['second.first_setting', false])
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
it 'when no params' do
|
|
78
|
-
expect { |b| coercions.cast_params(no_params, &b) }.not_to yield_control
|
|
79
|
-
end
|
|
80
|
-
end
|