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 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