randumb 0.3.1 → 0.4.0

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.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ OTI0OTBlMWNhNTc3MWQxYzU5MDM0YzAwNmM5NWI3OTFmNzhlYzA0Nw==
5
+ data.tar.gz: !binary |-
6
+ YzNlMmUzYTA3ZDRmZDI4ZmE5YTIyMzFiMGNlMTA2ZDNiMjRjZDFjNQ==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ OTkzMmIzZmQ1ZDg0YjhjYmFiODhhNDRhZWFkN2RkNzdjYTQ4NTE5ZDgzOTIx
10
+ NTY4NTk4YjVhOTZmMTFhNWJlZjM5Zjg0OGE3YzMyNmFmM2QwZDA1ZDRjYTY3
11
+ YTRmYzVkNjExY2UwMTc4MDBhZWFmZjFjNzkzYTgwMzI2MjQzYjM=
12
+ data.tar.gz: !binary |-
13
+ OWJjZjUzODMzOWY2MWYwZWU1YWQzZDAxMWNkOWYyM2E3ZTQyZTNmMmE4ODI4
14
+ ZjY4NjE5ZjBjMzkyNDFmZTFhZWJlMGQ4YWNlOTg2YjdiNzA3M2NmNzhhNGZj
15
+ ZDUzMTZjNjgwYTI3ZWYzNjE0MDdkMWNmNjNlOWY4MGQ0ZWU2ZWY=
@@ -19,17 +19,26 @@ module Randumb
19
19
  relation = clone
20
20
  return random_by_id_shuffle(max_items) if is_randumb_postges_case?(relation, ranking_column)
21
21
  raise_unless_valid_ranking_column(ranking_column)
22
-
22
+ # get clause for current db type
23
23
  order_clause = random_order_clause(ranking_column)
24
- the_scope = relation.order(order_clause)
25
24
 
25
+ the_scope = if ::ActiveRecord::VERSION::MAJOR == 3 && ::ActiveRecord::VERSION::MINOR < 2
26
+ # AR 3.0.0 support
27
+ relation.order(order_clause)
28
+ else
29
+ # keep prior orders and append random
30
+ all_orders = (relation.orders + [order_clause]).join(", ")
31
+ # override all previous orders
32
+ relation.reorder(all_orders)
33
+ end
34
+
26
35
  # override the limit if they are requesting multiple records
27
36
  if max_items && (!relation.limit_value || relation.limit_value > max_items)
28
37
  the_scope = the_scope.limit(max_items)
29
38
  end
30
39
 
31
40
  # return first record if method was called without parameters
32
- max_items ? the_scope.all : the_scope.first
41
+ max_items ? the_scope.to_a : the_scope.first
33
42
  end
34
43
 
35
44
 
@@ -115,12 +124,15 @@ module Randumb
115
124
 
116
125
  # do original query but only for id field
117
126
  id_only_relation = relation.select("#{table_name}.id")
127
+
118
128
  id_results = connection.select_all(id_only_relation.to_sql)
119
129
 
120
- if max_ids == 1 && id_results.length > 0
121
- ids = [ id_results[ rand(id_results.length) ]['id'] ]
130
+ if max_ids == 1 && id_results.count > 0
131
+ [ id_results[ rand(id_results.count) ]['id'] ]
122
132
  else
123
- ids = id_results.shuffle![0,max_ids].collect!{ |h| h['id'] }
133
+ # ActiveRecord 4 requires .to_ary
134
+ arr = id_results.respond_to?(:to_ary) ? id_results.to_ary : id_results
135
+ arr.shuffle![0,max_ids].collect!{ |h| h['id'] }
124
136
  end
125
137
  end
126
138
 
@@ -1,3 +1,3 @@
1
1
  module Randumb
2
- VERSION = "0.3.1"
2
+ VERSION = "0.4.0"
3
3
  end
@@ -1,5 +1,5 @@
1
1
  class Artist < ActiveRecord::Base
2
2
  has_many :albums
3
3
 
4
- scope :at_least_three_views, where("views >= 3")
4
+ scope :at_least_three_views, -> { where("views >= 3") }
5
5
  end
