golden-setting 0.1.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.
Files changed (50) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +198 -0
  6. data/Rakefile +1 -0
  7. data/app/assets/javascripts/golden/setting/settings.js.coffee +8 -0
  8. data/app/assets/stylesheets/golden/setting/settings.css.sass +0 -0
  9. data/app/controllers/golden/setting/settings_controller.rb +65 -0
  10. data/app/helpers/golden/setting/settings_helper.rb +52 -0
  11. data/app/models/concerns/golden/setting/resourced.rb +48 -0
  12. data/app/views/golden/setting/settings/_batch_form.html.erb +24 -0
  13. data/app/views/golden/setting/settings/_form.html.erb +25 -0
  14. data/app/views/golden/setting/settings/_setting.html.erb +18 -0
  15. data/app/views/golden/setting/settings/_table.html.erb +34 -0
  16. data/app/views/golden/setting/settings/edit.html.erb +30 -0
  17. data/app/views/golden/setting/settings/index.html.erb +33 -0
  18. data/app/views/golden/setting/settings/list.html.erb +19 -0
  19. data/app/views/golden/setting/settings/new.html.erb +27 -0
  20. data/app/views/golden/setting/settings/show.html.erb +24 -0
  21. data/config/locales/settings.en.yml +52 -0
  22. data/config/locales/settings.zh-TW.yml +52 -0
  23. data/config/routes.rb +8 -0
  24. data/golden-setting.gemspec +28 -0
  25. data/lib/generators/golden/setting/USAGE +18 -0
  26. data/lib/generators/golden/setting/install_generator.rb +86 -0
  27. data/lib/generators/golden/setting/templates/create_golden_settings.rb +17 -0
  28. data/lib/generators/golden/setting/templates/golden_setting.rb +36 -0
  29. data/lib/generators/golden/setting/templates/setting.rb +3 -0
  30. data/lib/generators/golden/setting/templates/settings.en.yml +15 -0
  31. data/lib/generators/golden/setting/templates/settings.zh-TW.yml +15 -0
  32. data/lib/golden/setting/action.rb +58 -0
  33. data/lib/golden/setting/base.rb +47 -0
  34. data/lib/golden/setting/cache.rb +55 -0
  35. data/lib/golden/setting/engine.rb +16 -0
  36. data/lib/golden/setting/error.rb +38 -0
  37. data/lib/golden/setting/form_option.rb +69 -0
  38. data/lib/golden/setting/group.rb +17 -0
  39. data/lib/golden/setting/name.rb +30 -0
  40. data/lib/golden/setting/resource.rb +44 -0
  41. data/lib/golden/setting/value.rb +67 -0
  42. data/lib/golden/setting/version.rb +5 -0
  43. data/lib/golden/setting.rb +54 -0
  44. data/spec/base_spec.rb +125 -0
  45. data/spec/cache_spec.rb +40 -0
  46. data/spec/resource_spec.rb +72 -0
  47. data/spec/spec_helper.rb +32 -0
  48. data/spec/support/models.rb +15 -0
  49. data/spec/support/schema.rb +26 -0
  50. metadata +194 -0
