cached_values 1.7.3 → 1.8.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.
data/Gemfile ADDED
@@ -0,0 +1,10 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'object_proxy'
4
+
5
+ group :test do
6
+ gem 'sqlite3'
7
+ gem 'shoulda'
8
+ gem 'activerecord'
9
+ gem 'activesupport'
10
+ end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.7.3
1
+ 1.8.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{cached_values}
8
- s.version = "1.7.3"
8
+ s.version = "1.8.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Jack Danger Canty"]
12
- s.date = %q{2011-04-10}
12
+ s.date = %q{2011-04-18}
13
13
  s.description = %q{Speedup your ActiveRecord by storing and updating the results of SQL or Ruby expressions into record attributes}
14
14
  s.email = %q{rubygems@6brand.com}
15
15
  s.extra_rdoc_files = [
@@ -17,6 +17,7 @@ Gem::Specification.new do |s|
17
17
  "README.markdown"
18
18
  ]
19
19
  s.files = [
20
+ "Gemfile",
20
21
  "LICENSE",
21
22
  "MIT-LICENSE",
22
23
  "README.markdown",
@@ -50,13 +51,16 @@ Gem::Specification.new do |s|
50
51
  s.specification_version = 3
51
52
 
52
53
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
54
+ s.add_runtime_dependency(%q<object_proxy>, [">= 0"])
53
55
  s.add_runtime_dependency(%q<object_proxy>, [">= 0"])
54
56
  s.add_development_dependency(%q<active_record>, [">= 0"])
55
57
  else
58
+ s.add_dependency(%q<object_proxy>, [">= 0"])
56
59
  s.add_dependency(%q<object_proxy>, [">= 0"])
57
60
  s.add_dependency(%q<active_record>, [">= 0"])
58
61
  end
59
62
  else
63
+ s.add_dependency(%q<object_proxy>, [">= 0"])
60
64
  s.add_dependency(%q<object_proxy>, [">= 0"])
61
65
  s.add_dependency(%q<active_record>, [">= 0"])
62
66
  end
data/lib/cached_value.rb CHANGED
@@ -47,7 +47,7 @@ module ActiveRecord
47
47
  end
48
48
 
49
49
  def find_target_by_sql
50
- sql = sanitize_sql(interpolate_sql(@reflection.options[:sql]))
50
+ sql = interpolate_and_sanitize_sql(@reflection.options[:sql])
51
51
  result = @owner.class.connection.select_value(sql)
52
52
  result = typecast_result(result)
53
53
  result
@@ -121,12 +121,13 @@ module ActiveRecord
121
121
  end
122
122
  end
123
123
 
124
- def interpolate_sql(sql, record = nil)
125
- @owner.send(:interpolate_sql, sql, record)
126
- end
127
-
128
- def sanitize_sql(sql)
129
- @owner.class.send(:sanitize_sql, sql)
124
+ def interpolate_and_sanitize_sql(sql, record = nil)
125
+ sanitized = @owner.class.send(:sanitize_sql, sql, record)
126
+ if sanitized =~ /\#\{.*\}/
127
+ @owner.instance_eval("%@#{sanitized.gsub('@', '\@')}@", __FILE__, __LINE__)
128
+ else
129
+ sanitized
130
+ end
130
131
  end
131
132
 
132
133
  end
data/lib/cached_values.rb CHANGED
@@ -69,10 +69,7 @@ module CachedValues # :nodoc:
69
69
 
70
70
  def create_cached_value_reflection(name, options)
71
71
  options.assert_valid_keys(:sql, :eval, :cache, :clear, :load, :reload)
72
-
73
- reflection = ActiveRecord::Reflection::MacroReflection.new(:cached_value, name, options, self)
74
- write_inheritable_hash :reflections, name => reflection
75
- reflection
72
+ ActiveRecord::Reflection::MacroReflection.new(:cached_value, name, options, self)
76
73
  end
77
74
 
78
75
  def cached_value_accessor_method(reflection, association_proxy_class)
@@ -90,8 +87,8 @@ module CachedValues # :nodoc:
90
87
 
91
88
  def cached_value_callback_methods(reflection)
92
89
  if events = reflection.options[:reload]
93
- events = Array(events).map { |event| event.to_s }
94
- ActiveRecord::Callbacks::CALLBACKS.each do |callback|
90
+ events = Array(events).map(&:to_sym)
91
+ ActiveRecord::Callbacks::CALLBACKS.map(&:to_sym).each do |callback|
95
92
  if events.include?(callback)
96
93
  # before_save do |record|
97
94
  send callback do |record|
data/test/test_helper.rb CHANGED
@@ -1,11 +1,13 @@
1
1
  # Include this file in your test by copying the following line to your test:
2
2
  # require File.expand_path(File.dirname(__FILE__) + "/test_helper")
3
3
 
4
+ require 'rubygems'
5
+ require 'bundler'
6
+ Bundler.require :default, :test
7
+
4
8
  $:.unshift(File.dirname(__FILE__) + '/../lib')
5
9
 
6
- require 'rubygems'
7
- gem 'test-unit'
8
- require 'test/unit'
10
+ require 'shoulda'
9
11
  require 'active_support'
10
12
  require 'active_record'
11
13
  require 'active_record/fixtures'
@@ -36,3 +38,4 @@ class ActiveSupport::TestCase #:nodoc:
36
38
 
37
39
  # Add more helper methods to be used by all tests here...
38
40
  end
41
+
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cached_values
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
4
+ hash: 55
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
- - 7
9
- - 3
10
- version: 1.7.3
8
+ - 8
9
+ - 0
10
+ version: 1.8.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jack Danger Canty
@@ -15,13 +15,12 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-10 00:00:00 -07:00
18
+ date: 2011-04-18 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- name: object_proxy
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
22
+ type: :runtime
23
+ version_requirements: &id001 !ruby/object:Gem::Requirement
25
24
  none: false
26
25
  requirements:
27
26
  - - ">="
@@ -30,12 +29,12 @@ dependencies:
30
29
  segments:
31
30
  - 0
32
31
  version: "0"
33
- type: :runtime
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: active_record
32
+ requirement: *id001
37
33
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
34
+ name: object_proxy
35
+ - !ruby/object:Gem::Dependency
36
+ type: :runtime
37
+ version_requirements: &id002 !ruby/object:Gem::Requirement
39
38
  none: false
40
39
  requirements:
41
40
  - - ">="
@@ -44,8 +43,23 @@ dependencies:
44
43
  segments:
45
44
  - 0
46
45
  version: "0"
46
+ requirement: *id002
47
+ prerelease: false
48
+ name: object_proxy
49
+ - !ruby/object:Gem::Dependency
47
50
  type: :development
48
- version_requirements: *id002
51
+ version_requirements: &id003 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ hash: 3
57
+ segments:
58
+ - 0
59
+ version: "0"
60
+ requirement: *id003
61
+ prerelease: false
62
+ name: active_record
49
63
  description: Speedup your ActiveRecord by storing and updating the results of SQL or Ruby expressions into record attributes
50
64
  email: rubygems@6brand.com
51
65
  executables: []
@@ -56,6 +70,7 @@ extra_rdoc_files:
56
70
  - LICENSE
57
71
  - README.markdown
58
72
  files:
73
+ - Gemfile
59
74
  - LICENSE
60
75
  - MIT-LICENSE
61
76
  - README.markdown