weighted_average 1.0.3 → 1.1.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/CHANGELOG ADDED
@@ -0,0 +1,5 @@
1
+ 1.1.0 / 2012-05-21
2
+
3
+ * Bug fixes
4
+
5
+ * Don't rely on ActiveRecord::Relation#quoted_table_name; use ActiveRecord::Relation#table.name instead.
@@ -22,11 +22,14 @@ module WeightedAverage
22
22
  # AirlineAircraftSeatClass
23
23
  association_class = association.klass if association
24
24
 
25
+ # `aircraft`
26
+ table_name = connection.quote_table_name table.name
27
+
25
28
  # `airline_aircraft_seat_classes`
26
29
  weighted_by_table_name = if association_class
27
30
  association_class.quoted_table_name
28
31
  else
29
- quoted_table_name
32
+ table_name
30
33
  end
31
34
 
32
35
  # `airline_aircraft_seat_classes`.`weighting`
@@ -41,12 +44,12 @@ module WeightedAverage
41
44
 
42
45
  # `aircraft`.`passengers`
43
46
  disaggregate_by_column_name = if options[:disaggregate_by]
44
- [ quoted_table_name, connection.quote_column_name(options[:disaggregate_by]) ].join '.'
47
+ [ table_name, connection.quote_column_name(options[:disaggregate_by]) ].join '.'
45
48
  end
46
49
 
47
50
  # [ `aircraft`.`foo`, `aircraft`.`baz` ]
48
51
  data_column_names = ::Array.wrap(data_column_names).map do |data_column_name|
49
- [ quoted_table_name, connection.quote_column_name(data_column_name) ].join '.'
52
+ [ table_name, connection.quote_column_name(data_column_name) ].join '.'
50
53
  end
51
54
 