@@ -0,0 +1,44 @@
1
+ module Golden
2
+ module Setting
3
+ class Resource < Base
4
+ belongs_to :resource
5
+
6
+ class << self
7
+ def bind resource
8
+ @resource = resource
9
+ self
10
+ end
11
+
12
+ def unbind
13
+ @resource = nil
14
+ self
15
+ end
16
+
17
+ def with_resource resource = @resource
18
+ where(resource_type: resource.class.name).
19
+ where(resource_id: resource.id)
20
+ end
21
+
22
+ def named name, resource = @resource
23
+ with_resource(resource).where(name: name)
24
+ end
25
+
26
+ def object name, resource = @resource
27
+ named(name, resource).first
28
+ end
29
+
30
+ def new_object name, resource = @resource
31
+ named(name, resource).new
32
+ end
33
+
34
+ def first_or_new_object name, resource = @resource
35
+ named(name, resource).first_or_initialize
36
+ end
37
+
38
+ def select_object fields = %w{name value}, resource = @resource
39
+ with_resource(resource).select(fields)
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,67 @@
1
+ module Golden
2
+ module Setting
3
+ module Value
4
+ extend ActiveSupport::Concern
5
+ included do
6
+ cattr_accessor :defaults
7
+ @@defaults = {}.with_indifferent_access
8
+ end
9
+
10
+ module ClassMethods
11
+ def object name
12
+ raise Error::SettingNoMethod, :object unless defined? super
13
+ super name
14
+ end
15
+
16
+ def new_object name
17
+ raise Error::SettingNoMethod, :new_object unless defined? super
18
+ super name
19
+ end
20
+
21
+ def first_or_new_object name
22
+ raise Error::SettingNoMethod, :first_or_new_object unless defined? super
23
+ super name
24
+ end
25
+
26
+ def [] name
27
+ record = object(name)
28
+ record ? record.value : defaults[name.to_sym]
29
+ end
30
+
31
+ def []= name, value
32
+ record = first_or_new_object(name)
33
+ if record.value != value
34
+ record.value = value
35
+ record.save!
36
+ end
37
+ value
38
+ end
39
+
40
+ def is_true? name
41
+ raise Error::SettingNoMethod, :is_true? unless defined? super
42
+ super
43
+ end
44
+
45
+ def save_default name, value
46
+ return unless self[name].nil?
47
+ record = first_or_new_object(name)
48
+ if record.value != value
49
+ record.group ||= Golden::Setting.default_group
50
+ record.value = value
51
+ record.save!
52
+ end
53
+ value
54
+ end
55
+ end
56
+
57
+ def value
58
+ return if self[:value].nil?
59
+ YAML::load self[:value]
60
+ end
61
+
62
+ def value= new_value
63
+ self[:value] = new_value.to_yaml
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,5 @@
1
+ module Golden
2
+ module Setting
3
+ VERSION = '0.1.0'
4
+ end
5
+ end
@@ -0,0 +1,54 @@
1
+ require 'golden/setting/version'
2
+
3
+ module Golden
4
+ module Setting
5
+ mattr_accessor :setting_class
6
+ @@setting_class = 'Setting'
7
+
8
+ mattr_accessor :table_name
9
+ @@table_name = 'golden_settings'
10
+
11
+ mattr_accessor :field_types
12
+ @@field_types = [
13
+ ['string', :string],
14
+ ['boolean', :boolean],
15
+ ['select', :select],
16
+ ['radio_buttons', :radio_buttons],
17
+ ['check_boxes', :check_boxes]
18
+ ]
19
+
20
+ mattr_accessor :groups
21
+ @@groups = []
22
+
23
+ mattr_accessor :default_group
24
+ @@default_group = ''
25
+
26
+ mattr_accessor :group_delimiter
27
+ @@group_delimiter = '.'
28
+
29
+ mattr_accessor :skip_groups_method
30
+ @@skip_groups_method = nil
31
+
32
+ mattr_accessor :skip_settings
33
+ @@skip_settings = []
34
+
35
+ mattr_accessor :default_tab
36
+ @@default_tab = ''
37
+
38
+ def self.configure
39
+ yield self
40
+ end
41
+ end
42
+ end
43
+
44
+ require 'golden/setting/error'
45
+ require 'golden/setting/group'
46
+ require 'golden/setting/name'
47
+ require 'golden/setting/value'
48
+ require 'golden/setting/form_option'
49
+ require 'golden/setting/action'
50
+ require 'golden/setting/base'
51
+ require 'golden/setting/cache'
52
+ require 'golden/setting/resource'
53
+
54
+ require 'golden/setting/engine'
data/spec/base_spec.rb ADDED
@@ -0,0 +1,125 @@
1
+ require 'spec_helper'
2
+
3
+ describe Golden::Setting::Base do
4
+ let(:golden) { '#F2BE45' }
5
+ let(:red) { '#C83C23' }
6
+ let(:now) { Time.now }
7
+ let(:languages) { %w(ruby html css javascript) }
8
+ let(:cart) { {pencil: 5, rubber: 2, book: languages} }
9
+ let(:cart_item) { {icecream: 3} }
10
+ let(:layout) { {'layout.color' => red, 'layout.background-color' => golden} }
11
+
12
+ context 'Value Type' do
13
+ it 'can deal with String value' do
14
+ Setting.color = golden
15
+ Setting.color.should eq golden
16
+ Setting.color.class.should be String
17
+ end
18
+
19
+ it 'can deal with true value' do
20
+ Setting.editable = true
21
+ Setting.editable.should eq true
22
+ Setting.editable.class.should be TrueClass
23
+ end
24
+
25
+ it 'can deal with false value' do
26
+ Setting.editable = false
27
+ Setting.editable.should eq false
28
+ Setting.editable.class.should be FalseClass
29
+ end
30
+
31
+ it 'can deal with Symbol value' do
32
+ Setting.background = :golden
33
+ Setting.background.should eq :golden
34
+ Setting.background.class.should be Symbol
35
+ end
36
+
37
+ it 'can deal with Time value' do
38
+ Setting.booted_at = now
39
+ Setting.booted_at.should eq now
40
+ Setting.booted_at.class.should be Time
41
+ end
42
+
43
+ it 'can deal with Array value' do
44
+ Setting.languages = languages
45
+ Setting.languages.should eq languages
46
+ Setting.languages.class.should be Array
47
+ end
48
+
49
+ it 'can deal with Hash value' do
50
+ Setting.shopping = cart
51
+ Setting.shopping.should eq cart
52
+ Setting.shopping.class.should be Hash
53
+ end
54
+ end
55
+
56
+ context 'Naming' do
57
+ it 'can deal with complex name' do
58
+ Setting['layout.color'] = red
59
+ Setting['layout.color'].should eq red
60
+ Setting['layout.background-color'] = golden
61
+ Setting['layout.background-color'].should eq golden
62
+ end
63
+ end
64
+
65
+ context 'Action' do
66
+ before :each do
67
+ Setting.destroy_all
68
+ end
69
+
70
+ it 'can merge hash values' do
71
+ Setting.shopping = cart
72
+ Setting.merge! 'shopping', cart_item
73
+ Setting.shopping.should_not eq cart
74
+ Setting.shopping.should eq cart.merge(cart_item)
75
+ end
76
+
77
+ it 'can list settings' do
78
+ Setting.count.should eq 0
79
+ Setting.languages = languages
80
+ Setting['layout.color'] = red
81
+ Setting['layout.background-color'] = golden
82
+ Setting.count.should eq 3
83
+ Setting.all.count.should eq 3
84
+ Setting.list('layout.').count.should eq 2
85
+ Setting.list('layout.').should eq layout
86
+ end
87
+
88
+ it 'can destory a setting' do
89
+ Setting.languages = languages
90
+ Setting.count.should eq 1
91
+ Setting.destroy :languages
92
+ Setting.languages.should eq nil
93
+ Setting.count.should eq 0
94
+ end
95
+ end
96
+
97
+ context 'Default' do
98
+ before :each do
99
+ Setting.destroy_all
100
+ end
101
+
102
+ after :each do
103
+ Setting.defaults = {}.with_indifferent_access
104
+ end
105
+
106
+ it 'can deal with default value' do
107
+ Setting.respond_to?(:defaults).should be true
108
+ Setting.color.should eq nil
109
+ Setting.defaults[:color] = golden
110
+ Setting.color.should eq golden
111
+ Setting.count.should eq 0
112
+ end
113
+
114
+ it 'can save default value with default group' do
115
+ # Golden::Setting.default_group = 'theme'
116
+ Setting.respond_to?(:save_default).should be true
117
+ Setting.color.should eq nil
118
+ Setting.save_default :color, golden
119
+ Setting.named(:color).count.should eq 1
120
+ Setting.object(:color).value.should eq golden
121
+ Setting.object(:color).group.should eq Golden::Setting.default_group
122
+ Setting.color.should eq golden
123
+ end
124
+ end
125
+ end
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Golden::Setting::Base with Cache' do
4
+ let(:golden) { '#F2BE45' }
5
+ let(:red) { '#C83C23' }
6
+
7
+ context 'Default' do
8
+ before :each do
9
+ CachedSetting.destroy_all
10
+ Rails.cache.clear
11
+ end
12
+
13
+ after :each do
14
+ CachedSetting.defaults = {}.with_indifferent_access
15
+ end
16
+
17
+ it 'can use default value, while cached value of setting is nil' do
18
+ CachedSetting.respond_to?(:defaults).should be true
19
+ CachedSetting.color.should eq nil
20
+ CachedSetting.defaults[:color] = golden
21
+ CachedSetting.color.should eq golden
22
+ CachedSetting.count.should eq 0
23
+ end
24
+
25
+ it 'can save default values, while cached value of setting is nil' do
26
+ CachedSetting.respond_to?(:save_default).should be true
27
+ CachedSetting.named(:color).count.should eq 0
28
+ CachedSetting.color.should be nil
29
+
30
+ CachedSetting.save_default :color, red
31
+ CachedSetting.named(:color).count.should eq 1
32
+ CachedSetting.object(:color).value.should eq red
33
+ CachedSetting.color.should eq red
34
+
35
+ CachedSetting.save_default :color, golden
36
+ CachedSetting.object(:color).value.should eq red
37
+ CachedSetting.color.should eq red
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,72 @@
1
+ require 'spec_helper'
2
+
3
+ describe Golden::Setting::Resource do
4
+ let(:golden) { '#F2BE45' }
5
+ let(:red) { '#C83C23' }
6
+ let(:manager) { Manager.where(email: 'test@example.com').create }
7
+
8
+ context 'Without Cache' do
9
+ before :each do
10
+ Setting.destroy_all
11
+ end
12
+
13
+ it 'can set values only belong to manager' do
14
+ manager.settings.color = golden
15
+ manager.settings.color.should eq golden
16
+
17
+ manager.settings.named(:color).count.should eq 1
18
+ Setting.count.should eq 1
19
+ Setting.named(:color).count.should eq 0
20
+ Setting.color = red
21
+ Setting.named(:color).count.should eq 1
22
+ Setting.count.should eq 2
23
+ manager.settings.named(:color).count.should eq 1
24
+ end
25
+
26
+ it '#object need to #bind user first' do
27
+ manager.settings.color = golden
28
+ manager.settings.color.should eq golden
29
+
30
+ Setting.color.should be nil
31
+ Setting.object(:color).should eq nil
32
+
33
+ # bind would cause such wrong thing
34
+ Golden::Setting::Resource.object(:color).should_not be nil
35
+ Golden::Setting::Resource.object(:color).value.should eq golden
36
+
37
+ Golden::Setting::Resource.bind(manager).color.should eq golden
38
+ Golden::Setting::Resource.bind(manager)[:color].should eq golden
39
+
40
+ Golden::Setting::Resource.object(:color, manager).should_not be nil
41
+ Golden::Setting::Resource.object(:color, manager).value.should eq golden
42
+
43
+ Golden::Setting::Resource.unbind
44
+ end
45
+
46
+ it 'returns a scope of users having any setting' do
47
+ pending
48
+ User.with_settings
49
+ end
50
+
51
+ it 'returns a scope of users having a color setting' do
52
+ pending
53
+ User.with_settings_for('color')
54
+ end
55
+
56
+ it 'returns a scope of users having no setting at all (means user.settings.all == {})' do
57
+ pending
58
+ User.without_settings
59
+ end
60
+
61
+ it 'returns a scope of users having no color setting (means user.settings.color == nil)' do
62
+ pending
63
+ User.without_settings_for('color')
64
+ end
65
+ end
66
+
67
+ context 'With Cache' do
68
+ before :each do
69
+ Setting.destroy_all
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,32 @@
1
+ $LOAD_PATH.unshift File.dirname(__FILE__)
2
+
3
+ require 'active_support/core_ext/module/attribute_accessors'
4
+ require 'active_support/core_ext/hash/indifferent_access'
5
+ require 'active_support/concern'
6
+ require 'action_dispatch'
7
+ module Rails
8
+ class << self
9
+ def env
10
+ @_env ||= 'test'
11
+ end
12
+
13
+ def cache
14
+ @cache ||= ActiveSupport::Cache::MemoryStore.new
15
+ end
16
+ end
17
+ end
18
+ require 'rails/engine'
19
+ require 'rails/railtie'
20
+ require 'active_record'
21
+
22
+ require 'golden/setting'
23
+ Golden::Setting::Engine.config.autoload_paths.each do |path|
24
+ $LOAD_PATH.unshift path
25
+ end
26
+ require 'golden/setting/resourced'
27
+
28
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
29
+
30
+ RSpec.configure do |config|
31
+ config.order = 'random'
32
+ end
@@ -0,0 +1,15 @@
1
+ require 'active_record'
2
+
3
+ class ::Setting < Golden::Setting::Base
4
+ end
5
+
6
+ class ::CachedSetting < Golden::Setting::Base
7
+ include Golden::Setting::Cache
8
+ end
9
+
10
+ class User < ::ActiveRecord::Base
11
+ end
12
+
13
+ class Manager < User
14
+ include Golden::Setting::Resourced
15
+ end
@@ -0,0 +1,26 @@
1
+ require 'active_support/core_ext/logger'
2
+ require 'active_record'
3
+ require 'sqlite3'
4
+
5
+ # ActiveRecord::Base.logger = Logger.new(STDOUT)
6
+ ActiveRecord::Base.configurations = true
7
+ ActiveRecord::Base.establish_connection(
8
+ adapter: 'sqlite3',
9
+ database: ':memory:'
10
+ )
11
+
12
+ ActiveRecord::Schema.verbose = false
13
+ ActiveRecord::Schema.define(version: 1) do
14
+ create_table :golden_settings do |t|
15
+ t.string :group
16
+ t.string :name, null: false
17
+ t.text :value
18
+ t.string :form_options
19
+ t.references :resource, polymorphic: true
20
+ t.timestamps
21
+ end
22
+
23
+ create_table :users do |t|
24
+ t.string :email, null: false
25
+ end
26
+ end
metadata ADDED
@@ -0,0 +1,194 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: golden-setting
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Tse-Ching Ho
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-05-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activerecord
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: 3.2.13
20
+ - - <
21
+ - !ruby/object:Gem::Version
22
+ version: '5'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 3.2.13
30
+ - - <
31
+ - !ruby/object:Gem::Version
32
+ version: '5'
33
+ - !ruby/object:Gem::Dependency
34
+ name: railties
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - '>='
38
+ - !ruby/object:Gem::Version
39
+ version: 3.2.13
40
+ - - <
41
+ - !ruby/object:Gem::Version
42
+ version: '5'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - '>='
48
+ - !ruby/object:Gem::Version
49
+ version: 3.2.13
50
+ - - <
51
+ - !ruby/object:Gem::Version
52
+ version: '5'
53
+ - !ruby/object:Gem::Dependency
54
+ name: bundler
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ~>
58
+ - !ruby/object:Gem::Version
59
+ version: '1.3'
60
+ type: :development
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ~>
65
+ - !ruby/object:Gem::Version
66
+ version: '1.3'
67
+ - !ruby/object:Gem::Dependency
68
+ name: rake
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - '>='
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ type: :development
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - '>='
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ - !ruby/object:Gem::Dependency
82
+ name: rspec
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - '>='
86
+ - !ruby/object:Gem::Version
87
+ version: 2.13.0
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - '>='
93
+ - !ruby/object:Gem::Version
94
+ version: 2.13.0
95
+ - !ruby/object:Gem::Dependency
96
+ name: sqlite3
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - '>='
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ description: Golden Setting persists settings in database and keep alive in cache.
110
+ email:
111
+ - tsechingho@gmail.com
112
+ executables: []
113
+ extensions: []
114
+ extra_rdoc_files: []
115
+ files:
116
+ - .gitignore
117
+ - Gemfile
118
+ - LICENSE.txt
119
+ - README.md
120
+ - Rakefile
121
+ - app/assets/javascripts/golden/setting/settings.js.coffee
122
+ - app/assets/stylesheets/golden/setting/settings.css.sass
123
+ - app/controllers/golden/setting/settings_controller.rb
124
+ - app/helpers/golden/setting/settings_helper.rb
125
+ - app/models/concerns/golden/setting/resourced.rb
126
+ - app/views/golden/setting/settings/_batch_form.html.erb
127
+ - app/views/golden/setting/settings/_form.html.erb
128
+ - app/views/golden/setting/settings/_setting.html.erb
129
+ - app/views/golden/setting/settings/_table.html.erb
130
+ - app/views/golden/setting/settings/edit.html.erb
131
+ - app/views/golden/setting/settings/index.html.erb
132
+ - app/views/golden/setting/settings/list.html.erb
133
+ - app/views/golden/setting/settings/new.html.erb
134
+ - app/views/golden/setting/settings/show.html.erb
135
+ - config/locales/settings.en.yml
136
+ - config/locales/settings.zh-TW.yml
137
+ - config/routes.rb
138
+ - golden-setting.gemspec
139
+ - lib/generators/golden/setting/USAGE
140
+ - lib/generators/golden/setting/install_generator.rb
141
+ - lib/generators/golden/setting/templates/create_golden_settings.rb
142
+ - lib/generators/golden/setting/templates/golden_setting.rb
143
+ - lib/generators/golden/setting/templates/setting.rb
144
+ - lib/generators/golden/setting/templates/settings.en.yml
145
+ - lib/generators/golden/setting/templates/settings.zh-TW.yml
146
+ - lib/golden/setting.rb
147
+ - lib/golden/setting/action.rb
148
+ - lib/golden/setting/base.rb
149
+ - lib/golden/setting/cache.rb
150
+ - lib/golden/setting/engine.rb
151
+ - lib/golden/setting/error.rb
152
+ - lib/golden/setting/form_option.rb
153
+ - lib/golden/setting/group.rb
154
+ - lib/golden/setting/name.rb
155
+ - lib/golden/setting/resource.rb
156
+ - lib/golden/setting/value.rb
157
+ - lib/golden/setting/version.rb
158
+ - spec/base_spec.rb
159
+ - spec/cache_spec.rb
160
+ - spec/resource_spec.rb
161
+ - spec/spec_helper.rb
162
+ - spec/support/models.rb
163
+ - spec/support/schema.rb
164
+ homepage: https://github.com/goldenio/golden-setting
165
+ licenses:
166
+ - MIT
167
+ metadata: {}
168
+ post_install_message:
169
+ rdoc_options: []
170
+ require_paths:
171
+ - lib
172
+ required_ruby_version: !ruby/object:Gem::Requirement
173
+ requirements:
174
+ - - '>='
175
+ - !ruby/object:Gem::Version
176
+ version: '0'
177
+ required_rubygems_version: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - '>='
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ requirements: []
183
+ rubyforge_project:
184
+ rubygems_version: 2.0.0
185
+ signing_key:
186
+ specification_version: 4
187
+ summary: persists settings in database and keep alive in cache.
188
+ test_files:
189
+ - spec/base_spec.rb
190
+ - spec/cache_spec.rb
191
+ - spec/resource_spec.rb
192
+ - spec/spec_helper.rb
193
+ - spec/support/models.rb
194
+ - spec/support/schema.rb