settingify 0.0.3 → 0.0.4
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/README.md +39 -2
- data/lib/settingify/builders/group.rb +37 -0
- data/lib/settingify/dsl.rb +31 -0
- data/lib/settingify/errors.rb +3 -0
- data/lib/settingify/group.rb +25 -0
- data/lib/settingify/reader.rb +4 -2
- data/lib/settingify/repo_item.rb +4 -0
- data/lib/settingify/repos/settings.rb +29 -0
- data/lib/settingify/setting.rb +8 -0
- data/lib/settingify/settings_preparable.rb +10 -0
- data/lib/settingify/version.rb +1 -1
- data/lib/settingify.rb +22 -9
- data/settingify.gemspec +3 -2
- data/spec/lib/settingify/db_syncer_spec.rb +3 -3
- data/spec/lib/settingify/group_spec.rb +20 -0
- data/spec/lib/settingify/reader_spec.rb +8 -1
- data/spec/lib/settingify/repo_item_spec.rb +7 -0
- data/spec/lib/settingify/{repo_spec.rb → repos/settings_spec.rb} +4 -4
- data/spec/lib/settingify/setting_builder_spec.rb +23 -11
- data/spec/lib/settingify/setting_spec.rb +17 -0
- data/spec/lib/settingify_spec.rb +31 -2
- metadata +36 -12
- data/lib/settingify/repo.rb +0 -27
- data/lib/settingify/setting_builder.rb +0 -20
- data/lib/settingify/settings_list.rb +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 94d92a3f44c051e69e85ffaec7d69028ec7ed1f8
|
4
|
+
data.tar.gz: 0ef9c8d16d8c5fc549fc30ac0867db0b4f6f3339
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 59aae6e64a0de758d4c6b9ce48793ee44ff16bbea0e79fe422c68d310c540f2517ba5202ec331410178d90d2e91bab3e7f6123134e07ba412d1f0fd2482f2a31
|
7
|
+
data.tar.gz: 266e0dde7325e20dc718b49107048e86e3cca96201a51d38c8613d7c410bd88e74273777e7766bc765b362e829555d56e003a6face19b9b0fa4eb83b46a5407f
|
data/README.md
CHANGED
@@ -16,7 +16,7 @@ rails g active_admin:resource Settingify::Setting
|
|
16
16
|
|
17
17
|
Add this line to your application's Gemfile:
|
18
18
|
|
19
|
-
gem 'settingify', '0.0.
|
19
|
+
gem 'settingify', '0.0.4'
|
20
20
|
|
21
21
|
And then execute:
|
22
22
|
|
@@ -24,7 +24,7 @@ And then execute:
|
|
24
24
|
|
25
25
|
Or install it yourself as:
|
26
26
|
|
27
|
-
$ gem install settingify -v 0.0.
|
27
|
+
$ gem install settingify -v 0.0.4
|
28
28
|
|
29
29
|
### Post installation
|
30
30
|
|
@@ -96,6 +96,43 @@ the DB manually or run built-in rake task:
|
|
96
96
|
bundle exec rake settingify:sync
|
97
97
|
```
|
98
98
|
|
99
|
+
### Identifiing settings
|
100
|
+
|
101
|
+
For some reason, e.g. in admin panel, you need to list all available
|
102
|
+
settings. Also you want to provide humanized title and description for
|
103
|
+
each setting separately. So for this from now `#title` and `#description`
|
104
|
+
on `Settingify::Setting` exists. They provide localized values which can
|
105
|
+
be defined using following key structure:
|
106
|
+
|
107
|
+
```
|
108
|
+
settingify.settings.{KEY}.{title/description}
|
109
|
+
```
|
110
|
+
|
111
|
+
### Grouping settings
|
112
|
+
|
113
|
+
From _v0.0.4_ you can grouping settings. This feature does not affected
|
114
|
+
on API for reading setting, so you must to define uniq setting names
|
115
|
+
even in different groups. Grouping is a quite simple:
|
116
|
+
|
117
|
+
```ruby
|
118
|
+
Settingify.prepare_settings do
|
119
|
+
group :amazon_ses do
|
120
|
+
setting :amazon_ses_client_id
|
121
|
+
end
|
122
|
+
end
|
123
|
+
```
|
124
|
+
|
125
|
+
By calling `Settingify.groups` you can get all defined groups. For each
|
126
|
+
group you can get it's `#title` and defined `#settings` in concrete
|
127
|
+
group. Title is localized and key has the following structure:
|
128
|
+
|
129
|
+
```
|
130
|
+
settingify.groups.{KEY}.title
|
131
|
+
```
|
132
|
+
|
133
|
+
Grouping was coming mainly for to be able to more clear render settings
|
134
|
+
in admin panel but also with keeping in mind about next enhancements.
|
135
|
+
|
99
136
|
## Contributing
|
100
137
|
|
101
138
|
1. Fork it ( https://github.com/alterego-labs/settingify/fork )
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Settingify
|
2
|
+
module Builders
|
3
|
+
class Group < Struct.new(:name, :block)
|
4
|
+
include SettingsPreparable
|
5
|
+
|
6
|
+
def self.call(*opts, &block)
|
7
|
+
new(*opts).call(&block)
|
8
|
+
end
|
9
|
+
|
10
|
+
def call(&block)
|
11
|
+
self.prepare_settings(&block)
|
12
|
+
end
|
13
|
+
|
14
|
+
def setting(name, type: String, default: '')
|
15
|
+
attach_to_group(name)
|
16
|
+
super
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def attach_to_group(setting_key)
|
22
|
+
group = fetch_group
|
23
|
+
group.add setting_key
|
24
|
+
end
|
25
|
+
|
26
|
+
def fetch_group
|
27
|
+
Settingify.groups.find { |g| g.key == self.name } || define_new_group
|
28
|
+
end
|
29
|
+
|
30
|
+
def define_new_group
|
31
|
+
group = Settingify::Group.new(name)
|
32
|
+
Settingify.groups << group
|
33
|
+
group
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Settingify
|
2
|
+
module DSL
|
3
|
+
def setting(name, type: String, default: '')
|
4
|
+
setting_item = build_setting_item(name, type, default)
|
5
|
+
register_setting setting_item
|
6
|
+
define_setting setting_item
|
7
|
+
end
|
8
|
+
|
9
|
+
def group(name, &block)
|
10
|
+
Builders::Group.call(name, &block)
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def build_setting_item(name, type, default)
|
16
|
+
RepoItem.new(name, type, default)
|
17
|
+
end
|
18
|
+
|
19
|
+
def define_setting(setting_item)
|
20
|
+
Settingify.singleton_class.instance_eval do
|
21
|
+
define_method setting_item.name do
|
22
|
+
Reader.new(setting_item).call
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def register_setting(setting_item)
|
28
|
+
Settingify::Repos::Settings.instance.add setting_item
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Settingify
|
2
|
+
class Group
|
3
|
+
attr_reader :key, :setting_keys
|
4
|
+
|
5
|
+
def initialize(key)
|
6
|
+
@setting_keys = []
|
7
|
+
@key = key
|
8
|
+
end
|
9
|
+
|
10
|
+
def add(setting_key)
|
11
|
+
@setting_keys = @setting_keys
|
12
|
+
.insert(-1, setting_key.to_sym)
|
13
|
+
.uniq
|
14
|
+
self
|
15
|
+
end
|
16
|
+
|
17
|
+
def title
|
18
|
+
I18n.t("settingify.groups.#{key}.title", self.key.to_s.humanize)
|
19
|
+
end
|
20
|
+
|
21
|
+
def settings
|
22
|
+
::Settingify::Setting.where(key: setting_keys)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/settingify/reader.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
module Settingify
|
2
|
-
class Reader < Struct.new(:
|
2
|
+
class Reader < Struct.new(:setting_item)
|
3
|
+
delegate :name, :type, :default, to: :setting_item
|
4
|
+
|
3
5
|
def call
|
4
6
|
return default unless table_exists?
|
5
7
|
Caster.new(type, db_value).call
|
@@ -12,7 +14,7 @@ module Settingify
|
|
12
14
|
end
|
13
15
|
|
14
16
|
def db_setting
|
15
|
-
DbReader.new(
|
17
|
+
DbReader.new(name, default).call
|
16
18
|
end
|
17
19
|
|
18
20
|
def db_value
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'singleton'
|
2
|
+
|
3
|
+
module Settingify
|
4
|
+
module Repos
|
5
|
+
class Settings
|
6
|
+
include Singleton
|
7
|
+
|
8
|
+
def list
|
9
|
+
@settings_list ||= []
|
10
|
+
@settings_list
|
11
|
+
end
|
12
|
+
|
13
|
+
def add(item)
|
14
|
+
list << item
|
15
|
+
end
|
16
|
+
|
17
|
+
def clear!
|
18
|
+
list.each(&method(:undef_method_for))
|
19
|
+
list.clear
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def undef_method_for(item)
|
25
|
+
Settingify.singleton_class.send :remove_method, item.name
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/settingify/setting.rb
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
module Settingify
|
2
2
|
class Setting < ActiveRecord::Base
|
3
3
|
self.table_name_prefix = 'settingify_'
|
4
|
+
|
5
|
+
def title
|
6
|
+
I18n.t("settingify.settings.#{self.key}.title", self.key.to_s.humanize)
|
7
|
+
end
|
8
|
+
|
9
|
+
def description
|
10
|
+
I18n.t("settingify.settings.#{self.key}.description", "Description for #{self.key} setting...")
|
11
|
+
end
|
4
12
|
end
|
5
13
|
end
|
data/lib/settingify/version.rb
CHANGED
data/lib/settingify.rb
CHANGED
@@ -5,33 +5,46 @@ require 'active_support/core_ext/module'
|
|
5
5
|
require "settingify/version"
|
6
6
|
|
7
7
|
require 'settingify/railtie' if defined?(Rails)
|
8
|
+
require 'settingify/errors'
|
8
9
|
|
9
10
|
module Settingify
|
10
11
|
extend ActiveSupport::Autoload
|
11
12
|
|
12
13
|
autoload :ContractExt
|
13
14
|
autoload :Setting
|
14
|
-
autoload :
|
15
|
-
autoload :SettingsList
|
15
|
+
autoload :DSL
|
16
16
|
autoload :Reader
|
17
17
|
autoload :Caster
|
18
18
|
autoload :DbReader
|
19
19
|
autoload :ActiveRecordHelpers
|
20
20
|
autoload :Constants
|
21
21
|
autoload :Repo
|
22
|
+
autoload :RepoItem
|
22
23
|
autoload :DbSyncer
|
24
|
+
autoload :SettingsPreparable
|
25
|
+
autoload :Group
|
23
26
|
|
24
|
-
|
25
|
-
|
27
|
+
module Builders
|
28
|
+
extend ActiveSupport::Autoload
|
26
29
|
|
27
|
-
|
30
|
+
autoload :Group
|
31
|
+
end
|
28
32
|
|
29
|
-
|
30
|
-
|
31
|
-
|
33
|
+
module Repos
|
34
|
+
extend ActiveSupport::Autoload
|
35
|
+
|
36
|
+
autoload :Settings
|
32
37
|
end
|
33
38
|
|
39
|
+
extend SettingsPreparable
|
40
|
+
|
41
|
+
include Constants
|
42
|
+
|
34
43
|
def self.registered_settings
|
35
|
-
|
44
|
+
Repos::Settings.instance.list
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.groups
|
48
|
+
@_groups ||= []
|
36
49
|
end
|
37
50
|
end
|
data/settingify.gemspec
CHANGED
@@ -25,8 +25,9 @@ Gem::Specification.new do |spec|
|
|
25
25
|
|
26
26
|
spec.add_development_dependency "bundler", "~> 1.6"
|
27
27
|
spec.add_development_dependency "rake"
|
28
|
-
spec.add_development_dependency "rspec", "~> 3.
|
29
|
-
spec.add_development_dependency "rspec-its", "1.0
|
28
|
+
spec.add_development_dependency "rspec", "~> 3.4.0"
|
29
|
+
spec.add_development_dependency "rspec-its", "1.2.0"
|
30
30
|
spec.add_development_dependency "pry-nav", "0.2.3"
|
31
31
|
spec.add_development_dependency 'sqlite3'
|
32
|
+
spec.add_development_dependency 'json', '1.8.3'
|
32
33
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
module SomeBuilder
|
4
|
-
extend Settingify::
|
4
|
+
extend Settingify::DSL
|
5
5
|
end
|
6
6
|
|
7
7
|
describe Settingify::DbSyncer do
|
@@ -9,12 +9,12 @@ describe Settingify::DbSyncer do
|
|
9
9
|
|
10
10
|
before do
|
11
11
|
Settingify::Setting.delete_all
|
12
|
-
Settingify::
|
12
|
+
Settingify::Repos::Settings.instance.clear!
|
13
13
|
SomeBuilder.setting :setting1, default: 'value1'
|
14
14
|
end
|
15
15
|
|
16
16
|
after do
|
17
|
-
Settingify::
|
17
|
+
Settingify::Repos::Settings.instance.clear!
|
18
18
|
end
|
19
19
|
|
20
20
|
context 'when setting does not exists in db' do
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Settingify::Group do
|
4
|
+
subject(:group) { described_class.new(:test_group) }
|
5
|
+
|
6
|
+
describe '#title' do
|
7
|
+
it 'provides localized title' do
|
8
|
+
expect(I18n).to receive(:t)
|
9
|
+
group.title
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '#add' do
|
14
|
+
it 'adds setting by key into group' do
|
15
|
+
group.add :grouped_setting
|
16
|
+
setting_keys = group.instance_variable_get("@setting_keys")
|
17
|
+
expect(setting_keys).to include(:grouped_setting)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -1,13 +1,20 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Settingify::Reader do
|
4
|
+
subject(:reader) { described_class.new(setting_item) }
|
5
|
+
|
6
|
+
let(:setting_item) { Settingify::RepoItem.new(key, type, default) }
|
7
|
+
|
4
8
|
let(:key) { 'reader_setting' }
|
5
9
|
let(:type) { String }
|
6
10
|
let(:default) { 'reader_value' }
|
7
11
|
|
8
|
-
subject(:reader) { described_class.new(key, type, default) }
|
9
12
|
|
10
13
|
context 'when table does not exists' do
|
14
|
+
before do
|
15
|
+
expect(reader).to receive(:table_exists?).and_return false
|
16
|
+
end
|
17
|
+
|
11
18
|
it 'returns default value' do
|
12
19
|
expect(reader.call).to eq default
|
13
20
|
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
module SomeBuilder
|
4
|
-
extend Settingify::
|
4
|
+
extend Settingify::DSL
|
5
5
|
end
|
6
6
|
|
7
|
-
describe Settingify::
|
7
|
+
describe Settingify::Repos::Settings do
|
8
8
|
subject(:repo) { described_class.send :new }
|
9
9
|
|
10
10
|
describe '#list' do
|
@@ -33,7 +33,7 @@ describe Settingify::Repo do
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
-
describe '#clear' do
|
36
|
+
describe '#clear!' do
|
37
37
|
before do
|
38
38
|
SomeBuilder.setting(:for_clear_setting)
|
39
39
|
end
|
@@ -41,7 +41,7 @@ describe Settingify::Repo do
|
|
41
41
|
it 'removes all settings' do
|
42
42
|
expect(Settingify).to respond_to :for_clear_setting
|
43
43
|
expect(Settingify.registered_settings).to_not be_empty
|
44
|
-
Settingify::
|
44
|
+
Settingify::Repos::Settings.instance.clear!
|
45
45
|
expect(Settingify).to_not respond_to :for_clear_setting
|
46
46
|
expect(Settingify.registered_settings).to be_empty
|
47
47
|
end
|
@@ -1,21 +1,33 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
module SomeBuilder
|
4
|
-
extend Settingify::
|
4
|
+
extend Settingify::DSL
|
5
5
|
end
|
6
6
|
|
7
|
-
describe Settingify::
|
8
|
-
describe '
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
7
|
+
describe Settingify::DSL do
|
8
|
+
describe '#setting' do
|
9
|
+
describe 'defining settings' do
|
10
|
+
it 'successfully' do
|
11
|
+
SomeBuilder.setting(:some_setting)
|
12
|
+
expect(Settingify.some_setting).to eq ''
|
13
|
+
end
|
13
14
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
15
|
+
context 'when default is Integer' do
|
16
|
+
it 'returns integer value' do
|
17
|
+
SomeBuilder.setting :some_int_value, type: :integer, default: 12
|
18
|
+
expect(Settingify.some_int_value).to eq 12
|
19
|
+
end
|
18
20
|
end
|
19
21
|
end
|
20
22
|
end
|
23
|
+
|
24
|
+
describe '#group' do
|
25
|
+
let(:block) { ->{ } }
|
26
|
+
|
27
|
+
it 'calls group builder properly' do
|
28
|
+
expect(Settingify::Builders::Group).to receive(:call).with(:another_group)
|
29
|
+
|
30
|
+
SomeBuilder.group :another_group, &block
|
31
|
+
end
|
32
|
+
end
|
21
33
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Settingify::Setting do
|
4
|
+
subject(:setting) { described_class.new(key: :cool_setting) }
|
5
|
+
|
6
|
+
describe '#title' do
|
7
|
+
it 'returns setting title' do
|
8
|
+
expect(setting.title).to_not be_blank
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe '#description' do
|
13
|
+
it 'returns setting description' do
|
14
|
+
expect(setting.description).to_not be_blank
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/spec/lib/settingify_spec.rb
CHANGED
@@ -6,7 +6,7 @@ describe Settingify do
|
|
6
6
|
it 'raises exception' do
|
7
7
|
expect{
|
8
8
|
Settingify.prepare_settings
|
9
|
-
}.to
|
9
|
+
}.to raise_error(Settingify::PrepareSettingsWithoutBlockError)
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
@@ -22,8 +22,37 @@ describe Settingify do
|
|
22
22
|
|
23
23
|
describe '.registered_settings' do
|
24
24
|
it 'calls list on repo' do
|
25
|
-
expect(Settingify::
|
25
|
+
expect(Settingify::Repos::Settings).to receive_message_chain(:instance, :list)
|
26
26
|
Settingify.registered_settings
|
27
27
|
end
|
28
28
|
end
|
29
|
+
|
30
|
+
context 'real testing' do
|
31
|
+
before(:each) do
|
32
|
+
Settingify::Repos::Settings.instance.clear!
|
33
|
+
end
|
34
|
+
|
35
|
+
describe 'grouped settings' do
|
36
|
+
before(:each) do
|
37
|
+
Settingify.prepare_settings do
|
38
|
+
setting :ungrouped_setting
|
39
|
+
|
40
|
+
group :group1 do
|
41
|
+
setting :grouped_setting, default: :grouped_value
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'defines grouped setting as well as ungrouped one' do
|
47
|
+
expect(Settingify).to respond_to(:ungrouped_setting)
|
48
|
+
expect(Settingify).to respond_to(:grouped_setting)
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'defines new group' do
|
52
|
+
expect(Settingify.groups.count).to eq 1
|
53
|
+
group = Settingify.groups.first
|
54
|
+
expect(group.key).to eq :group1
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
29
58
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: settingify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sergey Gernyak
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -100,28 +100,28 @@ dependencies:
|
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 3.
|
103
|
+
version: 3.4.0
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 3.
|
110
|
+
version: 3.4.0
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: rspec-its
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - '='
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 1.0
|
117
|
+
version: 1.2.0
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - '='
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 1.0
|
124
|
+
version: 1.2.0
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: pry-nav
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -150,6 +150,20 @@ dependencies:
|
|
150
150
|
- - ">="
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: json
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - '='
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: 1.8.3
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - '='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: 1.8.3
|
153
167
|
description: System for managing global settings trough database
|
154
168
|
email:
|
155
169
|
- sergeg1990@gmail.com
|
@@ -167,25 +181,32 @@ files:
|
|
167
181
|
- lib/generators/settingify/install/templates/settingify.rb
|
168
182
|
- lib/settingify.rb
|
169
183
|
- lib/settingify/active_record_helpers.rb
|
184
|
+
- lib/settingify/builders/group.rb
|
170
185
|
- lib/settingify/caster.rb
|
171
186
|
- lib/settingify/constants.rb
|
172
187
|
- lib/settingify/contract_ext.rb
|
173
188
|
- lib/settingify/db_reader.rb
|
174
189
|
- lib/settingify/db_syncer.rb
|
190
|
+
- lib/settingify/dsl.rb
|
191
|
+
- lib/settingify/errors.rb
|
192
|
+
- lib/settingify/group.rb
|
175
193
|
- lib/settingify/railtie.rb
|
176
194
|
- lib/settingify/reader.rb
|
177
|
-
- lib/settingify/
|
195
|
+
- lib/settingify/repo_item.rb
|
196
|
+
- lib/settingify/repos/settings.rb
|
178
197
|
- lib/settingify/setting.rb
|
179
|
-
- lib/settingify/
|
180
|
-
- lib/settingify/settings_list.rb
|
198
|
+
- lib/settingify/settings_preparable.rb
|
181
199
|
- lib/settingify/tasks/settingify.rake
|
182
200
|
- lib/settingify/version.rb
|
183
201
|
- settingify.gemspec
|
184
202
|
- spec/db/schema.rb
|
185
203
|
- spec/lib/settingify/db_syncer_spec.rb
|
204
|
+
- spec/lib/settingify/group_spec.rb
|
186
205
|
- spec/lib/settingify/reader_spec.rb
|
187
|
-
- spec/lib/settingify/
|
206
|
+
- spec/lib/settingify/repo_item_spec.rb
|
207
|
+
- spec/lib/settingify/repos/settings_spec.rb
|
188
208
|
- spec/lib/settingify/setting_builder_spec.rb
|
209
|
+
- spec/lib/settingify/setting_spec.rb
|
189
210
|
- spec/lib/settingify_spec.rb
|
190
211
|
- spec/spec_helper.rb
|
191
212
|
homepage: https://github.com/alterego-labs/settingify
|
@@ -208,15 +229,18 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
208
229
|
version: '0'
|
209
230
|
requirements: []
|
210
231
|
rubyforge_project:
|
211
|
-
rubygems_version: 2.4.
|
232
|
+
rubygems_version: 2.4.8
|
212
233
|
signing_key:
|
213
234
|
specification_version: 4
|
214
235
|
summary: Global setting system for Rails
|
215
236
|
test_files:
|
216
237
|
- spec/db/schema.rb
|
217
238
|
- spec/lib/settingify/db_syncer_spec.rb
|
239
|
+
- spec/lib/settingify/group_spec.rb
|
218
240
|
- spec/lib/settingify/reader_spec.rb
|
219
|
-
- spec/lib/settingify/
|
241
|
+
- spec/lib/settingify/repo_item_spec.rb
|
242
|
+
- spec/lib/settingify/repos/settings_spec.rb
|
220
243
|
- spec/lib/settingify/setting_builder_spec.rb
|
244
|
+
- spec/lib/settingify/setting_spec.rb
|
221
245
|
- spec/lib/settingify_spec.rb
|
222
246
|
- spec/spec_helper.rb
|
data/lib/settingify/repo.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'singleton'
|
2
|
-
|
3
|
-
module Settingify
|
4
|
-
class Repo
|
5
|
-
include Singleton
|
6
|
-
|
7
|
-
def list
|
8
|
-
@settings_list ||= []
|
9
|
-
@settings_list
|
10
|
-
end
|
11
|
-
|
12
|
-
def add(item)
|
13
|
-
list << item
|
14
|
-
end
|
15
|
-
|
16
|
-
def clear!
|
17
|
-
list.each(&method(:undef_method_for))
|
18
|
-
list.clear
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def undef_method_for(item)
|
24
|
-
Settingify::SettingsList.send :remove_method, item.name
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
module Settingify
|
2
|
-
module SettingBuilder
|
3
|
-
def setting(name, type: String, default: '')
|
4
|
-
register_setting name, type, default
|
5
|
-
define_setting name, type, default
|
6
|
-
end
|
7
|
-
|
8
|
-
private
|
9
|
-
|
10
|
-
def define_setting(name, type, default)
|
11
|
-
SettingsList.send :define_method, name do
|
12
|
-
Reader.new(name, type, default).call
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def register_setting(name, type, default)
|
17
|
-
Settingify::Repo.instance.add OpenStruct.new(name: name, type: type, default: default)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|