activerecord-column-reader 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,23 +1,23 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- activerecord-column-reader (0.0.1)
4
+ activerecord-column-reader (0.0.2)
5
5
  activerecord (~> 3.0.3)
6
6
 
7
7
  GEM
8
8
  remote: http://rubygems.org/
9
9
  specs:
10
- activemodel (3.0.3)
11
- activesupport (= 3.0.3)
10
+ activemodel (3.0.5)
11
+ activesupport (= 3.0.5)
12
12
  builder (~> 2.1.2)
13
13
  i18n (~> 0.4)
14
- activerecord (3.0.3)
15
- activemodel (= 3.0.3)
16
- activesupport (= 3.0.3)
14
+ activerecord (3.0.5)
15
+ activemodel (= 3.0.5)
16
+ activesupport (= 3.0.5)
17
17
  arel (~> 2.0.2)
18
18
  tzinfo (~> 0.3.23)
19
- activesupport (3.0.3)
20
- arel (2.0.6)
19
+ activesupport (3.0.5)
20
+ arel (2.0.9)
21
21
  builder (2.1.2)
22
22
  diff-lcs (1.1.2)
23
23
  i18n (0.5.0)
@@ -44,7 +44,6 @@ PLATFORMS
44
44
  ruby
45
45
 
46
46
  DEPENDENCIES
47
- activerecord (~> 3.0.3)
48
47
  activerecord-column-reader!
49
48
  rake (~> 0.8.7)
50
49
  rspec (~> 2.1.0)
data/Rakefile CHANGED
@@ -23,7 +23,7 @@ spec = Dir.chdir(path) do
23
23
 
24
24
  # Change these as appropriate
25
25
  s.name = "activerecord-column-reader"
26
- s.version = "0.0.1"
26
+ s.version = "0.0.2"
27
27
  s.summary = "Simple ActiveRecord optimization"
28
28
  s.author = "Tom Ward"
29
29
  s.email = "tom@popdog.net"
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{activerecord-column-reader}
5
- s.version = "0.0.1"
5
+ s.version = "0.0.2"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Tom Ward"]
9
- s.date = %q{2011-01-31}
9
+ s.date = %q{2011-03-13}
10
10
  s.email = %q{tom@popdog.net}
