cached_values 1.7.3 → 1.8.0

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