cohort_scope 0.0.5 → 0.0.6
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/Rakefile +2 -2
- data/VERSION +1 -1
- data/cohort_scope.gemspec +8 -8
- data/lib/cohort_scope.rb +10 -10
- data/test/test_cohort_scope.rb +25 -4
- metadata +10 -10
data/Rakefile
CHANGED
@@ -10,8 +10,8 @@ begin
|
|
10
10
|
gem.email = "seamus@abshere.net"
|
11
11
|
gem.homepage = "http://github.com/seamusabshere/cohort_scope"
|
12
12
|
gem.authors = ["Seamus Abshere", "Andy Rossmeissl", "Derek Kastner"]
|
13
|
-
gem.add_dependency "activesupport", ">=3.0.0.
|
14
|
-
gem.add_dependency "activerecord", ">=3.0.0.
|
13
|
+
gem.add_dependency "activesupport", ">=3.0.0.beta4"
|
14
|
+
gem.add_dependency "activerecord", ">=3.0.0.beta4"
|
15
15
|
gem.add_development_dependency "shoulda", ">= 2.10.3"
|
16
16
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
17
17
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.6
|
data/cohort_scope.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{cohort_scope}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.6"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Seamus Abshere", "Andy Rossmeissl", "Derek Kastner"]
|
12
|
-
s.date = %q{2010-07-
|
12
|
+
s.date = %q{2010-07-29}
|
13
13
|
s.description = %q{Provides big_cohort, which widens by finding the constraint that eliminates the most records and removing it. Also provides strict_cohort, which widens by eliminating constraints in order.}
|
14
14
|
s.email = %q{seamus@abshere.net}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -43,17 +43,17 @@ Gem::Specification.new do |s|
|
|
43
43
|
s.specification_version = 3
|
44
44
|
|
45
45
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
46
|
-
s.add_runtime_dependency(%q<activesupport>, [">= 3.0.0.
|
47
|
-
s.add_runtime_dependency(%q<activerecord>, [">= 3.0.0.
|
46
|
+
s.add_runtime_dependency(%q<activesupport>, [">= 3.0.0.beta4"])
|
47
|
+
s.add_runtime_dependency(%q<activerecord>, [">= 3.0.0.beta4"])
|
48
48
|
s.add_development_dependency(%q<shoulda>, [">= 2.10.3"])
|
49
49
|
else
|
50
|
-
s.add_dependency(%q<activesupport>, [">= 3.0.0.
|
51
|
-
s.add_dependency(%q<activerecord>, [">= 3.0.0.
|
50
|
+
s.add_dependency(%q<activesupport>, [">= 3.0.0.beta4"])
|
51
|
+
s.add_dependency(%q<activerecord>, [">= 3.0.0.beta4"])
|
52
52
|
s.add_dependency(%q<shoulda>, [">= 2.10.3"])
|
53
53
|
end
|
54
54
|
else
|
55
|
-
s.add_dependency(%q<activesupport>, [">= 3.0.0.
|
56
|
-
s.add_dependency(%q<activerecord>, [">= 3.0.0.
|
55
|
+
s.add_dependency(%q<activesupport>, [">= 3.0.0.beta4"])
|
56
|
+
s.add_dependency(%q<activerecord>, [">= 3.0.0.beta4"])
|
57
57
|
s.add_dependency(%q<shoulda>, [">= 2.10.3"])
|
58
58
|
end
|
59
59
|
end
|
data/lib/cohort_scope.rb
CHANGED
@@ -10,25 +10,23 @@ end if ActiveSupport::VERSION::MAJOR == 3
|
|
10
10
|
module ActiveRecord
|
11
11
|
class Relation
|
12
12
|
def inspect_count_only!
|
13
|
-
@
|
13
|
+
@inspect_count_only = true
|
14
14
|
end
|
15
15
|
def inspect_count_only?
|
16
|
-
@
|
16
|
+
@inspect_count_only == true
|
17
17
|
end
|
18
|
-
def as_json(*
|
19
|
-
inspect_count_only? ? { :members => count }
|
18
|
+
def as_json(*)
|
19
|
+
inspect_count_only? ? { :members => count } : super
|
20
20
|
end
|
21
21
|
def inspect
|
22
|
-
inspect_count_only? ? "<Massive ActiveRecord scope with #{count} members>" :
|
22
|
+
inspect_count_only? ? "<Massive ActiveRecord scope with #{count} members>" : super
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
27
|
module CohortScope
|
28
|
-
def self.extended(
|
29
|
-
|
30
|
-
cattr_accessor :minimum_cohort_size, :instance_writer => false
|
31
|
-
end
|
28
|
+
def self.extended(klass)
|
29
|
+
klass.cattr_accessor :minimum_cohort_size, :instance_writer => false
|
32
30
|
end
|
33
31
|
|
34
32
|
# Find the biggest scope possible by removing constraints <b>in any order</b>.
|
@@ -66,7 +64,9 @@ module CohortScope
|
|
66
64
|
raise RuntimeError, "You need to set #{name}.minimum_cohort_size = X" unless minimum_cohort_size.present?
|
67
65
|
|
68
66
|
if constraints.values.none? # failing base case
|
69
|
-
|
67
|
+
empty_cohort = scoped.where 'false'
|
68
|
+
empty_cohort.inspect_count_only!
|
69
|
+
return empty_cohort
|
70
70
|
end
|
71
71
|
|
72
72
|
this_hash = _cohort_constraints constraints
|
data/test/test_cohort_scope.rb
CHANGED
@@ -6,11 +6,19 @@ class TestCohortScope < Test::Unit::TestCase
|
|
6
6
|
@date_range = (Date.parse('1980-01-01')..Date.parse('1990-01-01'))
|
7
7
|
end
|
8
8
|
|
9
|
-
should "
|
9
|
+
should "only show the count in the json representation" do
|
10
10
|
cohort = Citizen.big_cohort :birthdate => @date_range, :favorite_color => 'heliotrope'
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
assert_equal({ :members => 9 }.to_json, cohort.to_json)
|
12
|
+
end
|
13
|
+
|
14
|
+
should "not mess with normal as_json" do
|
15
|
+
non_cohort = Citizen.all
|
16
|
+
assert_equal non_cohort.to_a.as_json, non_cohort.as_json
|
17
|
+
end
|
18
|
+
|
19
|
+
should "not mess with normal inspect" do
|
20
|
+
non_cohort = Citizen.all
|
21
|
+
assert_equal non_cohort.to_a.inspect, non_cohort.inspect
|
14
22
|
end
|
15
23
|
|
16
24
|
should "inspect to a short string" do
|
@@ -51,6 +59,11 @@ class TestCohortScope < Test::Unit::TestCase
|
|
51
59
|
Citizen.big_cohort ActiveSupport::OrderedHash.new
|
52
60
|
}
|
53
61
|
end
|
62
|
+
|
63
|
+
should "result in a relation that has inspect_count_only set" do
|
64
|
+
cohort = Citizen.big_cohort :favorite_color => 'heliotrope'
|
65
|
+
assert cohort.inspect_count_only?
|
66
|
+
end
|
54
67
|
end
|
55
68
|
|
56
69
|
context "strict_cohort" do
|
@@ -91,5 +104,13 @@ class TestCohortScope < Test::Unit::TestCase
|
|
91
104
|
cohort = Citizen.strict_cohort birthdate_matters_most
|
92
105
|
assert_equal 9, cohort.count
|
93
106
|
end
|
107
|
+
|
108
|
+
should "result in a relation that has inspect_count_only set" do
|
109
|
+
ordered_attributes = ActiveSupport::OrderedHash.new
|
110
|
+
ordered_attributes[:favorite_color] = 'heliotrope'
|
111
|
+
|
112
|
+
cohort = Citizen.strict_cohort ordered_attributes
|
113
|
+
assert cohort.inspect_count_only?
|
114
|
+
end
|
94
115
|
end
|
95
116
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cohort_scope
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 6
|
10
|
+
version: 0.0.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Seamus Abshere
|
@@ -17,7 +17,7 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date: 2010-07-
|
20
|
+
date: 2010-07-29 00:00:00 -05:00
|
21
21
|
default_executable:
|
22
22
|
dependencies:
|
23
23
|
- !ruby/object:Gem::Dependency
|
@@ -28,13 +28,13 @@ dependencies:
|
|
28
28
|
requirements:
|
29
29
|
- - ">="
|
30
30
|
- !ruby/object:Gem::Version
|
31
|
-
hash:
|
31
|
+
hash: 299253624
|
32
32
|
segments:
|
33
33
|
- 3
|
34
34
|
- 0
|
35
35
|
- 0
|
36
|
-
-
|
37
|
-
version: 3.0.0.
|
36
|
+
- beta4
|
37
|
+
version: 3.0.0.beta4
|
38
38
|
type: :runtime
|
39
39
|
version_requirements: *id001
|
40
40
|
- !ruby/object:Gem::Dependency
|
@@ -45,13 +45,13 @@ dependencies:
|
|
45
45
|
requirements:
|
46
46
|
- - ">="
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
hash:
|
48
|
+
hash: 299253624
|
49
49
|
segments:
|
50
50
|
- 3
|
51
51
|
- 0
|
52
52
|
- 0
|
53
|
-
-
|
54
|
-
version: 3.0.0.
|
53
|
+
- beta4
|
54
|
+
version: 3.0.0.beta4
|
55
55
|
type: :runtime
|
56
56
|
version_requirements: *id002
|
57
57
|
- !ruby/object:Gem::Dependency
|