11
11
  s.extra_rdoc_files = [
12
12
  "README"
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
19
19
  "Rakefile",
20
20
  "activerecord-column-reader.gemspec",
21
21
  "lib/activerecord-column-reader.rb",
22
+ "lib/penknife/active_record.rb",
22
23
  "lib/penknife/active_record/column_reader.rb",
23
24
  "spec/penknife/column_reader_spec.rb",
24
25
  "spec/spec_helper.rb"
@@ -26,11 +27,10 @@ Gem::Specification.new do |s|
26
27
  s.homepage = %q{http://tomafro.net}
27
28
  s.rdoc_options = ["--main", "README"]
28
29
  s.require_paths = ["lib"]
29
- s.rubygems_version = %q{1.3.7}
30
+ s.rubygems_version = %q{1.5.2}
30
31
  s.summary = %q{Simple ActiveRecord optimization}
31
32
 
32
33
  if s.respond_to? :specification_version then
33
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
34
34
  s.specification_version = 3
35
35
 
36
36
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
@@ -0,0 +1,4 @@
1
+ module Penknife
2
+ module ActiveRecord
3
+ end
4
+ end
@@ -1,29 +1,24 @@
1
1
  require 'active_record'
2
+ require 'penknife/active_record'
2
3
 
3
- module Penknife
4
- module ActiveRecord
5
- module ColumnReader
6
- def column_reader(column_name, options = {})
7
- name = options.delete(:as) || column_name.to_s.pluralize
8
- column = columns_hash[column_name.to_s]
4
+ module Penknife::ActiveRecord::ColumnReader
5
+ def column_reader(column_name, options = {})
6
+ name = options.delete(:as) || column_name.to_s.pluralize
7
+ column = columns_hash[column_name.to_s]
9
8
 
10
- if type_cast_code = column.type_cast_code('v')
11
- type_cast_code = "::#{type_cast_code}"
12
- end
9
+ type_cast_code = column.type_cast_code('v')
13
10
 
14
- line = __LINE__
15
- self.class_eval %{
16
- def self.#{name}
17
- query = scoped.select(arel_table[:#{column_name}])
18
- connection.select_all(query.to_sql).collect do |value|
19
- v = value.values.first
20
- #{type_cast_code}
21
- end
22
- end
23
- }, __FILE__, line + 1
11
+ line = __LINE__
12
+ self.class_eval %{
13
+ def self.#{name}
14
+ query = scoped.select(arel_table[:#{column_name}])
15
+ connection.select_all(query.to_sql).collect do |value|
16
+ v = value.values.first
17
+ #{type_cast_code}
18
+ end
24
19
  end
25
-
26
- ::ActiveRecord::Base.extend(self)
27
- end
20
+ }, __FILE__, line + 1
28
21
  end
22
+
23
+ ::ActiveRecord::Base.extend(self)
29
24
  end
@@ -3,14 +3,15 @@ require 'spec_helper'
3
3
  class Monster < ActiveRecord::Base
4
4
  column_reader :name
5
5
  column_reader :dob, :as => :birth_dates
6
+ column_reader :stomachs, :as => :stomachs
6
7
  scope :carnivorous, :conditions => {:carnivorous => true}
7
8
  end
8
9
 
9
10
  describe "Penknife::ActiveRecord::ColumnReader" do
10
11
  before :all do
11
- @growler = Monster.create! :name => 'Growler', :carnivorous => true, :dob => 5.years.ago.to_date
12
- @munchy = Monster.create! :name => 'Munchy', :carnivorous => true, :dob => 12.years.ago
13
- @thistletop = Monster.create! :name => 'Thistletop', :carnivorous => false, :dob => 1.years.ago
12
+ @growler = Monster.create! :name => 'Growler', :carnivorous => true, :dob => 5.years.ago.to_date, :stomachs => 1.0
13
+ @munchy = Monster.create! :name => 'Munchy', :carnivorous => true, :dob => 12.years.ago, :stomachs => 2.5
14
+ @thistletop = Monster.create! :name => 'Thistletop', :carnivorous => false, :dob => 1.years.ago, :stomachs => 3
14
15
  end
15
16
 
16
17
  it "returns only specified values" do
@@ -21,8 +22,12 @@ describe "Penknife::ActiveRecord::ColumnReader" do
21
22
  Monster.carnivorous.names.sort.should eql(['Growler', 'Munchy'])
22
23
  end
23
24
 
24
- it "casts returned values" do
25
- Monster.birth_dates
25
+ it "casts returned dates" do
26
+ Monster.birth_dates.should eql([@growler.dob.to_date, @munchy.dob.to_date, @thistletop.dob.to_date])
27
+ end
28
+
29
+ it "casts returned floats" do
30
+ Monster.stomachs.should eql([@growler.stomachs, @munchy.stomachs, @thistletop.stomachs])
26
31
  end
27
32
 
28
33
  after :all do
@@ -13,5 +13,6 @@ ActiveRecord::Schema.define(:version => 1) do
13
13
  t.string 'name'
14
14
  t.date 'dob'
15
15
  t.boolean 'carnivorous'
16
+ t.float 'stomachs'
16
17
  end
17
18
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-column-reader
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
5
- prerelease: false
4
+ hash: 27
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 2
10
+ version: 0.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Tom Ward
@@ -15,14 +15,12 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-02-08 00:00:00 +00:00
18
+ date: 2011-03-13 00:00:00 +00:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- prerelease: false
23
22
  type: :runtime
24
- name: activerecord
25
- version_requirements: &id001 !ruby/object:Gem::Requirement
23
+ requirement: &id001 !ruby/object:Gem::Requirement
26
24
  none: false
27
25
  requirements:
28
26
  - - ~>
@@ -33,12 +31,12 @@ dependencies:
33
31
  - 0
34
32
  - 3
35
33
  version: 3.0.3
36
- requirement: *id001
37
- - !ruby/object:Gem::Dependency
34
+ name: activerecord
35
+ version_requirements: *id001
38
36
  prerelease: false
37
+ - !ruby/object:Gem::Dependency
39
38
  type: :development
40
- name: rspec
41
- version_requirements: &id002 !ruby/object:Gem::Requirement
39
+ requirement: &id002 !ruby/object:Gem::Requirement
42
40
  none: false
43
41
  requirements:
44
42
  - - ~>
@@ -49,12 +47,12 @@ dependencies:
49
47
  - 1
50
48
  - 0
51
49
  version: 2.1.0
52
- requirement: *id002
53
- - !ruby/object:Gem::Dependency
50
+ name: rspec
51
+ version_requirements: *id002
54
52
  prerelease: false
53
+ - !ruby/object:Gem::Dependency
55
54
  type: :development
56
- name: rake
57
- version_requirements: &id003 !ruby/object:Gem::Requirement
55
+ requirement: &id003 !ruby/object:Gem::Requirement
58
56
  none: false
59
57
  requirements:
60
58
  - - ~>
@@ -65,12 +63,12 @@ dependencies:
65
63
  - 8
66
64
  - 7
67
65
  version: 0.8.7
68
- requirement: *id003
69
- - !ruby/object:Gem::Dependency
66
+ name: rake
67
+ version_requirements: *id003
70
68
  prerelease: false
69
+ - !ruby/object:Gem::Dependency
71
70
  type: :development
72
- name: sqlite3-ruby
73
- version_requirements: &id004 !ruby/object:Gem::Requirement
71
+ requirement: &id004 !ruby/object:Gem::Requirement
74
72
  none: false
75
73
  requirements:
76
74
  - - ~>
@@ -81,12 +79,12 @@ dependencies:
81
79
  - 3
82
80
  - 1
83
81
  version: 1.3.1
84
- requirement: *id004
85
- - !ruby/object:Gem::Dependency
82
+ name: sqlite3-ruby
83
+ version_requirements: *id004
86
84
  prerelease: false
85
+ - !ruby/object:Gem::Dependency
87
86
  type: :development
88
- name: sdoc
89
- version_requirements: &id005 !ruby/object:Gem::Requirement
87
+ requirement: &id005 !ruby/object:Gem::Requirement
90
88
  none: false
91
89
  requirements:
92
90
  - - ~>
@@ -97,7 +95,9 @@ dependencies:
97
95
  - 2
98
96
  - 20
99
97
  version: 0.2.20
100
- requirement: *id005
98
+ name: sdoc
99
+ version_requirements: *id005
100
+ prerelease: false
101
101
  description:
102
102
  email: tom@popdog.net
103
103
  executables: []
@@ -114,6 +114,7 @@ files:
114
114
  - Rakefile
115
115
  - activerecord-column-reader.gemspec
116
116
  - lib/activerecord-column-reader.rb
117
+ - lib/penknife/active_record.rb
117
118
  - lib/penknife/active_record/column_reader.rb
118
119
  - spec/penknife/column_reader_spec.rb
119
120
  - spec/spec_helper.rb
@@ -148,7 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
148
149
  requirements: []
149
150
 
150
151
  rubyforge_project:
151
- rubygems_version: 1.3.7
152
+ rubygems_version: 1.5.2
152
153
  signing_key:
153
154
  specification_version: 3
154
155
  summary: Simple ActiveRecord optimization