ranked-model 0.2.1 → 0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fa03565f2d58125cad4f32d6e9e9eb71287a7c33
4
- data.tar.gz: 7dc3963857902ef6872a26d90a0156869622a1be
3
+ metadata.gz: dcff2571a186c754b8b163ed3d80709dcaaf81c8
4
+ data.tar.gz: c51f12aea789f0b771cac3d84d0fee6d3524607e
5
5
  SHA512:
6
- metadata.gz: 21d43557aa038bd4a588dcb5b2742f67661398557a51367f2cd759b37727b2f96bf00cfcc3952d4985a61409a4f1d6ab39b634d35c4dd1bd927bf7f506529018
7
- data.tar.gz: 0e6d81072a17f1c6c6abe519a38f2750181685dc174f320c6cb96e3866a78403316b68ecc363258a2e01ada3a2064b366ed38652743cc17249bd62ceaa6c932f
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
  [![Build Status](https://travis-ci.org/mixonic/ranked-model.png)](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)
@@ -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([instance_class.arel_table[instance_class.primary_key], instance_class.arel_table[ranker.column]])
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).all)
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] ) }
@@ -1,3 +1,3 @@
1
1
  module RankedModel
2
- VERSION = "0.2.1"
2
+ VERSION = "0.3"
3
3
  end
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/harvesthq/ranked-model"
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.0.3"
16
- s.add_development_dependency "rspec"
17
- s.add_development_dependency "rspec-rails", "~> 2.12.0"
18
- s.add_development_dependency "sqlite3"
19
- s.add_development_dependency "genspec"
20
- s.add_development_dependency "mocha"
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).all }
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).all }
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).all }
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).all }
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).all }
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).all }
392
+ subject { Duck.in_lake_and_flock(0,0).rank(:landing_order).to_a }
393
393
 
394
394
  its(:size) { should == 3 }
395
395
 
@@ -23,7 +23,7 @@ describe Ego do
23
23
  @egos[:sally].update_attribute :size_position, 2
24
24
  }
25
25
 
26
- subject { Ego.rank(:size).all }
26
+ subject { Ego.rank(:size).to_a }
27
27
 
28
28
  its(:size) { should == 3 }
29
29
 
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
- config.use_transactional_fixtures = true
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.2.1
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-05-17 00:00:00.000000000 Z
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.0.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.0.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: '0'
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: '0'
40
+ version: 2.13.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec-rails
42
+ name: sqlite3
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: 2.12.0
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: 2.12.0
54
+ version: 1.3.7
55
55
  - !ruby/object:Gem::Dependency
56
- name: sqlite3
56
+ name: genspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
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: '0'
68
+ version: 0.2.8
69
69
  - !ruby/object:Gem::Dependency
70
- name: genspec
70
+ name: mocha
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ~>
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
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: '0'
82
+ version: 0.14.0
83
83
  - !ruby/object:Gem::Dependency
84
- name: mocha
84
+ name: database_cleaner
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ~>
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
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: '0'
97
- description: ranked-model is a modern row sorting library built for Rails 3. It uses
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/harvesthq/ranked-model
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.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