activerecord-lazy-attributes 0.0.2 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -11,7 +11,7 @@ begin
11
11
  gem.homepage = "http://github.com/DerGuteMoritz/activerecord-lazy-attributes"
12
12
  gem.authors = ["Moritz Heidkamp"]
13
13
  gem.add_development_dependency "rspec", ">= 1.2.9"
14
- gem.add_dependency 'activerecord', '>= 2.3.5'
14
+ gem.add_dependency 'activerecord', '~> 2.3'
15
15
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
16
16
  end
17
17
  Jeweler::GemcutterTasks.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.4
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{activerecord-lazy-attributes}
8
- s.version = "0.0.2"
8
+ s.version = "0.0.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Moritz Heidkamp"]
12
- s.date = %q{2010-03-28}
12
+ s.date = %q{2010-10-01}
13
13
  s.description = %q{A useful ActiveRecord extension to handle columns containing large amounts of data}
14
14
  s.email = %q{moritz@twoticketsplease.de}
15
15
  s.extra_rdoc_files = [
@@ -36,7 +36,7 @@ Gem::Specification.new do |s|
36
36
  s.homepage = %q{http://github.com/DerGuteMoritz/activerecord-lazy-attributes}
37
37
  s.rdoc_options = ["--charset=UTF-8"]
38
38
  s.require_paths = ["lib"]
39
- s.rubygems_version = %q{1.3.5}
39
+ s.rubygems_version = %q{1.3.7}
40
40
  s.summary = %q{An ActiveRecord extension which allows attributes to be lazy-loaded}
41
41
  s.test_files = [
42
42
  "spec/spec_helper.rb",
@@ -49,16 +49,16 @@ Gem::Specification.new do |s|
49
49
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
50
50
  s.specification_version = 3
51
51
 
52
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
52
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
53
53
  s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
54
- s.add_runtime_dependency(%q<activerecord>, [">= 2.3.5"])
54
+ s.add_runtime_dependency(%q<activerecord>, ["~> 2.3"])
55
55
  else
56
56
  s.add_dependency(%q<rspec>, [">= 1.2.9"])
57
- s.add_dependency(%q<activerecord>, [">= 2.3.5"])
57
+ s.add_dependency(%q<activerecord>, ["~> 2.3"])
58
58
  end
59
59
  else
60
60
  s.add_dependency(%q<rspec>, [">= 1.2.9"])
61
- s.add_dependency(%q<activerecord>, [">= 2.3.5"])
61
+ s.add_dependency(%q<activerecord>, ["~> 2.3"])
62
62
  end
63
63
  end
64
64
 
@@ -1,3 +1,4 @@
1
+ gem 'activerecord', '~> 2.3'
1
2
  require 'active_record'
2
3
 
3
4
  module DerGuteMoritz
@@ -11,7 +12,7 @@ module DerGuteMoritz
11
12
  class_inheritable_accessor :eager_attributes_quoted
12
13
  self.lazy_attributes = []
13
14
  extend ClassMethods
14
- metaclass.alias_method_chain :default_select, :lazy_attributes
15
+ send(respond_to?(:singleton_class) ? :singleton_class : :metaclass).alias_method_chain :default_select, :lazy_attributes
15
16
  end
16
17
 
17
18
  ::ActiveRecord::Associations::ClassMethods::JoinDependency::JoinBase.send :include, JoinBase
@@ -30,6 +31,14 @@ module DerGuteMoritz
30
31
  write_attribute(attr, connection.select_value('SELECT %s FROM %s WHERE %s = %s' % [connection.quote_column_name(attr), self.class.quoted_table_name, self.class.primary_key, quoted_id])) unless has_attribute?(attr)
31
32
  read_attribute(attr)
32
33
  end
34
+
35
+ define_method "#{attr}?" do
36
+ if new_record? || has_attribute?(attr)
37
+ !!send(attr)
38
+ else
39
+ self.class.exists? ["#{self.class.primary_key} = ? AND #{connection.quote_column_name(attr)} IS NOT NULL", id]
40
+ end
41
+ end
33
42
  end
34
43
 
35
44
  end
@@ -23,4 +23,10 @@ describe DerGuteMoritz::ActiveRecord::LazyAttributes do
23
23
  i.should have_attribute('data')
24
24
  end
25
25
 
26
+ it 'should provide a predicate that checks agains the database if the lazy attribute has not been loaded yet' do
27
+ i = Image.find(@id)
28
+ i.data?.should be_true
29
+ i.should_not have_attribute('data')
30
+ end
31
+
26
32
  end
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-lazy-attributes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ hash: 23
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 4
10
+ version: 0.0.4
5
11
  platform: ruby
6
12
  authors:
7
13
  - Moritz Heidkamp
@@ -9,29 +15,40 @@ autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
17
 
12
- date: 2010-03-28 00:00:00 +01:00
18
+ date: 2010-10-01 00:00:00 +02:00
13
19
  default_executable:
14
20
  dependencies:
15
21
  - !ruby/object:Gem::Dependency
16
22
  name: rspec
17
- type: :development
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
20
26
  requirements:
21
27
  - - ">="
22
28
  - !ruby/object:Gem::Version
29
+ hash: 13
30
+ segments:
31
+ - 1
32
+ - 2
33
+ - 9
23
34
  version: 1.2.9
24
- version:
35
+ type: :development
36
+ version_requirements: *id001
25
37
  - !ruby/object:Gem::Dependency
26
38
  name: activerecord
27
- type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
30
42
  requirements:
31
- - - ">="
43
+ - - ~>
32
44
  - !ruby/object:Gem::Version
33
- version: 2.3.5
34
- version:
45
+ hash: 5
46
+ segments:
47
+ - 2
48
+ - 3
49
+ version: "2.3"
50
+ type: :runtime
51
+ version_requirements: *id002
35
52
  description: A useful ActiveRecord extension to handle columns containing large amounts of data
36
53
  email: moritz@twoticketsplease.de
37
54
  executables: []
@@ -67,21 +84,27 @@ rdoc_options:
67
84
  require_paths:
68
85
  - lib
69
86
  required_ruby_version: !ruby/object:Gem::Requirement
87
+ none: false
70
88
  requirements:
71
89
  - - ">="
72
90
  - !ruby/object:Gem::Version
91
+ hash: 3
92
+ segments:
93
+ - 0
73
94
  version: "0"
74
- version:
75
95
  required_rubygems_version: !ruby/object:Gem::Requirement
96
+ none: false
76
97
  requirements:
77
98
  - - ">="
78
99
  - !ruby/object:Gem::Version
100
+ hash: 3
101
+ segments:
102
+ - 0
79
103
  version: "0"
80
- version:
81
104
  requirements: []
82
105
 
83
106
  rubyforge_project:
84
- rubygems_version: 1.3.5
107
+ rubygems_version: 1.3.7
85
108
  signing_key:
86
109
  specification_version: 3
87
110
  summary: An ActiveRecord extension which allows attributes to be lazy-loaded