52
55
  relation = select("(SUM(1.0 * (#{data_column_names.join(' + ')}) #{"/ #{disaggregate_by_column_name} " if disaggregate_by_column_name}* #{weighted_by_column_name}) / SUM(#{weighted_by_column_name})) AS weighted_average")
@@ -1,3 +1,3 @@
1
1
  module WeightedAverage
2
- VERSION = '1.0.3'
2
+ VERSION = '1.1.0'
3
3
  end
data/test/helper.rb CHANGED
@@ -1,10 +1,8 @@
1
1
  require 'bundler/setup'
2
2
  require 'minitest/spec'
3
3
  require 'minitest/autorun'
4
- require 'cohort_scope'
4
+ require 'cohort_analysis'
5
5
 
6
- $LOAD_PATH.unshift(File.dirname(__FILE__))
7
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
8
6
  require 'weighted_average'
9
7
 
10
8
  class MiniTest::Unit::TestCase
@@ -221,10 +219,8 @@ ActiveRecord::Schema.define(:version => 20090819143429) do
221
219
  end
222
220
 
223
221
  class Segment < ActiveRecord::Base
224
- set_primary_key :row_hash
222
+ self.primary_key = 'row_hash'
225
223
  validates_presence_of :row_hash
226
- extend CohortScope
227
- self.minimum_cohort_size = 1
228
224
  belongs_to :aircraft, :foreign_key => 'bts_aircraft_type', :primary_key => 'bts_aircraft_type'
229
225
  has_one :aircraft_class, :through => :aircraft
230
226
  end
@@ -285,7 +281,7 @@ end
285
281
  end
286
282
 
287
283
  class AircraftDeux < ActiveRecord::Base
288
- set_primary_key 'icao_code'
284
+ self.primary_key = 'icao_code'
289
285
  has_many :segments, :primary_key => 'my_bts_aircraft_type_code', :foreign_key => 'bts_aircraft_type'
290
286
  end
291
287
 
@@ -186,8 +186,20 @@ describe WeightedAverage do
186
186
 
187
187
  it "does custom weighting, with a cohort" do
188
188
  should_have_same_sql(
189
- "SELECT (SUM(1.0 * (segments.load_factor) * segments.passengers) / SUM(segments.passengers)) AS weighted_average FROM segments WHERE segments.payload = 5 AND (segments.load_factor IS NOT NULL) AND (segments.passengers > 0)",
190
- Segment.big_cohort(:payload => 5).weighted_average_relation(:load_factor, :weighted_by => :passengers)
189
+ "SELECT (SUM(1.0 * (segments.load_factor) * segments.passengers) / SUM(segments.passengers)) AS weighted_average FROM segments WHERE (segments.payload = 5) AND (segments.load_factor IS NOT NULL) AND (segments.passengers > 0)",
190
+ Segment.cohort(:payload => 5).weighted_average_relation(:load_factor, :weighted_by => :passengers)
191
+ )
192
+ end
193
+
194
+ it "properly picks up table name" do
195
+ c = Segment.connection
196
+ c.execute %{
197
+ CREATE TEMPORARY TABLE moo LIKE #{Segment.quoted_table_name}
198
+ }
199
+ relation = ActiveRecord::Relation.new(Segment, Arel::Table.new(:moo))
200
+ should_have_same_sql(
201
+ "SELECT (SUM(1.0 * (moo.distance) * moo.passengers) / SUM(moo.passengers)) AS weighted_average FROM moo WHERE (moo.distance IS NOT NULL) AND (moo.passengers > 0)",
202
+ relation.weighted_average_relation('distance', :weighted_by => 'passengers')
191
203
  )
192
204
  end
193
205
 
@@ -1,6 +1,5 @@
1
1
  # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require "weighted_average/version"
2
+ require File.expand_path("../lib/weighted_average/version", __FILE__)
4
3
 
5
4
  Gem::Specification.new do |s|
6
5
  s.name = "weighted_average"
@@ -22,7 +21,7 @@ Gem::Specification.new do |s|
22
21
  s.add_runtime_dependency 'activesupport', '~>3'
23
22
  s.add_runtime_dependency 'arel', '>= 2'
24
23
 
25
- s.add_development_dependency 'cohort_scope', '>= 0.2.1'
24
+ s.add_development_dependency 'cohort_analysis', '>= 0.2.1'
26
25
  s.add_development_dependency 'minitest'
27
26
  s.add_development_dependency 'rake'
28
27
  s.add_development_dependency 'mysql'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: weighted_average
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,11 +12,11 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2012-02-03 00:00:00.000000000Z
15
+ date: 2012-05-21 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: activerecord
19
- requirement: &2153427740 !ruby/object:Gem::Requirement
19
+ requirement: !ruby/object:Gem::Requirement
20
20
  none: false
21
21
  requirements:
22
22
  - - ~>
@@ -24,10 +24,15 @@ dependencies:
24
24
  version: '3'
25
25
  type: :runtime
26
26
  prerelease: false
27
- version_requirements: *2153427740
27
+ version_requirements: !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: '3'
28
33
  - !ruby/object:Gem::Dependency
29
34
  name: activesupport
30
- requirement: &2153423280 !ruby/object:Gem::Requirement
35
+ requirement: !ruby/object:Gem::Requirement
31
36
  none: false
32
37
  requirements:
33
38
  - - ~>
@@ -35,10 +40,15 @@ dependencies:
35
40
  version: '3'
36
41
  type: :runtime
37
42
  prerelease: false
38
- version_requirements: *2153423280
43
+ version_requirements: !ruby/object:Gem::Requirement
44
+ none: false
45
+ requirements:
46
+ - - ~>
47
+ - !ruby/object:Gem::Version
48
+ version: '3'
39
49
  - !ruby/object:Gem::Dependency
40
50
  name: arel
41
- requirement: &2153412260 !ruby/object:Gem::Requirement
51
+ requirement: !ruby/object:Gem::Requirement
42
52
  none: false
43
53
  requirements:
44
54
  - - ! '>='
@@ -46,10 +56,15 @@ dependencies:
46
56
  version: '2'
47
57
  type: :runtime
48
58
  prerelease: false
49
- version_requirements: *2153412260
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ none: false
61
+ requirements:
62
+ - - ! '>='
63
+ - !ruby/object:Gem::Version
64
+ version: '2'
50
65
  - !ruby/object:Gem::Dependency
51
- name: cohort_scope
52
- requirement: &2153409560 !ruby/object:Gem::Requirement
66
+ name: cohort_analysis
67
+ requirement: !ruby/object:Gem::Requirement
53
68
  none: false
54
69
  requirements:
55
70
  - - ! '>='
@@ -57,10 +72,15 @@ dependencies:
57
72
  version: 0.2.1
58
73
  type: :development
59
74
  prerelease: false
60
- version_requirements: *2153409560
75
+ version_requirements: !ruby/object:Gem::Requirement
76
+ none: false
77
+ requirements:
78
+ - - ! '>='
79
+ - !ruby/object:Gem::Version
80
+ version: 0.2.1
61
81
  - !ruby/object:Gem::Dependency
62
82
  name: minitest
63
- requirement: &2153407140 !ruby/object:Gem::Requirement
83
+ requirement: !ruby/object:Gem::Requirement
64
84
  none: false
65
85
  requirements:
66
86
  - - ! '>='
@@ -68,10 +88,15 @@ dependencies:
68
88
  version: '0'
69
89
  type: :development
70
90
  prerelease: false
71
- version_requirements: *2153407140
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ none: false
93
+ requirements:
94
+ - - ! '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
72
97
  - !ruby/object:Gem::Dependency
73
98
  name: rake
74
- requirement: &2153405020 !ruby/object:Gem::Requirement
99
+ requirement: !ruby/object:Gem::Requirement
75
100
  none: false
76
101
  requirements:
77
102
  - - ! '>='
@@ -79,10 +104,15 @@ dependencies:
79
104
  version: '0'
80
105
  type: :development
81
106
  prerelease: false
82
- version_requirements: *2153405020
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ none: false
109
+ requirements:
110
+ - - ! '>='
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
83
113
  - !ruby/object:Gem::Dependency
84
114
  name: mysql
85
- requirement: &2153395960 !ruby/object:Gem::Requirement
115
+ requirement: !ruby/object:Gem::Requirement
86
116
  none: false
87
117
  requirements:
88
118
  - - ! '>='
@@ -90,10 +120,15 @@ dependencies:
90
120
  version: '0'
91
121
  type: :development
92
122
  prerelease: false
93
- version_requirements: *2153395960
123
+ version_requirements: !ruby/object:Gem::Requirement
124
+ none: false
125
+ requirements:
126
+ - - ! '>='
127
+ - !ruby/object:Gem::Version
128
+ version: '0'
94
129
  - !ruby/object:Gem::Dependency
95
130
  name: pg
96
- requirement: &2153389740 !ruby/object:Gem::Requirement
131
+ requirement: !ruby/object:Gem::Requirement
97
132
  none: false
98
133
  requirements:
99
134
  - - ! '>='
@@ -101,7 +136,12 @@ dependencies:
101
136
  version: '0'
102
137
  type: :development
103
138
  prerelease: false
104
- version_requirements: *2153389740
139
+ version_requirements: !ruby/object:Gem::Requirement
140
+ none: false
141
+ requirements:
142
+ - - ! '>='
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
105
145
  description: Perform weighted averages, even across associations. Rails 3 only because
106
146
  it uses ARel.
107
147
  email:
@@ -110,8 +150,8 @@ executables: []
110
150
  extensions: []
111
151
  extra_rdoc_files: []
112
152
  files:
113
- - .document
114
153
  - .gitignore
154
+ - CHANGELOG
115
155
  - Gemfile
116
156
  - LICENSE
117
157
  - README.rdoc
@@ -141,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
141
181
  version: '0'
142
182
  requirements: []
143
183
  rubyforge_project: weighted_average
144
- rubygems_version: 1.8.10
184
+ rubygems_version: 1.8.21
145
185
  signing_key:
146
186
  specification_version: 3
147
187
  summary: Perform weighted averages. Rails 3 only.
data/.document DELETED
@@ -1,5 +0,0 @@
1
- README.rdoc
2
- lib/**/*.rb
3
- bin/*
4
- features/**/*.feature
5
- LICENSE