activeadmin_settings_cached 2.3.1 → 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 +4 -4
- data/.github/stale.yml +17 -0
- data/.github/workflows/ci.yml +27 -0
- data/Appraisals +4 -12
- data/CHANGELOG.md +15 -0
- data/Dockerfile +3 -16
- data/Gemfile +4 -1
- data/Makefile +11 -6
- data/README.md +60 -14
- data/activeadmin_settings_cached.gemspec +3 -6
- 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 +7 -2
- data/gemfiles/{rails4.2.gemfile → rails7.2.gemfile} +3 -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 +24 -67
- data/.travis.yml +0 -17
- data/gemfiles/rails5.0.gemfile +0 -15
- data/gemfiles/rails5.1.gemfile +0 -15
- data/lib/activeadmin_settings_cached/coercions.rb +0 -58
- data/spec/coercions_spec.rb +0 -86
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,64 +15,42 @@ dependencies:
|
|
|
16
15
|
requirements:
|
|
17
16
|
- - ">="
|
|
18
17
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '0'
|
|
20
|
-
type: :runtime
|
|
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: rails-settings-cached
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - ">="
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: 0.5.3
|
|
18
|
+
version: '1.0'
|
|
34
19
|
- - "<"
|
|
35
20
|
- !ruby/object:Gem::Version
|
|
36
|
-
version:
|
|
21
|
+
version: '4'
|
|
37
22
|
type: :runtime
|
|
38
23
|
prerelease: false
|
|
39
24
|
version_requirements: !ruby/object:Gem::Requirement
|
|
40
25
|
requirements:
|
|
41
26
|
- - ">="
|
|
42
27
|
- !ruby/object:Gem::Version
|
|
43
|
-
version: 0
|
|
28
|
+
version: '1.0'
|
|
44
29
|
- - "<"
|
|
45
30
|
- !ruby/object:Gem::Version
|
|
46
|
-
version:
|
|
31
|
+
version: '4'
|
|
47
32
|
- !ruby/object:Gem::Dependency
|
|
48
|
-
name:
|
|
33
|
+
name: rails-settings-cached
|
|
49
34
|
requirement: !ruby/object:Gem::Requirement
|
|
50
35
|
requirements:
|
|
51
|
-
- - "
|
|
36
|
+
- - "~>"
|
|
52
37
|
- !ruby/object:Gem::Version
|
|
53
|
-
version: '
|
|
54
|
-
type: :development
|
|
55
|
-
prerelease: false
|
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
-
requirements:
|
|
38
|
+
version: '2.8'
|
|
58
39
|
- - ">="
|
|
59
40
|
- !ruby/object:Gem::Version
|
|
60
|
-
version:
|
|
61
|
-
|
|
62
|
-
name: bundler
|
|
63
|
-
requirement: !ruby/object:Gem::Requirement
|
|
64
|
-
requirements:
|
|
65
|
-
- - ">="
|
|
66
|
-
- !ruby/object:Gem::Version
|
|
67
|
-
version: '0'
|
|
68
|
-
type: :development
|
|
41
|
+
version: 2.8.2
|
|
42
|
+
type: :runtime
|
|
69
43
|
prerelease: false
|
|
70
44
|
version_requirements: !ruby/object:Gem::Requirement
|
|
71
45
|
requirements:
|
|
46
|
+
- - "~>"
|
|
47
|
+
- !ruby/object:Gem::Version
|
|
48
|
+
version: '2.8'
|
|
72
49
|
- - ">="
|
|
73
50
|
- !ruby/object:Gem::Version
|
|
74
|
-
version:
|
|
51
|
+
version: 2.8.2
|
|
75
52
|
- !ruby/object:Gem::Dependency
|
|
76
|
-
name:
|
|
53
|
+
name: appraisal
|
|
77
54
|
requirement: !ruby/object:Gem::Requirement
|
|
78
55
|
requirements:
|
|
79
56
|
- - ">="
|
|
@@ -87,7 +64,7 @@ dependencies:
|
|
|
87
64
|
- !ruby/object:Gem::Version
|
|
88
65
|
version: '0'
|
|
89
66
|
- !ruby/object:Gem::Dependency
|
|
90
|
-
name:
|
|
67
|
+
name: bundler
|
|
91
68
|
requirement: !ruby/object:Gem::Requirement
|
|
92
69
|
requirements:
|
|
93
70
|
- - ">="
|
|
@@ -101,7 +78,7 @@ dependencies:
|
|
|
101
78
|
- !ruby/object:Gem::Version
|
|
102
79
|
version: '0'
|
|
103
80
|
- !ruby/object:Gem::Dependency
|
|
104
|
-
name:
|
|
81
|
+
name: capybara
|
|
105
82
|
requirement: !ruby/object:Gem::Requirement
|
|
106
83
|
requirements:
|
|
107
84
|
- - ">="
|
|
@@ -115,7 +92,7 @@ dependencies:
|
|
|
115
92
|
- !ruby/object:Gem::Version
|
|
116
93
|
version: '0'
|
|
117
94
|
- !ruby/object:Gem::Dependency
|
|
118
|
-
name:
|
|
95
|
+
name: database_cleaner-active_record
|
|
119
96
|
requirement: !ruby/object:Gem::Requirement
|
|
120
97
|
requirements:
|
|
121
98
|
- - ">="
|
|
@@ -156,20 +133,6 @@ dependencies:
|
|
|
156
133
|
- - ">="
|
|
157
134
|
- !ruby/object:Gem::Version
|
|
158
135
|
version: '0'
|
|
159
|
-
- !ruby/object:Gem::Dependency
|
|
160
|
-
name: selenium-webdriver
|
|
161
|
-
requirement: !ruby/object:Gem::Requirement
|
|
162
|
-
requirements:
|
|
163
|
-
- - ">="
|
|
164
|
-
- !ruby/object:Gem::Version
|
|
165
|
-
version: '0'
|
|
166
|
-
type: :development
|
|
167
|
-
prerelease: false
|
|
168
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
169
|
-
requirements:
|
|
170
|
-
- - ">="
|
|
171
|
-
- !ruby/object:Gem::Version
|
|
172
|
-
version: '0'
|
|
173
136
|
- !ruby/object:Gem::Dependency
|
|
174
137
|
name: sqlite3
|
|
175
138
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -191,9 +154,10 @@ executables: []
|
|
|
191
154
|
extensions: []
|
|
192
155
|
extra_rdoc_files: []
|
|
193
156
|
files:
|
|
157
|
+
- ".github/stale.yml"
|
|
158
|
+
- ".github/workflows/ci.yml"
|
|
194
159
|
- ".gitignore"
|
|
195
160
|
- ".rspec"
|
|
196
|
-
- ".travis.yml"
|
|
197
161
|
- Appraisals
|
|
198
162
|
- CHANGELOG.md
|
|
199
163
|
- Dockerfile
|
|
@@ -208,11 +172,9 @@ files:
|
|
|
208
172
|
- config/locales/en.yml
|
|
209
173
|
- config/locales/ru.yml
|
|
210
174
|
- docker-compose.yml
|
|
211
|
-
- gemfiles/
|
|
212
|
-
- gemfiles/
|
|
213
|
-
- gemfiles/rails5.1.gemfile
|
|
175
|
+
- gemfiles/rails7.2.gemfile
|
|
176
|
+
- gemfiles/rails8.0.gemfile
|
|
214
177
|
- lib/activeadmin_settings_cached.rb
|
|
215
|
-
- lib/activeadmin_settings_cached/coercions.rb
|
|
216
178
|
- lib/activeadmin_settings_cached/dsl.rb
|
|
217
179
|
- lib/activeadmin_settings_cached/engine.rb
|
|
218
180
|
- lib/activeadmin_settings_cached/model.rb
|
|
@@ -221,7 +183,6 @@ files:
|
|
|
221
183
|
- lib/generators/active_admin/USAGE
|
|
222
184
|
- lib/generators/active_admin/settings_generator.rb
|
|
223
185
|
- lib/generators/active_admin/templates/settings.rb
|
|
224
|
-
- spec/coercions_spec.rb
|
|
225
186
|
- spec/model_spec.rb
|
|
226
187
|
- spec/settings_spec.rb
|
|
227
188
|
- spec/spec_helper.rb
|
|
@@ -232,7 +193,6 @@ homepage: https://github.com/artofhuman/activeadmin_settings_cached
|
|
|
232
193
|
licenses:
|
|
233
194
|
- MIT
|
|
234
195
|
metadata: {}
|
|
235
|
-
post_install_message:
|
|
236
196
|
rdoc_options: []
|
|
237
197
|
require_paths:
|
|
238
198
|
- lib
|
|
@@ -247,13 +207,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
247
207
|
- !ruby/object:Gem::Version
|
|
248
208
|
version: '0'
|
|
249
209
|
requirements: []
|
|
250
|
-
|
|
251
|
-
rubygems_version: 2.7.6
|
|
252
|
-
signing_key:
|
|
210
|
+
rubygems_version: 3.6.2
|
|
253
211
|
specification_version: 4
|
|
254
212
|
summary: UI interface for rails-settings-cached in active admin
|
|
255
213
|
test_files:
|
|
256
|
-
- spec/coercions_spec.rb
|
|
257
214
|
- spec/model_spec.rb
|
|
258
215
|
- spec/settings_spec.rb
|
|
259
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,15 +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 "puma"
|
|
12
|
-
gem "therubyracer"
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
gemspec path: "../"
|
data/gemfiles/rails5.1.gemfile
DELETED
|
@@ -1,15 +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 "puma"
|
|
12
|
-
gem "therubyracer"
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
gemspec path: "../"
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module ActiveadminSettingsCached
|
|
4
|
-
# Coerce user input values to defined types
|
|
5
|
-
#
|
|
6
|
-
# @api private
|
|
7
|
-
class Coercions
|
|
8
|
-
TRUE_VALUES = %w[1 on On ON t true True TRUE T y yes Yes YES Y].freeze
|
|
9
|
-
FALSE_VALUES = %w[0 off Off OFF f false False FALSE F n no No NO N].freeze
|
|
10
|
-
BOOLEAN_MAP = ::Hash[
|
|
11
|
-
TRUE_VALUES.product([true]) + FALSE_VALUES.product([false])
|
|
12
|
-
].freeze
|
|
13
|
-
|
|
14
|
-
attr_reader :defaults, :display
|
|
15
|
-
|
|
16
|
-
def initialize(defaults, display)
|
|
17
|
-
@defaults = defaults
|
|
18
|
-
@display = display
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def cast_params(params)
|
|
22
|
-
coerced_params = params.to_unsafe_h.map do |name, value|
|
|
23
|
-
[name, cast_value(name, value)]
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
return coerced_params unless block_given?
|
|
27
|
-
|
|
28
|
-
coerced_params.each do |name, value|
|
|
29
|
-
yield(name, value.call) unless value.nil?
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
private
|
|
34
|
-
|
|
35
|
-
def cast_value(name, value) # rubocop:disable Metrics/MethodLength
|
|
36
|
-
case defaults[name]
|
|
37
|
-
when TrueClass, FalseClass
|
|
38
|
-
-> { BOOLEAN_MAP.fetch(value, false) }
|
|
39
|
-
when Integer
|
|
40
|
-
-> { value_or_default(0) { Integer(value) } }
|
|
41
|
-
when Float
|
|
42
|
-
-> { value_or_default(0.0) { Float(value) } }
|
|
43
|
-
when Hash, 'ActiveSupport::HashWithIndifferentAccess'
|
|
44
|
-
nil
|
|
45
|
-
when Symbol
|
|
46
|
-
-> { value.to_sym }
|
|
47
|
-
else
|
|
48
|
-
-> { value }
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def value_or_default(default)
|
|
53
|
-
yield
|
|
54
|
-
rescue ArgumentError, TypeError
|
|
55
|
-
default
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
data/spec/coercions_spec.rb
DELETED
|
@@ -1,86 +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' => {}
|
|
25
|
-
].with_indifferent_access
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
subject(:coercions) do
|
|
29
|
-
ActiveadminSettingsCached::Coercions.new(defaults, display)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
context 'when params is valid' do
|
|
33
|
-
let(:params) do
|
|
34
|
-
ActionController::Parameters.new(
|
|
35
|
-
Hash[
|
|
36
|
-
'base.first_setting' => 'BBB',
|
|
37
|
-
'base.second_setting' => 'false',
|
|
38
|
-
'base.third_setting' => '155',
|
|
39
|
-
'base.four_setting' => '55.5',
|
|
40
|
-
'base.five_setting' => 'bbb',
|
|
41
|
-
'second.first_setting' => 'true',
|
|
42
|
-
'second.second_setting' => 'AAA'
|
|
43
|
-
]
|
|
44
|
-
)
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
it 'casts params' do
|
|
48
|
-
expect { |b| coercions.cast_params(params, &b) }
|
|
49
|
-
.to yield_successive_args(['base.first_setting', 'BBB'],
|
|
50
|
-
['base.second_setting', false],
|
|
51
|
-
['base.third_setting', 155],
|
|
52
|
-
['base.four_setting', 55.5],
|
|
53
|
-
['base.five_setting', :bbb],
|
|
54
|
-
['second.first_setting', true],
|
|
55
|
-
['second.second_setting', 'AAA'])
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
context 'when params is wrong' do
|
|
60
|
-
let(:params) do
|
|
61
|
-
ActionController::Parameters.new(
|
|
62
|
-
Hash[
|
|
63
|
-
'base.second_setting' => 'hjgj',
|
|
64
|
-
'base.third_setting' => 'fhfh',
|
|
65
|
-
'base.four_setting' => 'gjfhg',
|
|
66
|
-
'second.first_setting' => 'ggf',
|
|
67
|
-
'some' => {}
|
|
68
|
-
]
|
|
69
|
-
)
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
it 'returns default values' do
|
|
73
|
-
expect { |b| coercions.cast_params(params, &b) }
|
|
74
|
-
.to yield_successive_args(['base.second_setting', false],
|
|
75
|
-
['base.third_setting', 0],
|
|
76
|
-
['base.four_setting', 0.0],
|
|
77
|
-
['second.first_setting', false])
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
context 'when params is empty' do
|
|
82
|
-
let(:params) { ActionController::Parameters.new(Hash[]) }
|
|
83
|
-
|
|
84
|
-
it { expect { |b| coercions.cast_params(params, &b) }.not_to yield_control }
|
|
85
|
-
end
|
|
86
|
-
end
|