setler 0.0.13 → 0.0.14
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 -13
- data/.ruby-version +1 -1
- data/.travis.yml +18 -4
- data/Appraisals +14 -0
- data/Gemfile +1 -1
- data/README.rdoc +5 -1
- data/Rakefile +24 -2
- data/contributors.txt +2 -0
- data/gemfiles/rails_4.gemfile +8 -0
- data/gemfiles/rails_4.gemfile.lock +128 -0
- data/gemfiles/rails_5.gemfile +8 -0
- data/gemfiles/rails_5.gemfile.lock +143 -0
- data/gemfiles/rails_6_edge.gemfile +8 -0
- data/gemfiles/rails_6_edge.gemfile.lock +167 -0
- data/lib/generators/setler/templates/migration.rb +1 -0
- data/lib/setler/settings.rb +13 -5
- data/lib/setler/version.rb +1 -1
- data/setler.gemspec +4 -3
- data/test/settings_test.rb +14 -2
- data/test/test_helper.rb +7 -2
- metadata +62 -27
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
MWM0MTJjNWE2YmYyZmE4MWM1NGUyYWZkNzllNTM3YzgxMTQ4NzdiNg==
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: cbe29674970fc77e130e8ab2927c5afb9697f2f60d0c6b1edd0f7e95c9fa4710
|
4
|
+
data.tar.gz: 896867601cf7eee4ae4eeb4cca788952a334f450e9980c123ba38f54568778af
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
NmFkNzRhZTZhOTllZTU2MTk5MDZkZDBmOTBiZjNhMTdiNDQ0NjQ5MGQ0ZDg4
|
11
|
-
NTcwOWY2ZWFiMGM5YjU4MGM0MDg1MzhjMGVhZjQ3YWVhZTcxMGM=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
MzdlNDgwMGZlNzYxMGQ3ODQ5Y2Q2Y2JkMDNiNWIwNmYyY2FhMjYzMmE4MWYw
|
14
|
-
OTY0MDE3MDVhNjVmYWM3Mjc1OWEwOGUzNDVjYmJmZWViOTY3NjYzYjczMmEw
|
15
|
-
M2NkNDZhNDQ4ZmViOGNiMzJjZTc2MmE3MjIwOTY1ZDM1NmM2Mzk=
|
6
|
+
metadata.gz: e9f90bc4f78b627a5d512cdf18bdedc7947a80f20fe7ef46acedbdad4f3321e02f76c7d8ab86278c41aee252a9607a2688d31086ee1621123c9ed8e4deec5aef
|
7
|
+
data.tar.gz: e01e2a723f9b0db1b77625f5f50912f670edfe71b519f07a975ae07412a360f9d3f7a727fd1b58cc1eb8a9bcc2d04aebf3d44c7c20a12513f046f1d7b6523e20
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
2.6.5
|
data/.travis.yml
CHANGED
@@ -1,8 +1,22 @@
|
|
1
|
+
language: ruby
|
1
2
|
rvm:
|
2
|
-
-
|
3
|
-
- 2.
|
3
|
+
- 2.3.8
|
4
|
+
- 2.4.7
|
5
|
+
- 2.5.7
|
6
|
+
- 2.6.5
|
7
|
+
before_install: "gem install bundler:1.17.2"
|
4
8
|
cache: bundler
|
5
|
-
script:
|
6
|
-
- bundle exec rake test
|
9
|
+
script: "bundle exec rake test"
|
7
10
|
notifications:
|
8
11
|
email: false
|
12
|
+
gemfile:
|
13
|
+
- gemfiles/rails_4.gemfile
|
14
|
+
- gemfiles/rails_5.gemfile
|
15
|
+
- gemfiles/rails_6_edge.gemfile
|
16
|
+
matrix:
|
17
|
+
fast_finish: true
|
18
|
+
exclude:
|
19
|
+
- rvm: 2.3.8
|
20
|
+
gemfile: gemfiles/rails_6_edge.gemfile
|
21
|
+
- rvm: 2.4.7
|
22
|
+
gemfile: gemfiles/rails_6_edge.gemfile
|
data/Appraisals
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
appraise "rails-4" do
|
2
|
+
gem "rails", "4.2.11.1"
|
3
|
+
gem 'sqlite3', '1.3.13' # 5/13/2019: LOCKED DOWN AGAIN.
|
4
|
+
end
|
5
|
+
|
6
|
+
appraise "rails-5" do
|
7
|
+
gem "rails", "5.2.3"
|
8
|
+
gem 'sqlite3'
|
9
|
+
end
|
10
|
+
|
11
|
+
appraise "rails-6-edge" do
|
12
|
+
gem 'rails', git: 'https://github.com/rails/rails'
|
13
|
+
gem 'sqlite3'
|
14
|
+
end
|
data/Gemfile
CHANGED
data/README.rdoc
CHANGED
@@ -3,6 +3,9 @@
|
|
3
3
|
Setler is a Gem that lets one easily implement the "Feature Flags" pattern, or add settings to individual models. This is a cleanroom implementation of what the 'rails-settings' gem does. It's been forked all over the place, and my favorite version of it doesn't have any tests and doesn't work with settings associated with models.
|
4
4
|
|
5
5
|
{<img src="https://travis-ci.org/ckdake/setler.svg?branch=master" alt="Build Status" />}[https://travis-ci.org/ckdake/setler]
|
6
|
+
{<img src="https://badge.fury.io/rb/setler.svg" alt="Gem Version" />}[http://badge.fury.io/rb/setler]
|
7
|
+
|
8
|
+
While Setler enables you to create both app-level and model-level settings, they are two separate things and don't mix. For example, if you create defaults for the app, they won't appear as defaults for individual models.
|
6
9
|
|
7
10
|
== Setup
|
8
11
|
|
@@ -74,7 +77,8 @@ Getting started is pretty straightforward:
|
|
74
77
|
|
75
78
|
1. Check out the code: `git clone git://github.com/ckdake/setler.git`
|
76
79
|
2. Bundle install: `bundle install`
|
77
|
-
3. Run
|
80
|
+
3. Run: `appraisal install` to generate the appraisal's gemfiles.
|
81
|
+
4. Run the tests for all supported releases in Appraisals file and make sure they all pass and code coverage is still the same: `appraisal rake test`
|
78
82
|
|
79
83
|
If you'd like to contribute code, make your changes and submit a pull request that includes appropriate tests
|
80
84
|
|
data/Rakefile
CHANGED
@@ -1,6 +1,12 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'bundler/setup'
|
5
|
+
require 'bundler/gem_tasks'
|
6
|
+
|
1
7
|
require 'rake'
|
2
8
|
require 'rake/testtask'
|
3
|
-
require '
|
9
|
+
require 'appraisal'
|
4
10
|
|
5
11
|
Rake::TestTask.new(:test) do |test|
|
6
12
|
test.libs << 'lib' << 'test'
|
@@ -8,4 +14,20 @@ Rake::TestTask.new(:test) do |test|
|
|
8
14
|
test.verbose = true
|
9
15
|
end
|
10
16
|
|
11
|
-
|
17
|
+
require 'bundler/gem_tasks'
|
18
|
+
|
19
|
+
require 'rake'
|
20
|
+
require 'appraisal'
|
21
|
+
|
22
|
+
desc 'Default'
|
23
|
+
task :default do
|
24
|
+
if ENV['BUNDLE_GEMFILE'] =~ /gemfiles/
|
25
|
+
task default: [:test]
|
26
|
+
else
|
27
|
+
Rake::Task['appraise'].invoke
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
task :appraise do
|
32
|
+
exec 'appraisal install && appraisal rake test'
|
33
|
+
end
|
data/contributors.txt
CHANGED
@@ -0,0 +1,128 @@
|
|
1
|
+
PATH
|
2
|
+
remote: ..
|
3
|
+
specs:
|
4
|
+
setler (0.0.13)
|
5
|
+
activerecord (>= 3.0.0)
|
6
|
+
rails (>= 3.0.0)
|
7
|
+
sprockets (= 3.7.2)
|
8
|
+
|
9
|
+
GEM
|
10
|
+
remote: https://rubygems.org/
|
11
|
+
specs:
|
12
|
+
actionmailer (4.2.11.1)
|
13
|
+
actionpack (= 4.2.11.1)
|
14
|
+
actionview (= 4.2.11.1)
|
15
|
+
activejob (= 4.2.11.1)
|
16
|
+
mail (~> 2.5, >= 2.5.4)
|
17
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
18
|
+
actionpack (4.2.11.1)
|
19
|
+
actionview (= 4.2.11.1)
|
20
|
+
activesupport (= 4.2.11.1)
|
21
|
+
rack (~> 1.6)
|
22
|
+
rack-test (~> 0.6.2)
|
23
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
24
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
25
|
+
actionview (4.2.11.1)
|
26
|
+
activesupport (= 4.2.11.1)
|
27
|
+
builder (~> 3.1)
|
28
|
+
erubis (~> 2.7.0)
|
29
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
30
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
31
|
+
activejob (4.2.11.1)
|
32
|
+
activesupport (= 4.2.11.1)
|
33
|
+
globalid (>= 0.3.0)
|
34
|
+
activemodel (4.2.11.1)
|
35
|
+
activesupport (= 4.2.11.1)
|
36
|
+
builder (~> 3.1)
|
37
|
+
activerecord (4.2.11.1)
|
38
|
+
activemodel (= 4.2.11.1)
|
39
|
+
activesupport (= 4.2.11.1)
|
40
|
+
arel (~> 6.0)
|
41
|
+
activesupport (4.2.11.1)
|
42
|
+
i18n (~> 0.7)
|
43
|
+
minitest (~> 5.1)
|
44
|
+
thread_safe (~> 0.3, >= 0.3.4)
|
45
|
+
tzinfo (~> 1.1)
|
46
|
+
appraisal (2.2.0)
|
47
|
+
bundler
|
48
|
+
rake
|
49
|
+
thor (>= 0.14.0)
|
50
|
+
arel (6.0.4)
|
51
|
+
builder (3.2.4)
|
52
|
+
concurrent-ruby (1.1.5)
|
53
|
+
crass (1.0.6)
|
54
|
+
docile (1.3.2)
|
55
|
+
erubis (2.7.0)
|
56
|
+
globalid (0.4.2)
|
57
|
+
activesupport (>= 4.2.0)
|
58
|
+
i18n (0.9.5)
|
59
|
+
concurrent-ruby (~> 1.0)
|
60
|
+
loofah (2.4.0)
|
61
|
+
crass (~> 1.0.2)
|
62
|
+
nokogiri (>= 1.5.9)
|
63
|
+
mail (2.7.1)
|
64
|
+
mini_mime (>= 0.1.1)
|
65
|
+
mini_mime (1.0.2)
|
66
|
+
mini_portile2 (2.4.0)
|
67
|
+
minitest (5.14.0)
|
68
|
+
nokogiri (1.10.7)
|
69
|
+
mini_portile2 (~> 2.4.0)
|
70
|
+
rack (1.6.13)
|
71
|
+
rack-test (0.6.3)
|
72
|
+
rack (>= 1.0)
|
73
|
+
rails (4.2.11.1)
|
74
|
+
actionmailer (= 4.2.11.1)
|
75
|
+
actionpack (= 4.2.11.1)
|
76
|
+
actionview (= 4.2.11.1)
|
77
|
+
activejob (= 4.2.11.1)
|
78
|
+
activemodel (= 4.2.11.1)
|
79
|
+
activerecord (= 4.2.11.1)
|
80
|
+
activesupport (= 4.2.11.1)
|
81
|
+
bundler (>= 1.3.0, < 2.0)
|
82
|
+
railties (= 4.2.11.1)
|
83
|
+
sprockets-rails
|
84
|
+
rails-deprecated_sanitizer (1.0.3)
|
85
|
+
activesupport (>= 4.2.0.alpha)
|
86
|
+
rails-dom-testing (1.0.9)
|
87
|
+
activesupport (>= 4.2.0, < 5.0)
|
88
|
+
nokogiri (~> 1.6)
|
89
|
+
rails-deprecated_sanitizer (>= 1.0.1)
|
90
|
+
rails-html-sanitizer (1.3.0)
|
91
|
+
loofah (~> 2.3)
|
92
|
+
railties (4.2.11.1)
|
93
|
+
actionpack (= 4.2.11.1)
|
94
|
+
activesupport (= 4.2.11.1)
|
95
|
+
rake (>= 0.8.7)
|
96
|
+
thor (>= 0.18.1, < 2.0)
|
97
|
+
rake (13.0.1)
|
98
|
+
simplecov (0.18.1)
|
99
|
+
docile (~> 1.1)
|
100
|
+
simplecov-html (~> 0.11.0)
|
101
|
+
simplecov-html (0.11.0)
|
102
|
+
sprockets (3.7.2)
|
103
|
+
concurrent-ruby (~> 1.0)
|
104
|
+
rack (> 1, < 3)
|
105
|
+
sprockets-rails (3.2.1)
|
106
|
+
actionpack (>= 4.0)
|
107
|
+
activesupport (>= 4.0)
|
108
|
+
sprockets (>= 3.0.0)
|
109
|
+
sqlite3 (1.3.13)
|
110
|
+
thor (1.0.1)
|
111
|
+
thread_safe (0.3.6)
|
112
|
+
tzinfo (1.2.6)
|
113
|
+
thread_safe (~> 0.1)
|
114
|
+
|
115
|
+
PLATFORMS
|
116
|
+
ruby
|
117
|
+
|
118
|
+
DEPENDENCIES
|
119
|
+
appraisal
|
120
|
+
minitest
|
121
|
+
rails (= 4.2.11.1)
|
122
|
+
rake
|
123
|
+
setler!
|
124
|
+
simplecov
|
125
|
+
sqlite3 (= 1.3.13)
|
126
|
+
|
127
|
+
BUNDLED WITH
|
128
|
+
1.17.3
|
@@ -0,0 +1,143 @@
|
|
1
|
+
PATH
|
2
|
+
remote: ..
|
3
|
+
specs:
|
4
|
+
setler (0.0.13)
|
5
|
+
activerecord (>= 3.0.0)
|
6
|
+
rails (>= 3.0.0)
|
7
|
+
sprockets (= 3.7.2)
|
8
|
+
|
9
|
+
GEM
|
10
|
+
remote: https://rubygems.org/
|
11
|
+
specs:
|
12
|
+
actioncable (5.2.3)
|
13
|
+
actionpack (= 5.2.3)
|
14
|
+
nio4r (~> 2.0)
|
15
|
+
websocket-driver (>= 0.6.1)
|
16
|
+
actionmailer (5.2.3)
|
17
|
+
actionpack (= 5.2.3)
|
18
|
+
actionview (= 5.2.3)
|
19
|
+
activejob (= 5.2.3)
|
20
|
+
mail (~> 2.5, >= 2.5.4)
|
21
|
+
rails-dom-testing (~> 2.0)
|
22
|
+
actionpack (5.2.3)
|
23
|
+
actionview (= 5.2.3)
|
24
|
+
activesupport (= 5.2.3)
|
25
|
+
rack (~> 2.0)
|
26
|
+
rack-test (>= 0.6.3)
|
27
|
+
rails-dom-testing (~> 2.0)
|
28
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
29
|
+
actionview (5.2.3)
|
30
|
+
activesupport (= 5.2.3)
|
31
|
+
builder (~> 3.1)
|
32
|
+
erubi (~> 1.4)
|
33
|
+
rails-dom-testing (~> 2.0)
|
34
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
35
|
+
activejob (5.2.3)
|
36
|
+
activesupport (= 5.2.3)
|
37
|
+
globalid (>= 0.3.6)
|
38
|
+
activemodel (5.2.3)
|
39
|
+
activesupport (= 5.2.3)
|
40
|
+
activerecord (5.2.3)
|
41
|
+
activemodel (= 5.2.3)
|
42
|
+
activesupport (= 5.2.3)
|
43
|
+
arel (>= 9.0)
|
44
|
+
activestorage (5.2.3)
|
45
|
+
actionpack (= 5.2.3)
|
46
|
+
activerecord (= 5.2.3)
|
47
|
+
marcel (~> 0.3.1)
|
48
|
+
activesupport (5.2.3)
|
49
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
50
|
+
i18n (>= 0.7, < 2)
|
51
|
+
minitest (~> 5.1)
|
52
|
+
tzinfo (~> 1.1)
|
53
|
+
appraisal (2.2.0)
|
54
|
+
bundler
|
55
|
+
rake
|
56
|
+
thor (>= 0.14.0)
|
57
|
+
arel (9.0.0)
|
58
|
+
builder (3.2.4)
|
59
|
+
concurrent-ruby (1.1.5)
|
60
|
+
crass (1.0.6)
|
61
|
+
docile (1.3.2)
|
62
|
+
erubi (1.9.0)
|
63
|
+
globalid (0.4.2)
|
64
|
+
activesupport (>= 4.2.0)
|
65
|
+
i18n (1.8.2)
|
66
|
+
concurrent-ruby (~> 1.0)
|
67
|
+
loofah (2.4.0)
|
68
|
+
crass (~> 1.0.2)
|
69
|
+
nokogiri (>= 1.5.9)
|
70
|
+
mail (2.7.1)
|
71
|
+
mini_mime (>= 0.1.1)
|
72
|
+
marcel (0.3.3)
|
73
|
+
mimemagic (~> 0.3.2)
|
74
|
+
method_source (0.9.2)
|
75
|
+
mimemagic (0.3.4)
|
76
|
+
mini_mime (1.0.2)
|
77
|
+
mini_portile2 (2.4.0)
|
78
|
+
minitest (5.14.0)
|
79
|
+
nio4r (2.5.2)
|
80
|
+
nokogiri (1.10.7)
|
81
|
+
mini_portile2 (~> 2.4.0)
|
82
|
+
rack (2.2.1)
|
83
|
+
rack-test (1.1.0)
|
84
|
+
rack (>= 1.0, < 3)
|
85
|
+
rails (5.2.3)
|
86
|
+
actioncable (= 5.2.3)
|
87
|
+
actionmailer (= 5.2.3)
|
88
|
+
actionpack (= 5.2.3)
|
89
|
+
actionview (= 5.2.3)
|
90
|
+
activejob (= 5.2.3)
|
91
|
+
activemodel (= 5.2.3)
|
92
|
+
activerecord (= 5.2.3)
|
93
|
+
activestorage (= 5.2.3)
|
94
|
+
activesupport (= 5.2.3)
|
95
|
+
bundler (>= 1.3.0)
|
96
|
+
railties (= 5.2.3)
|
97
|
+
sprockets-rails (>= 2.0.0)
|
98
|
+
rails-dom-testing (2.0.3)
|
99
|
+
activesupport (>= 4.2.0)
|
100
|
+
nokogiri (>= 1.6)
|
101
|
+
rails-html-sanitizer (1.3.0)
|
102
|
+
loofah (~> 2.3)
|
103
|
+
railties (5.2.3)
|
104
|
+
actionpack (= 5.2.3)
|
105
|
+
activesupport (= 5.2.3)
|
106
|
+
method_source
|
107
|
+
rake (>= 0.8.7)
|
108
|
+
thor (>= 0.19.0, < 2.0)
|
109
|
+
rake (13.0.1)
|
110
|
+
simplecov (0.18.1)
|
111
|
+
docile (~> 1.1)
|
112
|
+
simplecov-html (~> 0.11.0)
|
113
|
+
simplecov-html (0.11.0)
|
114
|
+
sprockets (3.7.2)
|
115
|
+
concurrent-ruby (~> 1.0)
|
116
|
+
rack (> 1, < 3)
|
117
|
+
sprockets-rails (3.2.1)
|
118
|
+
actionpack (>= 4.0)
|
119
|
+
activesupport (>= 4.0)
|
120
|
+
sprockets (>= 3.0.0)
|
121
|
+
sqlite3 (1.4.2)
|
122
|
+
thor (1.0.1)
|
123
|
+
thread_safe (0.3.6)
|
124
|
+
tzinfo (1.2.6)
|
125
|
+
thread_safe (~> 0.1)
|
126
|
+
websocket-driver (0.7.1)
|
127
|
+
websocket-extensions (>= 0.1.0)
|
128
|
+
websocket-extensions (0.1.4)
|
129
|
+
|
130
|
+
PLATFORMS
|
131
|
+
ruby
|
132
|
+
|
133
|
+
DEPENDENCIES
|
134
|
+
appraisal
|
135
|
+
minitest
|
136
|
+
rails (= 5.2.3)
|
137
|
+
rake
|
138
|
+
setler!
|
139
|
+
simplecov
|
140
|
+
sqlite3
|
141
|
+
|
142
|
+
BUNDLED WITH
|
143
|
+
1.17.3
|
@@ -0,0 +1,167 @@
|
|
1
|
+
GIT
|
2
|
+
remote: https://github.com/rails/rails
|
3
|
+
revision: c77a949299fcddd0f6f35d9bc21888b862ff665c
|
4
|
+
specs:
|
5
|
+
actioncable (6.1.0.alpha)
|
6
|
+
actionpack (= 6.1.0.alpha)
|
7
|
+
activesupport (= 6.1.0.alpha)
|
8
|
+
nio4r (~> 2.0)
|
9
|
+
websocket-driver (>= 0.6.1)
|
10
|
+
actionmailbox (6.1.0.alpha)
|
11
|
+
actionpack (= 6.1.0.alpha)
|
12
|
+
activejob (= 6.1.0.alpha)
|
13
|
+
activerecord (= 6.1.0.alpha)
|
14
|
+
activestorage (= 6.1.0.alpha)
|
15
|
+
activesupport (= 6.1.0.alpha)
|
16
|
+
mail (>= 2.7.1)
|
17
|
+
actionmailer (6.1.0.alpha)
|
18
|
+
actionpack (= 6.1.0.alpha)
|
19
|
+
actionview (= 6.1.0.alpha)
|
20
|
+
activejob (= 6.1.0.alpha)
|
21
|
+
activesupport (= 6.1.0.alpha)
|
22
|
+
mail (~> 2.5, >= 2.5.4)
|
23
|
+
rails-dom-testing (~> 2.0)
|
24
|
+
actionpack (6.1.0.alpha)
|
25
|
+
actionview (= 6.1.0.alpha)
|
26
|
+
activesupport (= 6.1.0.alpha)
|
27
|
+
rack (~> 2.0, >= 2.0.8)
|
28
|
+
rack-test (>= 0.6.3)
|
29
|
+
rails-dom-testing (~> 2.0)
|
30
|
+
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
31
|
+
actiontext (6.1.0.alpha)
|
32
|
+
actionpack (= 6.1.0.alpha)
|
33
|
+
activerecord (= 6.1.0.alpha)
|
34
|
+
activestorage (= 6.1.0.alpha)
|
35
|
+
activesupport (= 6.1.0.alpha)
|
36
|
+
nokogiri (>= 1.8.5)
|
37
|
+
actionview (6.1.0.alpha)
|
38
|
+
activesupport (= 6.1.0.alpha)
|
39
|
+
builder (~> 3.1)
|
40
|
+
erubi (~> 1.4)
|
41
|
+
rails-dom-testing (~> 2.0)
|
42
|
+
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
43
|
+
activejob (6.1.0.alpha)
|
44
|
+
activesupport (= 6.1.0.alpha)
|
45
|
+
globalid (>= 0.3.6)
|
46
|
+
activemodel (6.1.0.alpha)
|
47
|
+
activesupport (= 6.1.0.alpha)
|
48
|
+
activerecord (6.1.0.alpha)
|
49
|
+
activemodel (= 6.1.0.alpha)
|
50
|
+
activesupport (= 6.1.0.alpha)
|
51
|
+
activestorage (6.1.0.alpha)
|
52
|
+
actionpack (= 6.1.0.alpha)
|
53
|
+
activejob (= 6.1.0.alpha)
|
54
|
+
activerecord (= 6.1.0.alpha)
|
55
|
+
activesupport (= 6.1.0.alpha)
|
56
|
+
marcel (~> 0.3.1)
|
57
|
+
activesupport (6.1.0.alpha)
|
58
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
59
|
+
i18n (>= 1.6, < 2)
|
60
|
+
minitest (~> 5.1)
|
61
|
+
tzinfo (~> 1.1)
|
62
|
+
zeitwerk (~> 2.2, >= 2.2.2)
|
63
|
+
rails (6.1.0.alpha)
|
64
|
+
actioncable (= 6.1.0.alpha)
|
65
|
+
actionmailbox (= 6.1.0.alpha)
|
66
|
+
actionmailer (= 6.1.0.alpha)
|
67
|
+
actionpack (= 6.1.0.alpha)
|
68
|
+
actiontext (= 6.1.0.alpha)
|
69
|
+
actionview (= 6.1.0.alpha)
|
70
|
+
activejob (= 6.1.0.alpha)
|
71
|
+
activemodel (= 6.1.0.alpha)
|
72
|
+
activerecord (= 6.1.0.alpha)
|
73
|
+
activestorage (= 6.1.0.alpha)
|
74
|
+
activesupport (= 6.1.0.alpha)
|
75
|
+
bundler (>= 1.3.0)
|
76
|
+
railties (= 6.1.0.alpha)
|
77
|
+
sprockets-rails (>= 2.0.0)
|
78
|
+
railties (6.1.0.alpha)
|
79
|
+
actionpack (= 6.1.0.alpha)
|
80
|
+
activesupport (= 6.1.0.alpha)
|
81
|
+
method_source
|
82
|
+
rake (>= 0.8.7)
|
83
|
+
thor (~> 1.0)
|
84
|
+
|
85
|
+
PATH
|
86
|
+
remote: ..
|
87
|
+
specs:
|
88
|
+
setler (0.0.13)
|
89
|
+
activerecord (>= 3.0.0)
|
90
|
+
rails (>= 3.0.0)
|
91
|
+
sprockets (= 3.7.2)
|
92
|
+
|
93
|
+
GEM
|
94
|
+
remote: https://rubygems.org/
|
95
|
+
specs:
|
96
|
+
appraisal (2.2.0)
|
97
|
+
bundler
|
98
|
+
rake
|
99
|
+
thor (>= 0.14.0)
|
100
|
+
builder (3.2.4)
|
101
|
+
concurrent-ruby (1.1.5)
|
102
|
+
crass (1.0.6)
|
103
|
+
docile (1.3.2)
|
104
|
+
erubi (1.9.0)
|
105
|
+
globalid (0.4.2)
|
106
|
+
activesupport (>= 4.2.0)
|
107
|
+
i18n (1.8.2)
|
108
|
+
concurrent-ruby (~> 1.0)
|
109
|
+
loofah (2.4.0)
|
110
|
+
crass (~> 1.0.2)
|
111
|
+
nokogiri (>= 1.5.9)
|
112
|
+
mail (2.7.1)
|
113
|
+
mini_mime (>= 0.1.1)
|
114
|
+
marcel (0.3.3)
|
115
|
+
mimemagic (~> 0.3.2)
|
116
|
+
method_source (0.9.2)
|
117
|
+
mimemagic (0.3.4)
|
118
|
+
mini_mime (1.0.2)
|
119
|
+
mini_portile2 (2.4.0)
|
120
|
+
minitest (5.14.0)
|
121
|
+
nio4r (2.5.2)
|
122
|
+
nokogiri (1.10.7)
|
123
|
+
mini_portile2 (~> 2.4.0)
|
124
|
+
rack (2.2.1)
|
125
|
+
rack-test (1.1.0)
|
126
|
+
rack (>= 1.0, < 3)
|
127
|
+
rails-dom-testing (2.0.3)
|
128
|
+
activesupport (>= 4.2.0)
|
129
|
+
nokogiri (>= 1.6)
|
130
|
+
rails-html-sanitizer (1.3.0)
|
131
|
+
loofah (~> 2.3)
|
132
|
+
rake (13.0.1)
|
133
|
+
simplecov (0.18.1)
|
134
|
+
docile (~> 1.1)
|
135
|
+
simplecov-html (~> 0.11.0)
|
136
|
+
simplecov-html (0.11.0)
|
137
|
+
sprockets (3.7.2)
|
138
|
+
concurrent-ruby (~> 1.0)
|
139
|
+
rack (> 1, < 3)
|
140
|
+
sprockets-rails (3.2.1)
|
141
|
+
actionpack (>= 4.0)
|
142
|
+
activesupport (>= 4.0)
|
143
|
+
sprockets (>= 3.0.0)
|
144
|
+
sqlite3 (1.4.2)
|
145
|
+
thor (1.0.1)
|
146
|
+
thread_safe (0.3.6)
|
147
|
+
tzinfo (1.2.6)
|
148
|
+
thread_safe (~> 0.1)
|
149
|
+
websocket-driver (0.7.1)
|
150
|
+
websocket-extensions (>= 0.1.0)
|
151
|
+
websocket-extensions (0.1.4)
|
152
|
+
zeitwerk (2.2.2)
|
153
|
+
|
154
|
+
PLATFORMS
|
155
|
+
ruby
|
156
|
+
|
157
|
+
DEPENDENCIES
|
158
|
+
appraisal
|
159
|
+
minitest
|
160
|
+
rails!
|
161
|
+
rake
|
162
|
+
setler!
|
163
|
+
simplecov
|
164
|
+
sqlite3
|
165
|
+
|
166
|
+
BUNDLED WITH
|
167
|
+
1.17.3
|
@@ -9,6 +9,7 @@ class SetlerCreate<%= table_name.camelize %> < ActiveRecord::Migration
|
|
9
9
|
end
|
10
10
|
|
11
11
|
add_index :<%= table_name %>, [ :thing_type, :thing_id, :var ], unique: true
|
12
|
+
add_index :<%= table_name %>, :var, unique: true, where: "thing_id IS NULL AND thing_type is NULL"
|
12
13
|
end
|
13
14
|
|
14
15
|
def self.down
|
data/lib/setler/settings.rb
CHANGED
@@ -48,11 +48,19 @@ module Setler
|
|
48
48
|
# thing_scoped.find_or_create_by_var(method_name[0..-2]) should work but doesnt for some reason
|
49
49
|
# When @object is present, thing_scoped sets the where scope for the polymorphic association
|
50
50
|
# but the find_or_create_by wasn't using the thing_type and thing_id
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
51
|
+
if Rails::VERSION::MAJOR == 3
|
52
|
+
thing_scoped.find_or_create_by_var_and_thing_type_and_thing_id(
|
53
|
+
var.to_s,
|
54
|
+
@object.try(:class).try(:base_class).try(:to_s),
|
55
|
+
@object.try(:id)
|
56
|
+
).update({ :value => value })
|
57
|
+
else
|
58
|
+
thing_scoped.find_or_create_by(
|
59
|
+
var: var.to_s,
|
60
|
+
thing_type: @object.try(:class).try(:base_class).try(:to_s),
|
61
|
+
thing_id: @object.try(:id)
|
62
|
+
).update({ :value => value })
|
63
|
+
end
|
56
64
|
end
|
57
65
|
|
58
66
|
def self.destroy(var_name)
|
data/lib/setler/version.rb
CHANGED
data/setler.gemspec
CHANGED
@@ -7,12 +7,11 @@ Gem::Specification.new do |s|
|
|
7
7
|
s.version = Setler::VERSION
|
8
8
|
s.authors = ["Chris Kelly"]
|
9
9
|
s.email = ["ckdake@ckdake.com"]
|
10
|
+
s.license = 'MIT'
|
10
11
|
s.homepage = "https://github.com/ckdake/setler"
|
11
12
|
s.summary = %q{Settler lets you use the 'Feature Flags' pettern or add settings to models.}
|
12
13
|
s.description = %q{Setler is a Gem that lets one easily implement the "Feature Flags" pattern, or add settings to individual models. This is a cleanroom implementation of what the 'rails-settings' gem does. It's been forked all over the place, and my favorite version of it doesn't have any tests and doesn't work with settings associated with models.}
|
13
14
|
|
14
|
-
s.rubyforge_project = "setler"
|
15
|
-
|
16
15
|
s.files = `git ls-files`.split("\n")
|
17
16
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
17
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
@@ -20,8 +19,10 @@ Gem::Specification.new do |s|
|
|
20
19
|
|
21
20
|
s.add_dependency('activerecord', '>=3.0.0')
|
22
21
|
s.add_dependency('rails', '>=3.0.0')
|
22
|
+
s.add_dependency('sprockets', '3.7.2') # 10/16/2019: LOCKED DOWN
|
23
23
|
|
24
|
-
s.add_development_dependency('sqlite3')
|
25
24
|
s.add_development_dependency('rake')
|
26
25
|
s.add_development_dependency('minitest')
|
26
|
+
s.add_development_dependency('simplecov')
|
27
|
+
s.add_development_dependency('appraisal')
|
27
28
|
end
|
data/test/settings_test.rb
CHANGED
@@ -60,7 +60,7 @@ class ::SettingsTest < Minitest::Test
|
|
60
60
|
def test_update_with_nil_and_default_not_nil
|
61
61
|
::Settings.defaults[:foo] = :test
|
62
62
|
::Settings.foo = nil
|
63
|
-
|
63
|
+
assert_nil ::Settings.foo
|
64
64
|
end
|
65
65
|
|
66
66
|
def test_update_with_array_syntax
|
@@ -76,8 +76,20 @@ class ::SettingsTest < Minitest::Test
|
|
76
76
|
assert_equal '123', ::Settings.onetwothree
|
77
77
|
end
|
78
78
|
|
79
|
+
def test_multithreaded_create
|
80
|
+
s1 = Settings.new var: :conflict, value: 1
|
81
|
+
s2 = Settings.new var: :conflict, value: 2
|
82
|
+
s1.save!
|
83
|
+
exc = assert_raises ActiveRecord::RecordNotUnique, ActiveRecord::StatementInvalid do
|
84
|
+
s2.save!
|
85
|
+
end
|
86
|
+
unless exc.is_a?(ActiveRecord::RecordNotUnique)
|
87
|
+
assert exc.message.match(/UNIQUE/)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
79
91
|
def test_complex_serialization
|
80
|
-
complex = [1, '2', {
|
92
|
+
complex = [1, '2', {"three" => true}]
|
81
93
|
::Settings.complex = complex
|
82
94
|
assert_equal complex, ::Settings.complex
|
83
95
|
end
|
data/test/test_helper.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
|
3
|
+
require 'simplecov'
|
4
|
+
SimpleCov.start 'rails'
|
5
|
+
|
3
6
|
require 'bundler'
|
4
7
|
begin
|
5
8
|
Bundler.setup(:default, :development)
|
@@ -34,18 +37,20 @@ def setup_db
|
|
34
37
|
t.text :value, :null => true
|
35
38
|
t.integer :thing_id, :null => true
|
36
39
|
t.string :thing_type, :limit => 30, :null => true
|
37
|
-
t.timestamps
|
40
|
+
t.timestamps null: false
|
38
41
|
end
|
39
42
|
add_index :settings, [ :thing_type, :thing_id, :var ], :unique => true
|
43
|
+
add_index :settings, :var, unique: true, where: "thing_id IS NULL AND thing_type is NULL"
|
40
44
|
|
41
45
|
create_table :preferences do |t|
|
42
46
|
t.string :var, :null => false
|
43
47
|
t.text :value, :null => true
|
44
48
|
t.integer :thing_id, :null => true
|
45
49
|
t.string :thing_type, :limit => 30, :null => true
|
46
|
-
t.timestamps
|
50
|
+
t.timestamps null: false
|
47
51
|
end
|
48
52
|
add_index :preferences, [ :thing_type, :thing_id, :var ], :unique => true
|
53
|
+
add_index :preferences, :var, unique: true, where: "thing_id IS NULL AND thing_type is NULL"
|
49
54
|
|
50
55
|
create_table :users do |t|
|
51
56
|
t.string :name
|
metadata
CHANGED
@@ -1,83 +1,111 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: setler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Kelly
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-11-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 3.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 3.0.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rails
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 3.0.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 3.0.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: sprockets
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - '='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 3.7.2
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 3.7.2
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
46
60
|
- !ruby/object:Gem::Version
|
47
61
|
version: '0'
|
48
62
|
type: :development
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
|
-
- -
|
66
|
+
- - ">="
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
70
|
+
name: minitest
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
|
-
- -
|
73
|
+
- - ">="
|
60
74
|
- !ruby/object:Gem::Version
|
61
75
|
version: '0'
|
62
76
|
type: :development
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
|
-
- -
|
80
|
+
- - ">="
|
67
81
|
- !ruby/object:Gem::Version
|
68
82
|
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
84
|
+
name: simplecov
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: appraisal
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|
72
100
|
requirements:
|
73
|
-
- -
|
101
|
+
- - ">="
|
74
102
|
- !ruby/object:Gem::Version
|
75
103
|
version: '0'
|
76
104
|
type: :development
|
77
105
|
prerelease: false
|
78
106
|
version_requirements: !ruby/object:Gem::Requirement
|
79
107
|
requirements:
|
80
|
-
- -
|
108
|
+
- - ">="
|
81
109
|
- !ruby/object:Gem::Version
|
82
110
|
version: '0'
|
83
111
|
description: Setler is a Gem that lets one easily implement the "Feature Flags" pattern,
|
@@ -91,15 +119,22 @@ executables: []
|
|
91
119
|
extensions: []
|
92
120
|
extra_rdoc_files: []
|
93
121
|
files:
|
94
|
-
- .gitignore
|
95
|
-
- .ruby-gemset
|
96
|
-
- .ruby-version
|
97
|
-
- .travis.yml
|
122
|
+
- ".gitignore"
|
123
|
+
- ".ruby-gemset"
|
124
|
+
- ".ruby-version"
|
125
|
+
- ".travis.yml"
|
126
|
+
- Appraisals
|
98
127
|
- Gemfile
|
99
128
|
- MIT-LICENSE
|
100
129
|
- README.rdoc
|
101
130
|
- Rakefile
|
102
131
|
- contributors.txt
|
132
|
+
- gemfiles/rails_4.gemfile
|
133
|
+
- gemfiles/rails_4.gemfile.lock
|
134
|
+
- gemfiles/rails_5.gemfile
|
135
|
+
- gemfiles/rails_5.gemfile.lock
|
136
|
+
- gemfiles/rails_6_edge.gemfile
|
137
|
+
- gemfiles/rails_6_edge.gemfile.lock
|
103
138
|
- lib/generators/setler/setler_generator.rb
|
104
139
|
- lib/generators/setler/templates/migration.rb
|
105
140
|
- lib/generators/setler/templates/model.rb
|
@@ -113,26 +148,26 @@ files:
|
|
113
148
|
- test/settings_test.rb
|
114
149
|
- test/test_helper.rb
|
115
150
|
homepage: https://github.com/ckdake/setler
|
116
|
-
licenses:
|
151
|
+
licenses:
|
152
|
+
- MIT
|
117
153
|
metadata: {}
|
118
|
-
post_install_message:
|
154
|
+
post_install_message:
|
119
155
|
rdoc_options: []
|
120
156
|
require_paths:
|
121
157
|
- lib
|
122
158
|
required_ruby_version: !ruby/object:Gem::Requirement
|
123
159
|
requirements:
|
124
|
-
- -
|
160
|
+
- - ">="
|
125
161
|
- !ruby/object:Gem::Version
|
126
162
|
version: '0'
|
127
163
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
164
|
requirements:
|
129
|
-
- -
|
165
|
+
- - ">="
|
130
166
|
- !ruby/object:Gem::Version
|
131
167
|
version: '0'
|
132
168
|
requirements: []
|
133
|
-
|
134
|
-
|
135
|
-
signing_key:
|
169
|
+
rubygems_version: 3.2.22
|
170
|
+
signing_key:
|
136
171
|
specification_version: 4
|
137
172
|
summary: Settler lets you use the 'Feature Flags' pettern or add settings to models.
|
138
173
|
test_files:
|