ledermann-rails-settings 2.4.1 → 2.4.2

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: 56218461e173338b8cd2b34d67ba7e0a311520f0
4
- data.tar.gz: e71e1f8c6b46649cc3bbf5f3579aa464aa780fa1
3
+ metadata.gz: d1756804df911c376bd8148e110cc61cb6ddbccd
4
+ data.tar.gz: b60ca60dabb0980b32e4994e23657c50439aee15
5
5
  SHA512:
6
- metadata.gz: dd0f3484d470061f28df5a448163a72da41deecdb9d539ff5ef43002fc5c740333d87736c7e48463dd14d66f9086e5194f4e95027b084102bdcaad1cf63f84c1
7
- data.tar.gz: 27ba22de825494fd3757558692260837a0bbb79e4b954fb30a2f23a8d11d2f7704bf56d4f1b2af293e9c0c3eb726ade13d3941dc3655b8a0ae946550c5e843c5
6
+ metadata.gz: cfdb4f1e2290109d941d192585df3743b11daffa6ca2fbbf8dad83c94063e9a53db886341b5886f3fc917129dc9aa4ecad4661c8eb883773a2048594e2e03ff1
7
+ data.tar.gz: e0079aa1a2e667254c50dbeec82be481f41b024b28e0e2e11860303bd08f78205cb8e45b24abedca935b8521eef3cf91d48da9c9a6828ba0d7d73a455f6c3618
@@ -2,9 +2,9 @@ language: ruby
2
2
  rvm:
3
3
  - 1.9.3
4
4
  - 2.0.0
5
- - 2.1.8
6
- - 2.2.4
7
- - 2.3.0
5
+ - 2.1.10
6
+ - 2.2.5
7
+ - 2.3.1
8
8
  gemfile:
9
9
  - ci/Gemfile-rails-3-1
10
10
  - ci/Gemfile-rails-3-2
@@ -14,10 +14,13 @@ gemfile:
14
14
  - ci/Gemfile-rails-5-0
15
15
  matrix:
16
16
  include:
17
- - rvm: 2.2.4
18
- gemfile: ci/Gemfile-rails-4-2
17
+ - rvm: 2.2.5
18
+ gemfile: ci/Gemfile-rails-4-0
19
+ env: PROTECTED_ATTRIBUTES=true
20
+ - rvm: 2.2.5
21
+ gemfile: ci/Gemfile-rails-4-1
19
22
  env: PROTECTED_ATTRIBUTES=true
20
- - rvm: 2.3.0
23
+ - rvm: 2.2.5
21
24
  gemfile: ci/Gemfile-rails-4-2
22
25
  env: PROTECTED_ATTRIBUTES=true
23
26
  exclude:
@@ -25,15 +28,15 @@ matrix:
25
28
  gemfile: ci/Gemfile-rails-5-0
26
29
  - rvm: 2.0.0
27
30
  gemfile: ci/Gemfile-rails-5-0
28
- - rvm: 2.1.8
31
+ - rvm: 2.1.10
29
32
  gemfile: ci/Gemfile-rails-5-0
30
- - rvm: 2.2.4
33
+ - rvm: 2.2.5
31
34
  gemfile: ci/Gemfile-rails-3-1
32
- - rvm: 2.3.0
35
+ - rvm: 2.3.1
33
36
  gemfile: ci/Gemfile-rails-3-1
34
- - rvm: 2.2.4
37
+ - rvm: 2.2.5
35
38
  gemfile: ci/Gemfile-rails-3-2
36
- - rvm: 2.3.0
39
+ - rvm: 2.3.1
37
40
  gemfile: ci/Gemfile-rails-3-2
38
41
  before_install: gem update bundler
39
42
  sudo: false
@@ -1,6 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'activerecord', '5.0.0.beta3'
3
+ gem 'activerecord', '5.0.0.rc2'
4
4
  gem 'sqlite3'
5
5
  gem 'rake'
6
6
  gem 'rspec'
@@ -1,4 +1,10 @@
1
- class RailsSettingsMigration < ActiveRecord::Migration
1
+ MIGRATION_BASE_CLASS = if ActiveRecord::VERSION::MAJOR >= 5
2
+ ActiveRecord::Migration[5.0]
3
+ else
4
+ ActiveRecord::Migration
5
+ end
6
+
7
+ class RailsSettingsMigration < MIGRATION_BASE_CLASS
2
8
  def self.up
3
9
  create_table :settings do |t|
4
10
  t.string :var, :null => false
@@ -1,3 +1,12 @@
1
+ module RailsSettings
2
+ # In Rails 3, attributes can be protected by `attr_accessible` and `attr_protected`
3
+ # In Rails 4, attributes can be protected by using the gem `protected_attributes`
4
+ # In Rails 5, protecting attributes is obsolete (there are `StrongParameters` only)
5
+ def self.can_protect_attributes?
6
+ (ActiveRecord::VERSION::MAJOR == 3) || defined?(ProtectedAttributes)
7
+ end
8
+ end
9
+
1
10
  require 'rails-settings/setting_object'
2
11
  require 'rails-settings/configuration'
3
12
  require 'rails-settings/base'
@@ -12,7 +12,7 @@ module RailsSettings
12
12
  raise ArgumentError unless var.is_a?(Symbol)
13
13
  raise ArgumentError.new("Unknown key: #{var}") unless self.class.default_settings[var]
14
14
 
