voterable 0.0.2 → 0.0.2.0001

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  module Voterable
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.2.0001"
3
3
  end
@@ -1,5 +1,6 @@
1
1
 
2
2
  require "voterable/functions"
3
+ # require 'kaminari'
3
4
 
4
5
  # DUDE! Remember you need to restart the sever to get this file to reload!
5
6
  module Voterable
@@ -67,16 +68,18 @@ module Voterable
67
68
 
68
69
  def self.sort_by(hsh = {})
69
70
 
70
- hsh[:page] ||= 1
71
+ hsh[:page] ||= 1
71
72
  hsh[:limit] ||= 30
72
73
  hsh[:period] ||= :all_time
73
74
  hsh[:tally_type] ||= :point
74
75
 
75
- skip_count = (hsh[:page]-1)*hsh[:limit]
76
+ page = ( hsh[:page].to_i >= 1 ? hsh[:page].to_i : 1 )
77
+ skip_count = (page-1)*hsh[:limit]
76
78
 
77
79
  case hsh[:period]
78
80
  when :latest
79
- return self.order_by(:created_at, :desc).skip(skip_count)
81
+ # return self.order_by(:created_at, :desc).page(hsh[:page]).per(hsh[:limit])
82
+ return self.order_by(:created_at, :desc).skip(skip_count).limit(hsh[:limit])
80
83
  when :all_time
81
84
  index = '0.'
82
85
  when :year
@@ -91,7 +94,26 @@ module Voterable
91
94
 
92
95
  string = "tallys." + index + hsh[:tally_type].to_s
93
96
 
94
- self.order_by(string,:desc).skip(skip_count) #.where(:tallys.exists => true)
97
+ #self.order_by(string,:desc).page(hsh[:page]).per(hsh[:limit]) #.where(:tallys.exists => true)
98
+ sorted = self.order_by(string,:desc).skip(skip_count).limit(hsh[:limit]) #.where(:tallys.exists => true)
99
+
100
+ # Array into the class and add necessary methods for pagination
101
+ sorted.instance_variable_set("@current_page", page)
102
+ sorted.instance_variable_set("@num_pages", (self.count.to_f/hsh[:limit]).ceil )
103
+ sorted.instance_variable_set("@limit_value", hsh[:limit])
104
+ sorted.instance_eval do
105
+ def current_page
106
+ @current_page
107
+ end
108
+ def num_pages
109
+ @num_pages
110
+ end
111
+ def limit_value
112
+ @limit_value
113
+ end
114
+ end
115
+
116
+ sorted
95
117
  end
96
118
 
97
119
 
@@ -34,6 +34,20 @@ describe Voterable::Voteable do
34
34
  it{@all[2].should == @third}
35
35
  end
36
36
 
37
+ describe "checking for correct pagination" do
38
+
39
+ before(:each) do
40
+ @all = Voteable.sort_by(:period => :all_time,
41
+ :page => 2,
42
+ :limit => 2)
43
+ end
44
+
45
+ it{@all.all.count.should == 1}
46
+ it{@all.current_page.should == 2}
47
+ it{@all.num_pages.should == 2}
48
+ it{@all.limit_value.should == 2}
49
+ end
50
+
37
51
  end
38
52
 
39
53
 
data/voterable.gemspec CHANGED
@@ -25,6 +25,9 @@ Gem::Specification.new do |s|
25
25
  s.add_dependency "bson", ["= 1.4.0"]
26
26
  s.add_dependency "bson_ext", ["= 1.4.0"]
27
27
 
28
+ #Pagination
29
+ # s.add_dependency 'kaminari', '>=0.10.2'
30
+
28
31
  #Testing
29
32
  s.add_development_dependency "rspec"
30
33
  s.add_development_dependency "factory_girl", ["~> 2.1.0"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: voterable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.2.0001
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-06 00:00:00.000000000Z
12
+ date: 2011-12-07 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mongoid
16
- requirement: &70252860449820 !ruby/object:Gem::Requirement
16
+ requirement: &70187430656440 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - =
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 2.3.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70252860449820
24
+ version_requirements: *70187430656440
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bson
27
- requirement: &70252860448820 !ruby/object:Gem::Requirement
27
+ requirement: &70187430655920 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - =
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.4.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70252860448820
35
+ version_requirements: *70187430655920
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: bson_ext
38
- requirement: &70252860448120 !ruby/object:Gem::Requirement
38
+ requirement: &70187430655380 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - =
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.4.0
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70252860448120
46
+ version_requirements: *70187430655380
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
- requirement: &70252860447540 !ruby/object:Gem::Requirement
49
+ requirement: &70187430655000 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70252860447540
57
+ version_requirements: *70187430655000
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: factory_girl
60
- requirement: &70252860446980 !ruby/object:Gem::Requirement
60
+ requirement: &70187430654300 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 2.1.0
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70252860446980
68
+ version_requirements: *70187430654300
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: guard
71
- requirement: &70252860446540 !ruby/object:Gem::Requirement
71
+ requirement: &70187430653820 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70252860446540
79
+ version_requirements: *70187430653820
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: guard-rspec
82
- requirement: &70252860446040 !ruby/object:Gem::Requirement
82
+ requirement: &70187430653340 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70252860446040
90
+ version_requirements: *70187430653340
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: guard-spork
93
- requirement: &70252860445620 !ruby/object:Gem::Requirement
93
+ requirement: &70187430652780 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *70252860445620
101
+ version_requirements: *70187430652780
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: database_cleaner
104
- requirement: &70252860445200 !ruby/object:Gem::Requirement
104
+ requirement: &70187430652260 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: '0'
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *70252860445200
112
+ version_requirements: *70187430652260
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: rb-fsevent
115
- requirement: &70252860444780 !ruby/object:Gem::Requirement
115
+ requirement: &70187430651600 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: '0'
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *70252860444780
123
+ version_requirements: *70187430651600
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: growl
126
- requirement: &70252860444360 !ruby/object:Gem::Requirement
126
+ requirement: &70187430651000 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ! '>='
@@ -131,7 +131,7 @@ dependencies:
131
131
  version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *70252860444360
134
+ version_requirements: *70187430651000
135
135
  description: Hackish implementaiton of voting on of voteable objects by a voter
136
136
  email:
137
137
  - benguest@gmail.com