ledermann-rails-settings 2.4.3 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 54028088f04ee8257a762eb477193f71f0e04b3c6a8eddcbc573c8af673dfeb9
4
- data.tar.gz: 6a7de3c087fa34df61adf6e507763fc614ee3f2e7ee76071aacb1feeff8dfba9
3
+ metadata.gz: d35191c6b15823ec6934c9b66a8cf4291aa552c79bfe1ac6e24b2298a3bf6942
4
+ data.tar.gz: 1dabb6089d5894acc9f16aa57637daded9e9751c590b924fe3a8d3e074e01ac8
5
5
  SHA512:
6
- metadata.gz: d39055f26f4772b7195a58f715948ded863581fbc5801bd05439964fa5ea2cf8b50b59f9947ded0ee01ccfd93e7170fe0951cb24155c4474f4e42cb8fdfaef5c
7
- data.tar.gz: 9594e0e206154db02d57ddcdc14088b678b4bb5c128940da0ac61b59145de372fcd915f7242c87cf6785d63c7f96f96e4623259fdb227842d5d11d2ed957e43c
6
+ metadata.gz: 2556adc7367efd4acd8a208d342d4f485ea356a79b1bac8971785bb2d3ab9ea3d31ec13b2008fe4e58171eb181090e7d7b18f3a242ee220fee9703777c7ca387
7
+ data.tar.gz: b391a6f0c86c8abab56b8b68b20161fbe4981c7d08acfa5766416d097d0c2ada7c77db29182b46b62853f0e822b77cc21ae300b3f42657c50cdebc7d83bdf4a8
@@ -1,74 +1,17 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.3
4
- - 2.0.0
5
- - 2.1.10
6
- - 2.2.9
7
- - 2.3.6
8
- - 2.4.3
9
- - 2.5.0
3
+ - 2.4.6
4
+ - 2.5.5
5
+ - 2.6.3
10
6
  gemfile:
11
- - ci/Gemfile-rails-3-1
12
- - ci/Gemfile-rails-3-2
13
- - ci/Gemfile-rails-4-0
14
- - ci/Gemfile-rails-4-1
15
7
  - ci/Gemfile-rails-4-2
16
8
  - ci/Gemfile-rails-5-0
17
9
  - ci/Gemfile-rails-5-1
18
10
  - ci/Gemfile-rails-5-2
11
+ - ci/Gemfile-rails-6-0
19
12
  matrix:
20
- include:
21
- - rvm: 2.2.9
22
- gemfile: ci/Gemfile-rails-4-0
23
- env: PROTECTED_ATTRIBUTES=true
24
- - rvm: 2.2.9
25
- gemfile: ci/Gemfile-rails-4-1
26
- env: PROTECTED_ATTRIBUTES=true
27
- - rvm: 2.2.9
28
- gemfile: ci/Gemfile-rails-4-2
29
- env: PROTECTED_ATTRIBUTES=true
30
13
  exclude:
31
- - rvm: 1.9.3
32
- gemfile: ci/Gemfile-rails-5-0
33
- - rvm: 1.9.3
34
- gemfile: ci/Gemfile-rails-5-1
35
- - rvm: 1.9.3
36
- gemfile: ci/Gemfile-rails-5-2
37
- - rvm: 2.0.0
38
- gemfile: ci/Gemfile-rails-5-0
39
- - rvm: 2.0.0
40
- gemfile: ci/Gemfile-rails-5-1
41
- - rvm: 2.0.0
42
- gemfile: ci/Gemfile-rails-5-2
43
- - rvm: 2.1.10
44
- gemfile: ci/Gemfile-rails-5-0
45
- - rvm: 2.1.10
46
- gemfile: ci/Gemfile-rails-5-1
47
- - rvm: 2.1.10
48
- gemfile: ci/Gemfile-rails-5-2
49
- - rvm: 2.2.9
50
- gemfile: ci/Gemfile-rails-3-1
51
- - rvm: 2.3.6
52
- gemfile: ci/Gemfile-rails-3-1
53
- - rvm: 2.4.3
54
- gemfile: ci/Gemfile-rails-3-1
55
- - rvm: 2.5.0
56
- gemfile: ci/Gemfile-rails-3-1
57
- - rvm: 2.2.9
58
- gemfile: ci/Gemfile-rails-3-2
59
- - rvm: 2.3.6
60
- gemfile: ci/Gemfile-rails-3-2
61
- - rvm: 2.4.3
62
- gemfile: ci/Gemfile-rails-3-2
63
- - rvm: 2.4.3
64
- gemfile: ci/Gemfile-rails-4-0
65
- - rvm: 2.4.3
66
- gemfile: ci/Gemfile-rails-4-1
67
- - rvm: 2.5.0
68
- gemfile: ci/Gemfile-rails-3-2
69
- - rvm: 2.5.0
70
- gemfile: ci/Gemfile-rails-4-0
71
- - rvm: 2.5.0
72
- gemfile: ci/Gemfile-rails-4-1
14
+ - rvm: 2.4.6
15
+ gemfile: ci/Gemfile-rails-6-0
73
16
  before_install: gem update bundler