15
- if defined?(ProtectedAttributes)
15
+ if RailsSettings.can_protect_attributes?
16
16
  setting_objects.detect { |s| s.var == var.to_s } || setting_objects.build({ :var => var.to_s }, :without_protection => true)
17
17
  else
18
18
  setting_objects.detect { |s| s.var == var.to_s } || setting_objects.build(:var => var.to_s, :target => self)
@@ -15,9 +15,9 @@ module RailsSettings
15
15
 
16
16
  serialize :value, Hash
17
17
 
18
- # attr_protected can not be used here because it touches the database which is not connected yet.
19
- # So allow no attributes and override <tt>#sanitize_for_mass_assignment</tt>
20
- if defined?(ProtectedAttributes)
18
+ if RailsSettings.can_protect_attributes?
19
+ # attr_protected can not be used here because it touches the database which is not connected yet.
20
+ # So allow no attributes and override <tt>#sanitize_for_mass_assignment</tt>
21
21
  attr_accessible
22
22
  end
23
23
 
@@ -25,7 +25,7 @@ module RailsSettings
25
25
  REGEX_GETTER = /\A([a-z]\w+)\Z/i
26
26
 
27
27
  def respond_to?(method_name, include_priv=false)
28
- super || method_name.to_s =~ REGEX_SETTER
28
+ super || method_name.to_s =~ REGEX_SETTER || _setting?(method_name)
29
29
  end
30
30
 
31
31
  def method_missing(method_name, *args, &block)
@@ -45,7 +45,7 @@ module RailsSettings
45
45
  end
46
46
 
47
47
  protected
48
- if defined?(ProtectedAttributes)
48
+ if RailsSettings.can_protect_attributes?
49
49
  # Simulate attr_protected by removing all regular attributes
50
50
  def sanitize_for_mass_assignment(attributes, role = nil)
51
51
  attributes.except('id', 'var', 'value', 'target_id', 'target_type', 'created_at', 'updated_at')
@@ -76,5 +76,9 @@ module RailsSettings
76
76
  def _target_class
77
77
  target_type.constantize
78
78
  end
79
+
80
+ def _setting?(method_name)
81
+ _target_class.default_settings[var.to_sym].keys.include?(method_name.to_s)
82
+ end
79
83
  end
80
84
  end
@@ -1,3 +1,3 @@
1
1
  module RailsSettings
2
- VERSION = '2.4.1'
2
+ VERSION = '2.4.2'
3
3
  end
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  describe RailsSettings::SettingObject do
4
4
  let(:user) { User.create! :name => 'Mr. Pink' }
5
5
 
6
- if defined?(ProtectedAttributes)
6
+ if RailsSettings.can_protect_attributes?
7
7
  let(:new_setting_object) { user.setting_objects.build({ :var => 'dashboard'}, :without_protection => true) }
8
8
  let(:saved_setting_object) { user.setting_objects.create!({ :var => 'dashboard', :value => { 'theme' => 'pink', 'filter' => false}}, :without_protection => true) }
9
9
  else
@@ -52,6 +52,12 @@ describe RailsSettings::SettingObject do
52
52
  expect(new_setting_object.filter).to eq(true)
53
53
  end
54
54
 
55
+ it "should return defaults when using `try`" do
56
+ expect(new_setting_object.try(:theme)).to eq('blue')
57
+ expect(new_setting_object.try(:view)).to eq('monthly')
58
+ expect(new_setting_object.try(:filter)).to eq(true)
59
+ end
60
+
55
61
  it "should store different objects to value hash" do
56
62
  new_setting_object.integer = 42
57
63
  new_setting_object.float = 1.234
@@ -112,7 +118,7 @@ describe RailsSettings::SettingObject do
112
118
  expect(new_setting_object.update_attributes({})).to be_truthy
113
119
  end
114
120
 
115
- if defined?(ProtectedAttributes)
121
+ if RailsSettings.can_protect_attributes?
116
122
  it 'should not allow changing protected attributes' do
117
123
  new_setting_object.update_attributes!(:var => 'calendar', :foo => 42)
118
124
 
@@ -76,7 +76,12 @@ def setup_db
76
76
  ActiveRecord::Base.configurations = YAML.load_file(File.dirname(__FILE__) + '/database.yml')
77
77
  ActiveRecord::Base.establish_connection(:sqlite)
78
78
  ActiveRecord::Migration.verbose = false
79
- puts "Testing with ActiveRecord #{ActiveRecord::VERSION::STRING} #{defined?(ProtectedAttributes) ? 'with' : 'without'} protected_attributes"
79
+
80
+ print "Testing with ActiveRecord #{ActiveRecord::VERSION::STRING}"
81
+ if ActiveRecord::VERSION::MAJOR == 4
82
+ print " #{defined?(ProtectedAttributes) ? 'with' : 'without'} gem `protected_attributes`"
83
+ end
84
+ puts
80
85
 
81
86
  require File.expand_path('../../lib/generators/rails_settings/migration/templates/migration.rb', __FILE__)
82
87
  RailsSettingsMigration.migrate(:up)
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.1
4
+ version: 2.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Georg Ledermann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-13 00:00:00.000000000 Z
11
+ date: 2016-06-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -153,7 +153,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
153
153
  version: '0'
154
154
  requirements: []
155
155
  rubyforge_project:
156
- rubygems_version: 2.6.2
156
+ rubygems_version: 2.6.6
157
157
  signing_key:
158
158
  specification_version: 4
159
159
  summary: Ruby gem to handle settings for ActiveRecord instances by storing them as