rails-settings-cached 0.2.4 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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