rails-settings-cached 0.2.4 → 0.3.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c8b23098050aa4759654409c3c89868a28f75053
4
+ data.tar.gz: 3aea3f6687a9248d88ff6512130a3646e53c7107
5
+ SHA512:
6
+ metadata.gz: caf5df986fc15f69e417409c6617a3c40026e6d9383d82007970699860a3fcff6390cf6393fe200200256be373c79979c26560d7db1c8e6ba71cdae1be288d5b
7
+ data.tar.gz: a74798f521363fdf8a44a6bbae620b9fca61b56ce29553805416c23bdb5702d6bc15502f2bf5a1339e68fe9a1331e135721de46394c6d700f2782f003f1bbaa2
data/README.md CHANGED
@@ -25,6 +25,14 @@ Generate your settings:
25
25
  $ rails g settings <settings_name>
26
26
  ```
27
27
 
28
+ Note: If you migrating from gem `rails-settings` then make sure you have it in your model
29
+
30
+ ```ruby
31
+ class Settings < RailsSettings::CachedSettings
32
+ ...
33
+ end
34
+ ```
35
+
28
36
  Now just put that migration in the database with:
29
37
 
30
38
  ```bash
@@ -101,7 +109,7 @@ Setting.some_setting
101
109
  Init defualt value in database, this has indifferent with `Setting.defaults[:some_setting]`, this will **save the value into database**:
102
110
 