metadata CHANGED
@@ -1,103 +1,119 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: randumb
3
- version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.3.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.0
6
5
  platform: ruby
7
- authors:
6
+ authors:
8
7
  - Zachary Kloepping
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
-
13
- date: 2013-01-19 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
11
+ date: 2013-07-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
16
14
  name: rake
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
19
- none: false
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0"
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
24
20
  type: :runtime
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
27
- name: activesupport
28
21
  prerelease: false
29
- requirement: &id002 !ruby/object:Gem::Requirement
30
- none: false
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
34
33
  version: 3.0.0
35
34
  type: :runtime
36
- version_requirements: *id002
37
- - !ruby/object:Gem::Dependency
38
- name: activerecord
39
35
  prerelease: false
40
- requirement: &id003 !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: 3.0.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: activerecord
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
45
47
  version: 3.0.0
46
48
  type: :runtime
47
- version_requirements: *id003
48
- - !ruby/object:Gem::Dependency
49
- name: sqlite3
50
49
  prerelease: false
51
- requirement: &id004 !ruby/object:Gem::Requirement
52
- none: false
53
- requirements:
54
- - - "="
55
- - !ruby/object:Gem::Version
56
- version: 1.3.5
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: 3.0.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: sqlite3
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.3.7
57
62
  type: :development
58
- version_requirements: *id004
59
- - !ruby/object:Gem::Dependency
60
- name: shoulda
61
63
  prerelease: false
62
- requirement: &id005 !ruby/object:Gem::Requirement
63
- none: false
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: "0"
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: 1.3.7
69
+ - !ruby/object:Gem::Dependency
70
+ name: shoulda
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
68
76
  type: :development
69
- version_requirements: *id005
70
- - !ruby/object:Gem::Dependency
71
- name: factory_girl
72
77
  prerelease: false
73
- requirement: &id006 !ruby/object:Gem::Requirement
74
- none: false
75
- requirements:
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: factory_girl
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
76
87
  - - ~>
77
- - !ruby/object:Gem::Version
78
- version: "3.0"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.0'
79
90
  type: :development
80
- version_requirements: *id006
81
- - !ruby/object:Gem::Dependency
82
- name: faker
83
91
  prerelease: false
84
- requirement: &id007 !ruby/object:Gem::Requirement
85
- none: false
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: "0"
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: '3.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: faker
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ! '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
90
104
  type: :development
91
- version_requirements: *id007
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
92
111
  description:
93
112
  email:
94
113
  executables: []
95
-
96
114
  extensions: []
97
-
98
115
  extra_rdoc_files: []
99
-
100
- files:
116
+ files:
101
117
  - lib/randumb/relation.rb
102
118
  - lib/randumb/version.rb
103
119
  - lib/randumb.rb
@@ -108,33 +124,30 @@ files:
108
124
  - test/test_helper.rb
109
125
  - test/weighted_test.rb
110
126
  homepage: https://github.com/spilliton/randumb
111
- licenses: []
112
-
127
+ licenses:
128
+ - MIT
129
+ metadata: {}
113
130
  post_install_message:
114
131
  rdoc_options: []
115
-
116
- require_paths:
132
+ require_paths:
117
133
  - lib
118
- required_ruby_version: !ruby/object:Gem::Requirement
119
- none: false
120
- requirements:
121
- - - ">="
122
- - !ruby/object:Gem::Version
123
- version: "0"
124
- required_rubygems_version: !ruby/object:Gem::Requirement
125
- none: false
126
- requirements:
127
- - - ">="
128
- - !ruby/object:Gem::Version
129
- version: "0"
134
+ required_ruby_version: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ! '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ required_rubygems_version: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - ! '>='
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
130
144
  requirements: []
131
-
132
145
  rubyforge_project:
133
- rubygems_version: 1.8.24
146
+ rubygems_version: 2.0.5
134
147
  signing_key:
135
- specification_version: 3
148
+ specification_version: 4
136
149
  summary: Adds the ability to pull random records from ActiveRecord
137
- test_files:
150
+ test_files:
138
151
  - test/models/album.rb
139
152
  - test/models/artist.rb
140
153
  - test/models/factories.rb