74
17
  sudo: false
@@ -1,4 +1,4 @@
1
- Copyright (c) 2012-2018 Georg Ledermann
1
+ Copyright (c) 2012-2019 Georg Ledermann
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -8,8 +8,8 @@ Ruby gem to handle settings for ActiveRecord instances by storing them as serial
8
8
 
9
9
  ## Requirements
10
10
 
11
- * Ruby 1.9.3 or newer
12
- * Rails 3.1 or newer (including Rails 5.2)
11
+ * Ruby 2.4 or newer
12
+ * Rails 4.2 or newer (including Rails 6)
13
13
 
14
14
 
15
15
  ## Installation
@@ -65,6 +65,26 @@ class ProjectSettingObject < RailsSettings::SettingObject
65
65
  end
66
66
  ```
67
67
 
68
+ In case you need to define settings separatedly for the same models, you can use the persistent option
69
+
70
+ ```ruby
71
+ module UserDashboardConcern
72
+ extend ActiveSupport::Concern
73
+
74
+ included do
75
+ has_settings persistent: true do |s|
76
+ s.key :dashboard
77
+ end
78
+ end
79
+ end
80
+
81
+ class User < ActiveRecord::Base
82
+ has_settings persistent: true do |s|
83
+ s.key :calendar
84
+ end
85
+ end
86
+ ```
87
+
68
88
  ### Set settings
69
89
 
70
90
  ```ruby
@@ -79,8 +99,8 @@ or
79
99
 
80
100
  ```ruby
81
101
  user = User.find(1)
82
- user.settings(:dashboard).update_attributes! :theme => 'black'
83
- user.settings(:calendar).update_attributes! :scope => 'all', :display => 'daily'
102
+ user.settings(:dashboard).update! :theme => 'black'
103
+ user.settings(:calendar).update! :scope => 'all', :display => 'daily'
84
104
  ```
85
105
 
86
106
 
@@ -102,7 +122,7 @@ user.settings(:calendar).scope
102
122
 