103
111
  ```ruby
104
- Setting.save_default(:some_key) = "123"
112
+ Setting.save_default(:some_key, "123")
105
113
  Setting.where(:var => "some_key").count
106
114
  => 1
107
115
  Setting.some_key
@@ -1,3 +1,2 @@
1
1
  class <%= class_name %> < RailsSettings::CachedSettings
2
- attr_accessible :var
3
2
  end
@@ -1,18 +1,17 @@
1
1
  module RailsSettings
2
- class CachedSettings < Settings
2
+ class CachedSettings < Settings
3
3
  after_update :rewrite_cache
4
4
  after_create :rewrite_cache
5
- def rewrite_cache
6
- Rails.cache.write("settings:#{self.var}", self.value)
7
- end
5
+ def rewrite_cache
6
+ Rails.cache.write("settings:#{self.var}", self.value)
7
+ end
8
8
 
9
- after_destroy { |record| Rails.cache.delete("settings:#{record.var}") }
9
+ after_destroy { |record| Rails.cache.delete("settings:#{record.var}") }
10
10
 
11
-
12
- def self.[](var_name)
13
- obj = Rails.cache.fetch("settings:#{var_name}") {
14
- super(var_name)
15
- }
11
+ def self.[](var_name)
12
+ obj = Rails.cache.fetch("settings:#{var_name}") {
13
+ super(var_name)
14
+ }
16
15
  obj || @@defaults[var_name.to_s]
17
16
  end
18
17
 
@@ -21,5 +20,5 @@ module RailsSettings
21
20
  self.send("#{key}=",value)
22
21
  end
23
22
  end
24
- end
25
- end
23
+ end
24
+ end
@@ -3,21 +3,29 @@ module RailsSettings
3
3
  extend ActiveSupport::Concern
4
4
 
5
5
  included do
6
- scope :with_settings, :joins => "JOIN settings ON (settings.thing_id = #{self.table_name}.#{self.primary_key} AND
7
- settings.thing_type = '#{self.base_class.name}')",
8
- :select => "DISTINCT #{self.table_name}.*"
6
+ scope :with_settings, -> {
7
+ joins("JOIN settings ON (settings.thing_id = #{self.table_name}.#{self.primary_key} AND
8
+ settings.thing_type = '#{self.base_class.name}')")
9
+ .select("DISTINCT #{self.table_name}.*")
10
+ }
11
+
9
12
 
10
- scope :with_settings_for, lambda { |var| { :joins => "JOIN settings ON (settings.thing_id = #{self.table_name}.#{self.primary_key} AND
11
- settings.thing_type = '#{self.base_class.name}') AND settings.var = '#{var}'" } }
13
+ scope :with_settings_for, -> (var) {
14
+ joins("JOIN settings ON (settings.thing_id = #{self.table_name}.#{self.primary_key} AND
15
+ settings.thing_type = '#{self.base_class.name}') AND settings.var = '#{var}'")
16
+ }
12
17
 
13
- scope :without_settings, :joins => "LEFT JOIN settings ON (settings.thing_id = #{self.table_name}.#{self.primary_key} AND
14
- settings.thing_type = '#{self.base_class.name}')",
15
- :conditions => 'settings.id IS NULL'
18
+ scope :without_settings, -> {
19
+ joins("LEFT JOIN settings ON (settings.thing_id = #{self.table_name}.#{self.primary_key} AND settings.thing_type = '#{self.base_class.name}')")
20
+ .where("settings.id IS NULL")
21
+ }
16
22
 
17
- scope :without_settings_for, lambda { |var| { :joins => "LEFT JOIN settings ON (settings.thing_id = #{self.table_name}.#{self.primary_key} AND
18
- settings.thing_type = '#{self.base_class.name}') AND
19
- settings.var = '#{var}'",
20
- :conditions => 'settings.id IS NULL' } }
23
+ scope :without_settings_for, -> (var) {
24
+ where('settings.id IS NULL')
25
+ .joins("LEFT JOIN settings ON (settings.thing_id = #{self.table_name}.#{self.primary_key} AND
26
+ settings.thing_type = '#{self.base_class.name}') AND settings.var = '#{var}'")
27
+ }
28
+
21
29
  end
22
30
 
23
31
  def settings
@@ -6,7 +6,7 @@ module RailsSettings
6
6
  end
7
7
 
8
8
  def self.thing_scoped
9
- Settings.scoped_by_thing_type_and_thing_id(@object.class.base_class.to_s, @object.id)
9
+ unscoped.where(:thing_type => @object.class.base_class.to_s, :thing_id => @object.id)
10
10
  end
11
11
 
12
12
  end
@@ -2,7 +2,7 @@ module RailsSettings
2
2
  class Settings < ActiveRecord::Base
3
3
 
4
4
  self.table_name = 'settings'
5
- attr_accessible :var
5
+ # attr_accessible :var
6
6
 
7
7
  class SettingNotFound < RuntimeError; end
8
8
 
@@ -18,18 +18,15 @@ module RailsSettings
18
18
  def self.method_missing(method, *args)
19
19
  method_name = method.to_s
20
20
  super(method, *args)
21
-
22
21
  rescue NoMethodError
23
22
  #set a value for a variable
24
23
  if method_name =~ /=$/
25
24
  var_name = method_name.gsub('=', '')
26
25
  value = args.first
27
26
  self[var_name] = value
28
-
29
27
  #retrieve a value
30
28
  else
31
29
  self[method_name]
32
-
33
30
  end
34
31
  end
35
32
 
@@ -45,9 +42,11 @@ module RailsSettings
45
42
  end
46
43
 
47
44
  #retrieve all settings as a hash (optionally starting with a given namespace)
48
- def self.all(starting_with=nil)
49
- options = starting_with ? { :conditions => "var LIKE '#{starting_with}%'"} : {}
50
- vars = thing_scoped.find(:all, {:select => 'var, value'}.merge(options))
45
+ def self.all(starting_with = nil)
46
+ vars = thing_scoped.select("var,value")
47
+ if starting_with
48
+ vars = vars.where("var LIKE '#{starting_with}%'")
49
+ end
51
50
 
52
51
  result = {}
53
52
  vars.each do |record|
@@ -55,7 +54,14 @@ module RailsSettings
55
54
  end
56
55
  result.with_indifferent_access
57
56
  end
58
-
57
+
58
+ def self.where(sql = nil)
59
+ if sql
60
+ vars = thing_scoped.where(sql)
61
+ end
62
+ vars
63
+ end
64
+
59
65
  #get a setting value by [] notation
60
66
  def self.[](var_name)
61
67
  if var = object(var_name)
@@ -105,9 +111,8 @@ module RailsSettings
105
111
  end
106
112
 
107
113
  def self.thing_scoped
108
- self.scoped_by_thing_type_and_thing_id(nil, nil)
114
+ unscoped.where("thing_type is NULL and thing_id is NULL")
109
115
  end
110
116
 
111
-
112
117
  end
113
118
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-settings-cached
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
5
- prerelease:
4
+ version: 0.3.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Squeegy
@@ -12,19 +11,22 @@ authors:
12
11
  autorequire:
13
12
  bindir: bin
14
13
  cert_chain: []
15
- date: 2012-11-26 00:00:00.000000000 Z
14
+ date: 2013-02-26 00:00:00.000000000 Z
16
15
  dependencies:
17
16
  - !ruby/object:Gem::Dependency
18
17
  name: rails
19
- requirement: &70117799454600 !ruby/object:Gem::Requirement
20
- none: false
18
+ requirement: !ruby/object:Gem::Requirement
21
19
  requirements:
22
- - - ! '>='
20
+ - - '>='
23
21
  - !ruby/object:Gem::Version
24
- version: 3.0.0
22
+ version: 4.0.0.beta1
25
23
  type: :runtime
26
24
  prerelease: false
27
- version_requirements: *70117799454600
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 4.0.0.beta1
28
30
  description:
29
31
  email: huacnlee@gmail.com
30
32
  executables: []
@@ -42,27 +44,26 @@ files:
42
44
  - README.md
43
45
  homepage: https://github.com/huacnlee/rails-settings-cached
44
46
  licenses: []
47
+ metadata: {}
45
48
  post_install_message:
46
49
  rdoc_options: []
47
50
  require_paths:
48
51
  - lib
49
52
  required_ruby_version: !ruby/object:Gem::Requirement
50
- none: false
51
53
  requirements:
52
- - - ! '>='
54
+ - - '>='
53
55
  - !ruby/object:Gem::Version
54
56
  version: '0'
55
57
  required_rubygems_version: !ruby/object:Gem::Requirement
56
- none: false
57
58
  requirements:
58
- - - ! '>='
59
+ - - '>='
59
60
  - !ruby/object:Gem::Version
60
61
  version: '0'
61
62
  requirements: []
62
63
  rubyforge_project:
63
- rubygems_version: 1.8.11
64
+ rubygems_version: 2.0.0
64
65
  signing_key:
65
- specification_version: 3
66
+ specification_version: 4
66
67
  summary: This is imporved from rails-settings, added caching. Settings is a plugin
67
68
  that makes managing a table of global key, value pairs easy. Think of it like a
68
69
  global Hash stored in you database, that uses simple ActiveRecord like methods for