ranked-model 0.2.1 → 0.3
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.
- checksums.yaml +4 -4
- data/.travis.yml +13 -0
- data/Gemfile +11 -0
- data/Readme.mkd +2 -2
- data/lib/ranked-model/ranker.rb +5 -2
- data/lib/ranked-model/version.rb +1 -1
- data/ranked-model.gemspec +10 -11
- data/spec/duck-model/duck_spec.rb +6 -6
- data/spec/ego-model/ego_spec.rb +1 -1
- data/spec/spec_helper.rb +15 -1
- data/spec/support/active_record.rb +1 -3
- metadata +45 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dcff2571a186c754b8b163ed3d80709dcaaf81c8
|
4
|
+
data.tar.gz: c51f12aea789f0b771cac3d84d0fee6d3524607e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7b91a45c679724c3625e587a8118441f53de967e2c614e00bcd76f8103bc4007d2e1149dc159222c4c4839b7ffa86ab3f03f9e8d42e7863d3840bf7dad40a1d5
|
7
|
+
data.tar.gz: 46e6dca0c5f42e0b11a7e32b8f152675a336e15061657676ae32c80cfee4c8fffda441740bc66729c4f0daff19851be18ccdcd9c84e0b40eb8c2c551b522fef6
|
data/.travis.yml
CHANGED
@@ -3,3 +3,16 @@ rvm:
|
|
3
3
|
- "1.9.2"
|
4
4
|
- "1.9.3"
|
5
5
|
- "2.0.0"
|
6
|
+
env:
|
7
|
+
- "ACTIVERECORD_VERSION=4.0.0"
|
8
|
+
- "ACTIVERECORD_VERSION=3.2.13"
|
9
|
+
- "ACTIVERECORD_VERSION=3.1.12"
|
10
|
+
- "ACTIVERECORD_VERSION=master"
|
11
|
+
matrix:
|
12
|
+
exclude:
|
13
|
+
- env: "ACTIVERECORD_VERSION=4.0.0"
|
14
|
+
rvm: "1.9.2"
|
15
|
+
- env: "ACTIVERECORD_VERSION=master"
|
16
|
+
rvm: "1.9.2"
|
17
|
+
allow_failures:
|
18
|
+
- env: "ACTIVERECORD_VERSION=master"
|
data/Gemfile
CHANGED
@@ -2,3 +2,14 @@ source "https://rubygems.org"
|
|
2
2
|
|
3
3
|
# Specify your gem's dependencies in ranked-model.gemspec
|
4
4
|
gemspec
|
5
|
+
|
6
|
+
ar_version = ENV["ACTIVERECORD_VERSION"] || "default"
|
7
|
+
|
8
|
+
ar_gem_version = case ar_version
|
9
|
+
when "master"
|
10
|
+
gem "activerecord", {github: "rails/rails"}
|
11
|
+
when "default"
|
12
|
+
# Allow the gemspec to specify
|
13
|
+
else
|
14
|
+
gem "activerecord", "~> #{ar_version}"
|
15
|
+
end
|
data/Readme.mkd
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
**ranked-model** is a modern row sorting library built for Rails 3. It uses ARel aggressively and is better optimized than most other libraries.
|
1
|
+
**ranked-model** is a modern row sorting library built for Rails 3 & 4. It uses ARel aggressively and is better optimized than most other libraries.
|
2
2
|
|
3
3
|
[](https://travis-ci.org/mixonic/ranked-model)
|
4
4
|
|
@@ -128,4 +128,4 @@ A hearty thanks to these contributors:
|
|
128
128
|
* [yabawock](https://github.com/yabawock)
|
129
129
|
* [AndrewRadev](https://github.com/AndrewRadev)
|
130
130
|
* [adheerajkumar](https://github.com/adheerajkumar)
|
131
|
-
* [mikeycgto](https://github.com/mikeycgto)
|
131
|
+
* [mikeycgto](https://github.com/mikeycgto)
|
data/lib/ranked-model/ranker.rb
CHANGED
@@ -197,14 +197,17 @@ module RankedModel
|
|
197
197
|
def finder
|
198
198
|
@finder ||= begin
|
199
199
|
_finder = instance_class
|
200
|
+
columns = [instance_class.arel_table[instance_class.primary_key], instance_class.arel_table[ranker.column]]
|
200
201
|
if ranker.scope
|
201
202
|
_finder = _finder.send ranker.scope
|
202
203
|
end
|
203
204
|
case ranker.with_same
|
204
205
|
when Symbol
|
206
|
+
columns << instance_class.arel_table[ranker.with_same]
|
205
207
|
_finder = _finder.where \
|
206
208
|
instance_class.arel_table[ranker.with_same].eq(instance.attributes["#{ranker.with_same}"])
|
207
209
|
when Array
|
210
|
+
ranker.with_same.each {|c| columns.push instance_class.arel_table[c] }
|
208
211
|
_finder = _finder.where(
|
209
212
|
ranker.with_same[1..-1].inject(
|
210
213
|
instance_class.arel_table[ranker.with_same.first].eq(
|
@@ -223,7 +226,7 @@ module RankedModel
|
|
223
226
|
_finder = _finder.where \
|
224
227
|
instance_class.arel_table[instance_class.primary_key].not_eq(instance.id)
|
225
228
|
end
|
226
|
-
_finder.order(instance_class.arel_table[ranker.column].asc).select(
|
229
|
+
_finder.order(instance_class.arel_table[ranker.column].asc).select(columns)
|
227
230
|
end
|
228
231
|
end
|
229
232
|
|
@@ -264,7 +267,7 @@ module RankedModel
|
|
264
267
|
|
265
268
|
def neighbors_at_position _pos
|
266
269
|
if _pos > 0
|
267
|
-
if (ordered_instances = finder.offset(_pos-1).limit(2).
|
270
|
+
if (ordered_instances = finder.offset(_pos-1).limit(2).to_a)
|
268
271
|
if ordered_instances[1]
|
269
272
|
{ :lower => RankedModel::Ranker::Mapper.new( ranker, ordered_instances[0] ),
|
270
273
|
:upper => RankedModel::Ranker::Mapper.new( ranker, ordered_instances[1] ) }
|
data/lib/ranked-model/version.rb
CHANGED
data/ranked-model.gemspec
CHANGED
@@ -8,18 +8,17 @@ Gem::Specification.new do |s|
|
|
8
8
|
s.platform = Gem::Platform::RUBY
|
9
9
|
s.authors = ["Matthew Beale"]
|
10
10
|
s.email = ["matt.beale@madhatted.com"]
|
11
|
-
s.homepage = "https://github.com/
|
12
|
-
s.summary = %q{An acts_as_sortable replacement built for Rails 3}
|
13
|
-
s.description = %q{ranked-model is a modern row sorting library built for Rails 3. It uses ARel aggressively and is better optimized than most other libraries.}
|
11
|
+
s.homepage = "https://github.com/mixonic/ranked-model"
|
12
|
+
s.summary = %q{An acts_as_sortable replacement built for Rails 3 & 4}
|
13
|
+
s.description = %q{ranked-model is a modern row sorting library built for Rails 3 & 4. It uses ARel aggressively and is better optimized than most other libraries.}
|
14
14
|
|
15
|
-
s.add_dependency "activerecord", ">= 3.
|
16
|
-
s.add_development_dependency "rspec"
|
17
|
-
s.add_development_dependency "
|
18
|
-
s.add_development_dependency "
|
19
|
-
s.add_development_dependency "
|
20
|
-
s.add_development_dependency "
|
21
|
-
|
22
|
-
# s.rubyforge_project = "ranked-model"
|
15
|
+
s.add_dependency "activerecord", ">= 3.1.12"
|
16
|
+
s.add_development_dependency "rspec", "~> 2.13.0"
|
17
|
+
s.add_development_dependency "sqlite3", "~> 1.3.7"
|
18
|
+
s.add_development_dependency "genspec", "~> 0.2.8"
|
19
|
+
s.add_development_dependency "mocha", "~> 0.14.0"
|
20
|
+
s.add_development_dependency "database_cleaner", "~> 1.0.1"
|
21
|
+
s.add_development_dependency "rake", "~> 10.1.0"
|
23
22
|
|
24
23
|
s.files = `git ls-files`.split("\n")
|
25
24
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
@@ -59,7 +59,7 @@ describe Duck do
|
|
59
59
|
@ducks[:wingy].update_attribute :size_position, 2
|
60
60
|
}
|
61
61
|
|
62
|
-
subject { Duck.in_shin_pond.rank(:size).
|
62
|
+
subject { Duck.in_shin_pond.rank(:size).to_a }
|
63
63
|
|
64
64
|
its(:size) { should == 3 }
|
65
65
|
|
@@ -76,7 +76,7 @@ describe Duck do
|
|
76
76
|
@ducks[:wingy].update_attribute :age_position, 0
|
77
77
|
}
|
78
78
|
|
79
|
-
subject { Duck.where(:pond => 'Shin').rank(:age).
|
79
|
+
subject { Duck.where(:pond => 'Shin').rank(:age).to_a }
|
80
80
|
|
81
81
|
its(:size) { should == 3 }
|
82
82
|
|
@@ -95,7 +95,7 @@ describe Duck do
|
|
95
95
|
@ducks[:wingy].update_attribute :row_position, 6
|
96
96
|
}
|
97
97
|
|
98
|
-
subject { Duck.rank(:row).
|
98
|
+
subject { Duck.rank(:row).to_a }
|
99
99
|
|
100
100
|
its(:size) { should == 6 }
|
101
101
|
|
@@ -119,7 +119,7 @@ describe Duck do
|
|
119
119
|
|
120
120
|
describe "row" do
|
121
121
|
|
122
|
-
subject { Duck.rank(:row).
|
122
|
+
subject { Duck.rank(:row).to_a }
|
123
123
|
|
124
124
|
its(:size) { should == 6 }
|
125
125
|
|
@@ -131,7 +131,7 @@ describe Duck do
|
|
131
131
|
|
132
132
|
describe "row" do
|
133
133
|
|
134
|
-
subject { Duck.in_shin_pond.rank(:size).
|
134
|
+
subject { Duck.in_shin_pond.rank(:size).to_a }
|
135
135
|
|
136
136
|
its(:size) { should == 3 }
|
137
137
|
|
@@ -389,7 +389,7 @@ describe Duck do
|
|
389
389
|
@ducks[:wingy].update_attribute :landing_order_position, 1
|
390
390
|
}
|
391
391
|
|
392
|
-
subject { Duck.in_lake_and_flock(0,0).rank(:landing_order).
|
392
|
+
subject { Duck.in_lake_and_flock(0,0).rank(:landing_order).to_a }
|
393
393
|
|
394
394
|
its(:size) { should == 3 }
|
395
395
|
|
data/spec/ego-model/ego_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'bundler/setup'
|
3
|
+
require 'database_cleaner'
|
3
4
|
|
4
5
|
require 'ranked-model' # and any other gems you need
|
5
6
|
|
@@ -7,7 +8,20 @@ Dir[File.join(File.dirname(__FILE__), 'support/**/*.rb')].each {|f| require f}
|
|
7
8
|
|
8
9
|
RSpec.configure do |config|
|
9
10
|
config.mock_with :mocha
|
10
|
-
|
11
|
+
|
12
|
+
config.before(:suite) do
|
13
|
+
DatabaseCleaner.strategy = :transaction
|
14
|
+
DatabaseCleaner.clean_with(:truncation)
|
15
|
+
end
|
16
|
+
|
17
|
+
config.before(:each) do
|
18
|
+
DatabaseCleaner.start
|
19
|
+
end
|
20
|
+
|
21
|
+
config.after(:each) do
|
22
|
+
DatabaseCleaner.clean
|
23
|
+
end
|
24
|
+
|
11
25
|
end
|
12
26
|
|
13
27
|
RSpec::Matchers.define :define_constant do |expected|
|
@@ -1,8 +1,6 @@
|
|
1
1
|
require 'active_record'
|
2
2
|
require 'sqlite3'
|
3
3
|
require 'logger'
|
4
|
-
require 'rspec/rails/adapters'
|
5
|
-
require 'rspec/rails/fixture_support'
|
6
4
|
|
7
5
|
ROOT = File.join(File.dirname(__FILE__), '..')
|
8
6
|
|
@@ -63,7 +61,7 @@ class Duck < ActiveRecord::Base
|
|
63
61
|
ranks :landing_order, :with_same => [:lake_id, :flock_id]
|
64
62
|
scope :in_lake_and_flock, lambda {|lake, flock| where(:lake_id => lake, :flock_id => flock) }
|
65
63
|
|
66
|
-
scope :in_shin_pond, where(:pond => 'Shin')
|
64
|
+
scope :in_shin_pond, lambda { where(:pond => 'Shin') }
|
67
65
|
|
68
66
|
end
|
69
67
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ranked-model
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: '0.3'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew Beale
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-07-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -16,86 +16,100 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 3.
|
19
|
+
version: 3.1.12
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 3.
|
26
|
+
version: 3.1.12
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rspec
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 2.13.0
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 2.13.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: sqlite3
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 1.3.7
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 1.3.7
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: genspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 0.2.8
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 0.2.8
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: mocha
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ~>
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 0.14.0
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ~>
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 0.14.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: database_cleaner
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ~>
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: 1.0.1
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 1.0.1
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rake
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ~>
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 10.1.0
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ~>
|
95
109
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
97
|
-
description: ranked-model is a modern row sorting library built for Rails 3. It
|
98
|
-
ARel aggressively and is better optimized than most other libraries.
|
110
|
+
version: 10.1.0
|
111
|
+
description: ranked-model is a modern row sorting library built for Rails 3 & 4. It
|
112
|
+
uses ARel aggressively and is better optimized than most other libraries.
|
99
113
|
email:
|
100
114
|
- matt.beale@madhatted.com
|
101
115
|
executables: []
|
@@ -127,7 +141,7 @@ files:
|
|
127
141
|
- spec/support/active_record.rb
|
128
142
|
- spec/support/database.yml
|
129
143
|
- tmp/.gitignore
|
130
|
-
homepage: https://github.com/
|
144
|
+
homepage: https://github.com/mixonic/ranked-model
|
131
145
|
licenses: []
|
132
146
|
metadata: {}
|
133
147
|
post_install_message:
|
@@ -146,10 +160,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
146
160
|
version: '0'
|
147
161
|
requirements: []
|
148
162
|
rubyforge_project:
|
149
|
-
rubygems_version: 2.0.
|
163
|
+
rubygems_version: 2.0.3
|
150
164
|
signing_key:
|
151
165
|
specification_version: 4
|
152
|
-
summary: An acts_as_sortable replacement built for Rails 3
|
166
|
+
summary: An acts_as_sortable replacement built for Rails 3 & 4
|
153
167
|
test_files:
|
154
168
|
- spec/duck-model/duck_spec.rb
|
155
169
|
- spec/duck-model/lots_of_ducks_spec.rb
|