squeel 1.0.13 → 1.0.14
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.
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
## 1.0.14 (2012-12-04 OpenHack Louisville Edition!)
|
2
|
+
|
3
|
+
* Use bind values in where_values_hash, to prep for compatibility with 3.2.10
|
4
|
+
* Allow Symbol#to_proc blocks to fall through to Array's select method
|
5
|
+
|
1
6
|
## 1.0.13 (2012-10-11)
|
2
7
|
|
3
8
|
* Allow strings in from_value. Fixes incompatibility with acts-as-taggable-on.
|
@@ -167,7 +167,7 @@ module Squeel
|
|
167
167
|
|
168
168
|
def select(value = Proc.new)
|
169
169
|
if block_given? && Proc === value
|
170
|
-
if value.arity > 0
|
170
|
+
if value.arity > 0 || (Squeel.sane_arity? && value.arity < 0)
|
171
171
|
to_a.select {|*block_args| value.call(*block_args)}
|
172
172
|
else
|
173
173
|
relation = clone
|
@@ -388,7 +388,12 @@ module Squeel
|
|
388
388
|
def where_values_hash_with_squeel
|
389
389
|
equalities = find_equality_predicates(where_visit(with_default_scope.where_values))
|
390
390
|
|
391
|
-
Hash[
|
391
|
+
binds = Hash[bind_values.find_all(&:first).map { |column, v| [column.name, v] }]
|
392
|
+
|
393
|
+
Hash[equalities.map { |where|
|
394
|
+
name = where.left.name
|
395
|
+
[name, binds.fetch(name.to_s) { where.right }]
|
396
|
+
}]
|
392
397
|
end
|
393
398
|
|
394
399
|
end
|
data/lib/squeel/version.rb
CHANGED
data/lib/squeel.rb
CHANGED
@@ -18,6 +18,12 @@ module Squeel
|
|
18
18
|
warn "DEPRECATION WARNING: #{message} (called from #{external_caller})"
|
19
19
|
end
|
20
20
|
|
21
|
+
# Ruby 1.9 has a zero arity on a Proc with no arity. Prior to that, it mimics
|
22
|
+
# Symbol#to_proc and returns -1.
|
23
|
+
def self.sane_arity?
|
24
|
+
@sane_arity ||= Proc.new {}.arity == 0
|
25
|
+
end
|
26
|
+
|
21
27
|
# Set up initial predicate aliases
|
22
28
|
Constants::PREDICATE_ALIASES.each do |original, aliases|
|
23
29
|
aliases.each do |aliaz|
|
@@ -364,12 +364,21 @@ module Squeel
|
|
364
364
|
block.to_sql.should eq standard.to_sql
|
365
365
|
end
|
366
366
|
|
367
|
-
it 'falls back to Array#select
|
367
|
+
it 'falls back to Array#select with a block that has an arity > 0' do
|
368
368
|
people = Person.select{|p| p.id == 1}
|
369
369
|
people.should have(1).person
|
370
370
|
people.first.id.should eq 1
|
371
371
|
end
|
372
372
|
|
373
|
+
it 'falls back to Array#select with Symbol#to_proc block' do
|
374
|
+
if Squeel.sane_arity?
|
375
|
+
people = Person.select(&:odd?)
|
376
|
+
people.map(&:id)[0..3].should eq [1, 3, 5, 7]
|
377
|
+
else
|
378
|
+
pending 'This version of Ruby has insane Proc#arity behavior.'
|
379
|
+
end
|
380
|
+
end
|
381
|
+
|
373
382
|
it 'behaves as normal with standard parameters' do
|
374
383
|
people = Person.select(:id)
|
375
384
|
people.should have(332).people
|
data/spec/support/models.rb
CHANGED
metadata
CHANGED
@@ -1,138 +1,142 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: squeel
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 11
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 0
|
9
|
+
- 14
|
10
|
+
version: 1.0.14
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Ernie Miller
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
17
|
+
|
18
|
+
date: 2012-12-05 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
15
21
|
name: activerecord
|
16
|
-
|
22
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
17
23
|
none: false
|
18
|
-
requirements:
|
24
|
+
requirements:
|
19
25
|
- - ~>
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
hash: 7
|
28
|
+
segments:
|
29
|
+
- 3
|
30
|
+
- 0
|
31
|
+
version: "3.0"
|
22
32
|
type: :runtime
|
33
|
+
requirement: *id001
|
23
34
|
prerelease: false
|
24
|
-
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '3.0'
|
30
|
-
- !ruby/object:Gem::Dependency
|
35
|
+
- !ruby/object:Gem::Dependency
|
31
36
|
name: activesupport
|
32
|
-
|
37
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
33
38
|
none: false
|
34
|
-
requirements:
|
39
|
+
requirements:
|
35
40
|
- - ~>
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
hash: 7
|
43
|
+
segments:
|
44
|
+
- 3
|
45
|
+
- 0
|
46
|
+
version: "3.0"
|
38
47
|
type: :runtime
|
48
|
+
requirement: *id002
|
39
49
|
prerelease: false
|
40
|
-
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: '3.0'
|
46
|
-
- !ruby/object:Gem::Dependency
|
50
|
+
- !ruby/object:Gem::Dependency
|
47
51
|
name: polyamorous
|
48
|
-
|
52
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
49
53
|
none: false
|
50
|
-
requirements:
|
54
|
+
requirements:
|
51
55
|
- - ~>
|
52
|
-
- !ruby/object:Gem::Version
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
hash: 11
|
58
|
+
segments:
|
59
|
+
- 0
|
60
|
+
- 5
|
61
|
+
- 0
|
53
62
|
version: 0.5.0
|
54
63
|
type: :runtime
|
64
|
+
requirement: *id003
|
55
65
|
prerelease: false
|
56
|
-
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ~>
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 0.5.0
|
62
|
-
- !ruby/object:Gem::Dependency
|
66
|
+
- !ruby/object:Gem::Dependency
|
63
67
|
name: rspec
|
64
|
-
|
68
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
65
69
|
none: false
|
66
|
-
requirements:
|
70
|
+
requirements:
|
67
71
|
- - ~>
|
68
|
-
- !ruby/object:Gem::Version
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
hash: 23
|
74
|
+
segments:
|
75
|
+
- 2
|
76
|
+
- 6
|
77
|
+
- 0
|
69
78
|
version: 2.6.0
|
70
79
|
type: :development
|
80
|
+
requirement: *id004
|
71
81
|
prerelease: false
|
72
|
-
|
73
|
-
none: false
|
74
|
-
requirements:
|
75
|
-
- - ~>
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: 2.6.0
|
78
|
-
- !ruby/object:Gem::Dependency
|
82
|
+
- !ruby/object:Gem::Dependency
|
79
83
|
name: machinist
|
80
|
-
|
84
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
81
85
|
none: false
|
82
|
-
requirements:
|
86
|
+
requirements:
|
83
87
|
- - ~>
|
84
|
-
- !ruby/object:Gem::Version
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
hash: 27
|
90
|
+
segments:
|
91
|
+
- 1
|
92
|
+
- 0
|
93
|
+
- 6
|
85
94
|
version: 1.0.6
|
86
95
|
type: :development
|
96
|
+
requirement: *id005
|
87
97
|
prerelease: false
|
88
|
-
|
89
|
-
none: false
|
90
|
-
requirements:
|
91
|
-
- - ~>
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: 1.0.6
|
94
|
-
- !ruby/object:Gem::Dependency
|
98
|
+
- !ruby/object:Gem::Dependency
|
95
99
|
name: faker
|
96
|
-
|
100
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
97
101
|
none: false
|
98
|
-
requirements:
|
102
|
+
requirements:
|
99
103
|
- - ~>
|
100
|
-
- !ruby/object:Gem::Version
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
hash: 49
|
106
|
+
segments:
|
107
|
+
- 0
|
108
|
+
- 9
|
109
|
+
- 5
|
101
110
|
version: 0.9.5
|
102
111
|
type: :development
|
112
|
+
requirement: *id006
|
103
113
|
prerelease: false
|
104
|
-
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - ~>
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: 0.9.5
|
110
|
-
- !ruby/object:Gem::Dependency
|
114
|
+
- !ruby/object:Gem::Dependency
|
111
115
|
name: sqlite3
|
112
|
-
|
116
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
113
117
|
none: false
|
114
|
-
requirements:
|
118
|
+
requirements:
|
115
119
|
- - ~>
|
116
|
-
- !ruby/object:Gem::Version
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
hash: 29
|
122
|
+
segments:
|
123
|
+
- 1
|
124
|
+
- 3
|
125
|
+
- 3
|
117
126
|
version: 1.3.3
|
118
127
|
type: :development
|
128
|
+
requirement: *id007
|
119
129
|
prerelease: false
|
120
|
-
|
121
|
-
|
122
|
-
requirements:
|
123
|
-
- - ~>
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version: 1.3.3
|
126
|
-
description: ! "\n Squeel unlocks the power of ARel in your Rails 3 application
|
127
|
-
with\n a handy block-based syntax. You can write subqueries, access named\n
|
128
|
-
\ functions provided by your RDBMS, and more, all without writing\n SQL
|
129
|
-
strings.\n "
|
130
|
-
email:
|
130
|
+
description: "\n Squeel unlocks the power of ARel in your Rails 3 application with\n a handy block-based syntax. You can write subqueries, access named\n functions provided by your RDBMS, and more, all without writing\n SQL strings.\n "
|
131
|
+
email:
|
131
132
|
- ernie@erniemiller.org
|
132
133
|
executables: []
|
134
|
+
|
133
135
|
extensions: []
|
136
|
+
|
134
137
|
extra_rdoc_files: []
|
135
|
-
|
138
|
+
|
139
|
+
files:
|
136
140
|
- .gitignore
|
137
141
|
- .travis.yml
|
138
142
|
- .yardopts
|
@@ -243,35 +247,38 @@ files:
|
|
243
247
|
- squeel.gemspec
|
244
248
|
homepage: http://erniemiller.org/projects/squeel
|
245
249
|
licenses: []
|
250
|
+
|
246
251
|
post_install_message:
|
247
252
|
rdoc_options: []
|
248
|
-
|
253
|
+
|
254
|
+
require_paths:
|
249
255
|
- lib
|
250
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
256
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
251
257
|
none: false
|
252
|
-
requirements:
|
253
|
-
- -
|
254
|
-
- !ruby/object:Gem::Version
|
255
|
-
|
256
|
-
segments:
|
258
|
+
requirements:
|
259
|
+
- - ">="
|
260
|
+
- !ruby/object:Gem::Version
|
261
|
+
hash: 3
|
262
|
+
segments:
|
257
263
|
- 0
|
258
|
-
|
259
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
264
|
+
version: "0"
|
265
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
260
266
|
none: false
|
261
|
-
requirements:
|
262
|
-
- -
|
263
|
-
- !ruby/object:Gem::Version
|
264
|
-
|
265
|
-
segments:
|
267
|
+
requirements:
|
268
|
+
- - ">="
|
269
|
+
- !ruby/object:Gem::Version
|
270
|
+
hash: 3
|
271
|
+
segments:
|
266
272
|
- 0
|
267
|
-
|
273
|
+
version: "0"
|
268
274
|
requirements: []
|
275
|
+
|
269
276
|
rubyforge_project: squeel
|
270
277
|
rubygems_version: 1.8.24
|
271
278
|
signing_key:
|
272
279
|
specification_version: 3
|
273
280
|
summary: ActiveRecord 3, improved.
|
274
|
-
test_files:
|
281
|
+
test_files:
|
275
282
|
- spec/blueprints/articles.rb
|
276
283
|
- spec/blueprints/comments.rb
|
277
284
|
- spec/blueprints/notes.rb
|