103
123
  ```ruby
104
124
  user = User.find(1)
105
- user.settings(:dashboard).update_attributes! :theme => nil
125
+ user.settings(:dashboard).update! :theme => nil
106
126
 
107
127
  user.settings(:dashboard).view = nil
108
128
  user.settings(:dashboard).save!
@@ -118,7 +138,7 @@ User.without_settings
118
138
  # => all users without having any setting
119
139
 
120
140
  User.with_settings_for(:calendar)
121
- # => all users having a setting for 'calender'
141
+ # => all users having a setting for 'calendar'
122
142
 
123
143
  User.without_settings_for(:calendar)
124
144
  # => all users without having settings for 'calendar'
@@ -146,6 +166,6 @@ See https://github.com/ledermann/rails-settings/releases
146
166
 
147
167
  MIT License
148
168
 
149
- Copyright (c) 2012-2018 [Georg Ledermann](http://www.georg-ledermann.de)
169
+ Copyright (c) 2012-2019 [Georg Ledermann](http://www.georg-ledermann.de)
150
170
 
151
171
  This gem is a complete rewrite of [rails-settings](https://github.com/Squeegy/rails-settings) by [Alex Wayne](https://github.com/Squeegy)
@@ -1,6 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'activerecord', '~> 4.2.1'
3
+ gem 'activerecord', '~> 4.2.11'
4
4
  gem 'protected_attributes' if ENV['PROTECTED_ATTRIBUTES'] == 'true'
5
+ gem 'sqlite3', '~> 1.3.6'
5
6
 
6
7
  gemspec :path => "../"
@@ -1,5 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'activerecord', '~> 5.0.0'
3
+ gem 'activerecord', '~> 5.0.7'
4
+ gem 'sqlite3', '~> 1.3.6'
4
5
 
5
6
  gemspec :path => "../"
@@ -1,5 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'activerecord', '~> 5.1.0'
3
+ gem 'activerecord', '~> 5.1.7'
4
+ gem "sqlite3", "~> 1.3", ">= 1.3.6"
4
5
 
5
6
  gemspec :path => "../"
@@ -1,5 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'activerecord', '~> 5.2.0.rc1'
3
+ gem 'activerecord', '~> 5.2.3'
4
+ gem "sqlite3", "~> 1.3", ">= 1.3.6"
4
5
 
5
6
  gemspec :path => "../"
@@ -1,5 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'activerecord', '~> 3.1.12'
3
+ gem 'activerecord', '~> 6.0.0'
4
+ gem "sqlite3", "~> 1.4"
4
5
 
5
6
  gemspec :path => "../"
@@ -1,9 +1,8 @@
1
1
  module RailsSettings
2
- # In Rails 3, attributes can be protected by `attr_accessible` and `attr_protected`
3
2
  # In Rails 4, attributes can be protected by using the gem `protected_attributes`
4
3
  # In Rails 5, protecting attributes is obsolete (there are `StrongParameters` only)
5
4
  def self.can_protect_attributes?
6
- (ActiveRecord::VERSION::MAJOR == 3) || defined?(ProtectedAttributes)
5
+ defined?(ProtectedAttributes)
7
6
  end
8
7
  end
9
8
 
@@ -20,4 +19,3 @@ ActiveRecord::Base.class_eval do
20
19
  extend RailsSettings::Scopes
21
20
  end
22
21
  end
23
-
@@ -8,8 +8,15 @@ module RailsSettings
8
8
  raise ArgumentError unless klass
9
9
 
10
10
  @klass = klass
11
- @klass.class_attribute :default_settings, :setting_object_class_name
12
- @klass.default_settings = {}
11
+
12
+ if options[:persistent]
13
+ @klass.class_attribute :default_settings unless @klass.methods.include?(:default_settings)
14
+ else
15
+ @klass.class_attribute :default_settings
16
+ end
17
+
18
+ @klass.class_attribute :setting_object_class_name
19
+ @klass.default_settings ||= {}
13
20
  @klass.setting_object_class_name = options[:class_name] || 'RailsSettings::SettingObject'
14
21
 
15
22
  if block_given?
@@ -1,3 +1,3 @@
1
1
  module RailsSettings
2
- VERSION = '2.4.3'
2
+ VERSION = '2.5.0'
3
3
  end
@@ -12,18 +12,18 @@ Gem::Specification.new do |gem|
12
12
  gem.description = %q{Settings gem for Ruby on Rails}
13
13
  gem.summary = %q{Ruby gem to handle settings for ActiveRecord instances by storing them as serialized Hash in a separate database table. Namespaces and defaults included.}
14
14
  gem.homepage = 'https://github.com/ledermann/rails-settings'
15
- gem.required_ruby_version = '>= 1.9.3'
15
+ gem.required_ruby_version = '>= 2.4'
16
16
 
17
17
  gem.files = `git ls-files`.split($/)
18
18
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
19
19
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
20
20
  gem.require_paths = ['lib']
21
21
 
22
- gem.add_dependency 'activerecord', '>= 3.1'
22
+ gem.add_dependency 'activerecord', '>= 4.2'
23
23
 
24
24
  gem.add_development_dependency 'rake'
25
25
  gem.add_development_dependency 'sqlite3'
26
26
  gem.add_development_dependency 'rspec'
27
27
  gem.add_development_dependency 'coveralls'
28
- gem.add_development_dependency 'simplecov', RUBY_VERSION < '2' ? '~> 0.11.2' : '>= 0.11.2'
28
+ gem.add_development_dependency 'simplecov', '>= 0.11.2'
29
29
  end
@@ -61,6 +61,18 @@ module RailsSettings
61
61
  expect(Dummy.default_settings).to eq({ :dashboard => {}, :calendar => {} })
62
62
  expect(Dummy.setting_object_class_name).to eq('MyClass')
63
63
  end
64
+
65
+ context 'persistent' do
66
+ it "should keep settings between multiple configurations initialization" do
67
+ Configuration.new(Dummy, :persistent => true) do |c|
68
+ c.key :dashboard, :defaults => { :theme => 'red' }
69
+ end
70
+
71
+ Configuration.new(Dummy, :calendar, :persistent => true)
72
+
73
+ expect(Dummy.default_settings).to eq({ :dashboard => { 'theme' => 'red' }, :calendar => {} })
74
+ end
75
+ end
64
76
  end
65
77
 
66
78
  describe Configuration, 'failure' do
@@ -94,7 +94,7 @@ describe 'Queries performed' do
94
94
 
95
95
  it "should update settings by one SQL query" do
96
96
  expect {
97
- user.settings(:dashboard).update_attributes! :foo => 'bar'
97
+ user.settings(:dashboard).update! :foo => 'bar'
98
98
  }.to perform_queries(1)
99
99
  end
100
100
  end
@@ -25,7 +25,7 @@ describe "Serialization" do
25
25
 
26
26
  describe 'updated settings' do
27
27
  it 'should be serialized' do
28
- user.settings(:dashboard).update_attributes! :smart => true
28
+ user.settings(:dashboard).update! :smart => true
29
29
 
30
30
  dashboard_settings = user.setting_objects.where(:var => 'dashboard').first
31
31
  calendar_settings = user.setting_objects.where(:var => 'calendar').first
@@ -103,9 +103,9 @@ describe RailsSettings::SettingObject do
103
103
  end
104
104
  end
105
105
 
106
- describe "update_attributes" do
106
+ describe "update" do
107
107
  it 'should save' do
108
- expect(new_setting_object.update_attributes(:foo => 42, :bar => 'string')).to be_truthy
108
+ expect(new_setting_object.update(:foo => 42, :bar => 'string')).to be_truthy
109
109
  new_setting_object.reload
110
110
 
111
111
  expect(new_setting_object.foo).to eq(42)
@@ -115,12 +115,12 @@ describe RailsSettings::SettingObject do
115
115
  end
116
116
 
117
117
  it 'should not save blank hash' do
118
- expect(new_setting_object.update_attributes({})).to be_truthy
118
+ expect(new_setting_object.update({})).to be_truthy
119
119
  end
120
120
 
121
121
  if RailsSettings.can_protect_attributes?
122
122
  it 'should not allow changing protected attributes' do
123
- new_setting_object.update_attributes!(:var => 'calendar', :foo => 42)
123
+ new_setting_object.update!(:var => 'calendar', :foo => 42)
124
124
 
125
125
  expect(new_setting_object.var).to eq('dashboard')
126
126
  expect(new_setting_object.foo).to eq(42)
@@ -145,7 +145,7 @@ describe "Object without settings" do
145
145
  end
146
146
 
147
147
  it "should add settings" do
148
- user.settings(:dashboard).update_attributes! :smart => true
148
+ user.settings(:dashboard).update! :smart => true
149
149
 
150
150
  user.reload
151
151
  expect(user.settings(:dashboard).smart).to eq(true)
@@ -179,7 +179,7 @@ describe "Object with settings" do
179
179
  end
180
180
 
181
181
  it "should update settings" do
182
- user.settings(:dashboard).update_attributes! :smart => true
182
+ user.settings(:dashboard).update! :smart => true
183
183
  user.reload
184
184
 
185
185
  expect(user.settings(:dashboard).smart).to eq(true)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ledermann-rails-settings
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.3
4
+ version: 2.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Georg Ledermann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-14 00:00:00.000000000 Z
11
+ date: 2019-08-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '3.1'
19
+ version: '4.2'
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
- version: '3.1'
26
+ version: '4.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -107,14 +107,11 @@ files:
107
107
  - MIT-LICENSE
108
108
  - README.md
109
109
  - Rakefile
110
- - ci/Gemfile-rails-3-1
111
- - ci/Gemfile-rails-3-2
112
- - ci/Gemfile-rails-4-0
113
- - ci/Gemfile-rails-4-1
114
110
  - ci/Gemfile-rails-4-2
115
111
  - ci/Gemfile-rails-5-0
116
112
  - ci/Gemfile-rails-5-1
117
113
  - ci/Gemfile-rails-5-2
114
+ - ci/Gemfile-rails-6-0
118
115
  - lib/generators/rails_settings/migration/migration_generator.rb
119
116
  - lib/generators/rails_settings/migration/templates/migration.rb
120
117
  - lib/ledermann-rails-settings.rb
@@ -147,15 +144,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
147
144
  requirements:
148
145
  - - ">="
149
146
  - !ruby/object:Gem::Version
150
- version: 1.9.3
147
+ version: '2.4'
151
148
  required_rubygems_version: !ruby/object:Gem::Requirement
152
149
  requirements:
153
150
  - - ">="
154
151
  - !ruby/object:Gem::Version
155
152
  version: '0'
156
153
  requirements: []
157
- rubyforge_project:
158
- rubygems_version: 2.7.5
154
+ rubygems_version: 3.0.6
159
155
  signing_key:
160
156
  specification_version: 4
161
157
  summary: Ruby gem to handle settings for ActiveRecord instances by storing them as
@@ -1,5 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gem 'activerecord', '~> 3.2.22'
4
-
5
- gemspec :path => "../"
@@ -1,6 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gem 'activerecord', '~> 4.0.13'
4
- gem 'protected_attributes' if ENV['PROTECTED_ATTRIBUTES'] == 'true'
5
-
6
- gemspec :path => "../"
@@ -1,6 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gem 'activerecord', '~> 4.1.10'
4
- gem 'protected_attributes' if ENV['PROTECTED_ATTRIBUTES'] == 'true'
5
-
6
- gemspec :path => "../"