settingify 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d60134a199d33fe55c04d10031746387559577d2
4
- data.tar.gz: c0fccd95aa5921ad05350e1f53427131eec5f17a
3
+ metadata.gz: 94d92a3f44c051e69e85ffaec7d69028ec7ed1f8
4
+ data.tar.gz: 0ef9c8d16d8c5fc549fc30ac0867db0b4f6f3339
5
5
  SHA512:
6
- metadata.gz: 17d4af4daf3e64d3e3f0dd0c0cc5abfe9c095213b3aade574fa968805d3c23ce3b0ab1cdd32d6b7133b6e1ad6bdd5dfbe76e3ac13c76b4a77ab779dbbc89ee26
7
- data.tar.gz: 10fd93b652403f8a60ffafa6b14d856369928696fbddad7f7e3177dcd47320b39d39ab224ea420e04f9ef095875791e4761fe89116d5b5ec9204554a770d381f
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.2'
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.2
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,3 @@
1
+ module Settingify
2
+ PrepareSettingsWithoutBlockError = Class.new(StandardError)
3
+ 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
@@ -1,5 +1,7 @@
1
1
  module Settingify
2
- class Reader < Struct.new(:key, :type, :default)
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(key, default).call
17
+ DbReader.new(name, default).call
16
18
  end
17
19
 
18
20
  def db_value
@@ -0,0 +1,4 @@
1
+ module Settingify
2
+ class RepoItem < Struct.new(:name, :type, :default)
3
+ end
4
+ end
@@ -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
@@ -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
@@ -0,0 +1,10 @@
1
+ module Settingify
2
+ module SettingsPreparable
3
+ include DSL
4
+
5
+ def prepare_settings(&block)
6
+ raise Settingify::PrepareSettingsWithoutBlockError, 'Block must be passed!' unless block_given?
7
+ instance_eval(&block)
8
+ end
9
+ end
10
+ end
@@ -1,3 +1,3 @@
1
1
  module Settingify
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
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 :SettingBuilder
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
- extend SettingBuilder
25
- extend SettingsList
27
+ module Builders
28
+ extend ActiveSupport::Autoload
26
29
 
27
- include Constants
30
+ autoload :Group
31
+ end
28
32
 
29
- def self.prepare_settings(&block)
30
- raise 'Block must be passed!' unless block_given?
31
- instance_eval(&block)
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
- Repo.instance.list
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.0.0.beta"
29
- spec.add_development_dependency "rspec-its", "1.0.1"
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::SettingBuilder
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::Repo.instance.clear!
12
+ Settingify::Repos::Settings.instance.clear!
13
13
  SomeBuilder.setting :setting1, default: 'value1'
14
14
  end
15
15
 
16
16
  after do
17
- Settingify::Repo.instance.clear!
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
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe Settingify::RepoItem do
4
+ it { is_expected.to respond_to :name }
5
+ it { is_expected.to respond_to :type }
6
+ it { is_expected.to respond_to :default }
7
+ end
@@ -1,10 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module SomeBuilder
4
- extend Settingify::SettingBuilder
4
+ extend Settingify::DSL
5
5
  end
6
6
 
7
- describe Settingify::Repo do
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::Repo.instance.clear!
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::SettingBuilder
4
+ extend Settingify::DSL
5
5
  end
6
6
 
7
- describe Settingify::SettingBuilder do
8
- describe 'defining settings' do
9
- it 'successfully' do
10
- SomeBuilder.setting(:some_setting)
11
- expect(Settingify.some_setting).to eq ''
12
- end
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
- context 'when default is Integer' do
15
- it 'returns integer value' do
16
- SomeBuilder.setting :some_int_value, type: :integer, default: 12
17
- expect(Settingify.some_int_value).to eq 12
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
@@ -6,7 +6,7 @@ describe Settingify do
6
6
  it 'raises exception' do
7
7
  expect{
8
8
  Settingify.prepare_settings
9
- }.to raise_exception
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::Repo).to receive_message_chain(:instance, :list)
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.3
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: 2015-07-30 00:00:00.000000000 Z
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.0.0.beta
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.0.0.beta
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.1
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.1
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/repo.rb
195
+ - lib/settingify/repo_item.rb
196
+ - lib/settingify/repos/settings.rb
178
197
  - lib/settingify/setting.rb
179
- - lib/settingify/setting_builder.rb
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/repo_spec.rb
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.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/repo_spec.rb
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
@@ -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
@@ -1,4 +0,0 @@
1
- module Settingify
2
- module SettingsList
3
- end
4
- end