squeel 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +20 -0
- data/README.md +1 -1
- data/lib/squeel.rb +1 -2
- data/lib/squeel/adapters/active_record.rb +3 -1
- data/lib/squeel/adapters/active_record/3.0/compat.rb +5 -1
- data/lib/squeel/adapters/active_record/3.0/context.rb +2 -2
- data/lib/squeel/adapters/active_record/3.1/compat.rb +22 -0
- data/lib/squeel/adapters/active_record/3.1/context.rb +2 -2
- data/lib/squeel/adapters/active_record/compat.rb +22 -0
- data/lib/squeel/adapters/active_record/join_dependency_extensions.rb +2 -2
- data/lib/squeel/configuration.rb +2 -2
- data/lib/squeel/core_ext/symbol.rb +3 -13
- data/lib/squeel/dsl.rb +10 -1
- data/lib/squeel/nodes.rb +9 -1
- data/lib/squeel/nodes/aliasing.rb +2 -2
- data/lib/squeel/nodes/as.rb +1 -1
- data/lib/squeel/nodes/binary.rb +1 -4
- data/lib/squeel/nodes/function.rb +1 -10
- data/lib/squeel/nodes/grouping.rb +35 -0
- data/lib/squeel/nodes/join.rb +3 -3
- data/lib/squeel/nodes/key_path.rb +26 -24
- data/lib/squeel/nodes/literal.rb +2 -17
- data/lib/squeel/nodes/nary.rb +1 -2
- data/lib/squeel/nodes/ordering.rb +21 -0
- data/lib/squeel/nodes/predicate.rb +1 -4
- data/lib/squeel/nodes/predicate_methods.rb +16 -0
- data/lib/squeel/nodes/stub.rb +11 -21
- data/lib/squeel/nodes/unary.rb +1 -4
- data/lib/squeel/version.rb +1 -1
- data/lib/squeel/visitors/attribute_visitor.rb +12 -13
- data/lib/squeel/visitors/predicate_visitor.rb +38 -15
- data/lib/squeel/visitors/symbol_visitor.rb +2 -6
- data/lib/squeel/visitors/visitor.rb +24 -1
- data/spec/squeel/adapters/active_record/relation_extensions_spec.rb +6 -1
- data/spec/squeel/dsl_spec.rb +9 -1
- data/spec/squeel/nodes/grouping_spec.rb +177 -0
- data/spec/squeel/nodes/join_spec.rb +4 -5
- data/spec/squeel/nodes/key_path_spec.rb +3 -5
- data/spec/squeel/nodes/operators_spec.rb +3 -3
- data/spec/squeel/nodes/stub_spec.rb +6 -7
- data/spec/squeel/visitors/attribute_visitor_spec.rb +6 -1
- data/spec/squeel/visitors/predicate_visitor_spec.rb +28 -0
- metadata +62 -22
- data/lib/squeel/predicate_methods.rb +0 -14
@@ -0,0 +1,177 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Squeel
|
4
|
+
module Nodes
|
5
|
+
describe Grouping do
|
6
|
+
before do
|
7
|
+
@g = Grouping.new('foo')
|
8
|
+
end
|
9
|
+
|
10
|
+
Squeel::Constants::PREDICATES.each do |method_name|
|
11
|
+
it "creates #{method_name} predicates with no value" do
|
12
|
+
predicate = @g.send(method_name)
|
13
|
+
predicate.expr.should eq @g
|
14
|
+
predicate.method_name.should eq method_name
|
15
|
+
predicate.value?.should be_false
|
16
|
+
end
|
17
|
+
|
18
|
+
it "creates #{method_name} predicates with a value" do
|
19
|
+
predicate = @g.send(method_name, 'value')
|
20
|
+
predicate.expr.should eq @g
|
21
|
+
predicate.method_name.should eq method_name
|
22
|
+
predicate.value.should eq 'value'
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
Squeel::Constants::PREDICATE_ALIASES.each do |method_name, aliases|
|
27
|
+
aliases.each do |aliaz|
|
28
|
+
['', '_any', '_all'].each do |suffix|
|
29
|
+
it "creates #{method_name.to_s + suffix} predicates with no value using the alias #{aliaz.to_s + suffix}" do
|
30
|
+
predicate = @g.send(aliaz.to_s + suffix)
|
31
|
+
predicate.expr.should eq @g
|
32
|
+
predicate.method_name.should eq "#{method_name}#{suffix}".to_sym
|
33
|
+
predicate.value?.should be_false
|
34
|
+
end
|
35
|
+
|
36
|
+
it "creates #{method_name.to_s + suffix} predicates with a value using the alias #{aliaz.to_s + suffix}" do
|
37
|
+
predicate = @g.send((aliaz.to_s + suffix), 'value')
|
38
|
+
predicate.expr.should eq @g
|
39
|
+
predicate.method_name.should eq "#{method_name}#{suffix}".to_sym
|
40
|
+
predicate.value.should eq 'value'
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'creates ascending Order nodes with #asc' do
|
47
|
+
order = @g.asc
|
48
|
+
order.expr.should eq @g
|
49
|
+
order.should be_ascending
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'creates descending Order nodes with #desc' do
|
53
|
+
order = @g.desc
|
54
|
+
order.expr.should eq @g
|
55
|
+
order.should be_descending
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'creates eq predicates with ==' do
|
59
|
+
predicate = @g == 1
|
60
|
+
predicate.expr.should eq @g
|
61
|
+
predicate.method_name.should eq :eq
|
62
|
+
predicate.value.should eq 1
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'creates not_eq predicates with ^' do
|
66
|
+
predicate = @g ^ 1
|
67
|
+
predicate.expr.should eq @g
|
68
|
+
predicate.method_name.should eq :not_eq
|
69
|
+
predicate.value.should eq 1
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'creates not_eq predicates with !=' do
|
73
|
+
predicate = @g != 1
|
74
|
+
predicate.expr.should eq @g
|
75
|
+
predicate.method_name.should eq :not_eq
|
76
|
+
predicate.value.should eq 1
|
77
|
+
end if respond_to?('!=')
|
78
|
+
|
79
|
+
it 'creates in predicates with >>' do
|
80
|
+
predicate = @g >> [1,2,3]
|
81
|
+
predicate.expr.should eq @g
|
82
|
+
predicate.method_name.should eq :in
|
83
|
+
predicate.value.should eq [1,2,3]
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'creates not_in predicates with <<' do
|
87
|
+
predicate = @g << [1,2,3]
|
88
|
+
predicate.expr.should eq @g
|
89
|
+
predicate.method_name.should eq :not_in
|
90
|
+
predicate.value.should eq [1,2,3]
|
91
|
+
end
|
92
|
+
|
93
|
+
it 'creates matches predicates with =~' do
|
94
|
+
predicate = @g =~ '%bob%'
|
95
|
+
predicate.expr.should eq @g
|
96
|
+
predicate.method_name.should eq :matches
|
97
|
+
predicate.value.should eq '%bob%'
|
98
|
+
end
|
99
|
+
|
100
|
+
it 'creates does_not_match predicates with !~' do
|
101
|
+
predicate = @g !~ '%bob%'
|
102
|
+
predicate.expr.should eq @g
|
103
|
+
predicate.method_name.should eq :does_not_match
|
104
|
+
predicate.value.should eq '%bob%'
|
105
|
+
end if respond_to?('!~')
|
106
|
+
|
107
|
+
it 'creates gt predicates with >' do
|
108
|
+
predicate = @g > 1
|
109
|
+
predicate.expr.should eq @g
|
110
|
+
predicate.method_name.should eq :gt
|
111
|
+
predicate.value.should eq 1
|
112
|
+
end
|
113
|
+
|
114
|
+
it 'creates gteq predicates with >=' do
|
115
|
+
predicate = @g >= 1
|
116
|
+
predicate.expr.should eq @g
|
117
|
+
predicate.method_name.should eq :gteq
|
118
|
+
predicate.value.should eq 1
|
119
|
+
end
|
120
|
+
|
121
|
+
it 'creates lt predicates with <' do
|
122
|
+
predicate = @g < 1
|
123
|
+
predicate.expr.should eq @g
|
124
|
+
predicate.method_name.should eq :lt
|
125
|
+
predicate.value.should eq 1
|
126
|
+
end
|
127
|
+
|
128
|
+
it 'creates lteq predicates with <=' do
|
129
|
+
predicate = @g <= 1
|
130
|
+
predicate.expr.should eq @g
|
131
|
+
predicate.method_name.should eq :lteq
|
132
|
+
predicate.value.should eq 1
|
133
|
+
end
|
134
|
+
|
135
|
+
it 'can be ORed with another node' do
|
136
|
+
right = Predicate.new :name, :eq, 'Bob'
|
137
|
+
combined = @g | right
|
138
|
+
combined.should be_a Nodes::Or
|
139
|
+
combined.left.should eq @g
|
140
|
+
combined.right.should eq right
|
141
|
+
end
|
142
|
+
|
143
|
+
it 'can be ANDed with another node' do
|
144
|
+
right = Predicate.new :name, :eq, 'Bob'
|
145
|
+
combined = @g & right
|
146
|
+
combined.should be_a Nodes::And
|
147
|
+
combined.children.should eq [@g, right]
|
148
|
+
end
|
149
|
+
|
150
|
+
it 'can be negated' do
|
151
|
+
negated = -@g
|
152
|
+
negated.should be_a Nodes::Not
|
153
|
+
negated.expr.should eq @g
|
154
|
+
end
|
155
|
+
|
156
|
+
describe '#as' do
|
157
|
+
|
158
|
+
it 'aliases the function' do
|
159
|
+
a = @g.as('the_alias')
|
160
|
+
a.should be_a As
|
161
|
+
a.expr.should eq @g
|
162
|
+
a.alias.should eq 'the_alias'
|
163
|
+
end
|
164
|
+
|
165
|
+
it 'casts the alias to a string' do
|
166
|
+
a = @g.as(:the_alias)
|
167
|
+
a.should be_a As
|
168
|
+
a.expr.should eq @g
|
169
|
+
a.alias.should eq 'the_alias'
|
170
|
+
end
|
171
|
+
|
172
|
+
end
|
173
|
+
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
@@ -26,22 +26,21 @@ module Squeel
|
|
26
26
|
it 'creates a KeyPath when sent an unknown method' do
|
27
27
|
keypath = @j.another
|
28
28
|
keypath.should be_a KeyPath
|
29
|
-
keypath.
|
29
|
+
keypath.path.should eq [@j, Stub.new(:another)]
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'creates a KeyPath with a join endpoint when sent a method with a Class param' do
|
33
33
|
keypath = @j.another(Person)
|
34
34
|
keypath.should be_a KeyPath
|
35
|
-
keypath.
|
35
|
+
keypath.path.should eq [@j, Join.new(:another, Arel::InnerJoin, Person)]
|
36
36
|
end
|
37
37
|
|
38
38
|
it 'creates an absolute keypath with just an endpoint with ~' do
|
39
39
|
node = ~@j
|
40
40
|
node.should be_a KeyPath
|
41
|
-
node.path.should eq []
|
42
|
-
node.endpoint.should eq @j
|
41
|
+
node.path.should eq [@j]
|
43
42
|
end
|
44
43
|
|
45
44
|
end
|
46
45
|
end
|
47
|
-
end
|
46
|
+
end
|
@@ -4,19 +4,17 @@ module Squeel
|
|
4
4
|
module Nodes
|
5
5
|
describe KeyPath do
|
6
6
|
before do
|
7
|
-
@k = KeyPath.new(:first, :second)
|
7
|
+
@k = KeyPath.new([:first, :second])
|
8
8
|
end
|
9
9
|
|
10
10
|
it 'appends to its path when endpoint is a Stub' do
|
11
11
|
@k.third.fourth.fifth
|
12
|
-
@k.path.should eq [:first, :second, :third, :fourth]
|
13
|
-
@k.endpoint.should eq Stub.new(:fifth)
|
12
|
+
@k.path.should eq [:first, :second, :third, :fourth, Stub.new(:fifth)]
|
14
13
|
end
|
15
14
|
|
16
15
|
it 'becomes absolute when prefixed with ~' do
|
17
16
|
~@k.third.fourth.fifth
|
18
|
-
@k.path.should eq [:first, :second, :third, :fourth]
|
19
|
-
@k.endpoint.should eq Stub.new(:fifth)
|
17
|
+
@k.path.should eq [:first, :second, :third, :fourth, Stub.new(:fifth)]
|
20
18
|
@k.should be_absolute
|
21
19
|
end
|
22
20
|
|
@@ -16,7 +16,7 @@ module Squeel
|
|
16
16
|
end
|
17
17
|
|
18
18
|
it "creates Operations with #{operator} operator from key paths" do
|
19
|
-
left = KeyPath.new(:first, :second)
|
19
|
+
left = KeyPath.new([:first, :second])
|
20
20
|
node = left.send(operator, 1)
|
21
21
|
node.should be_an Operation
|
22
22
|
node.left.should eq left
|
@@ -55,7 +55,7 @@ module Squeel
|
|
55
55
|
end
|
56
56
|
|
57
57
|
it "creates Operations with custom operator from key paths" do
|
58
|
-
left = KeyPath.new(:first, :second)
|
58
|
+
left = KeyPath.new([:first, :second])
|
59
59
|
node = left.op('||', 1)
|
60
60
|
node.should be_an Operation
|
61
61
|
node.left.should eq left
|
@@ -84,4 +84,4 @@ module Squeel
|
|
84
84
|
|
85
85
|
end
|
86
86
|
end
|
87
|
-
end
|
87
|
+
end
|
@@ -30,38 +30,37 @@ module Squeel
|
|
30
30
|
it 'creates a KeyPath when sent an unknown method' do
|
31
31
|
keypath = @s.another
|
32
32
|
keypath.should be_a KeyPath
|
33
|
-
keypath.
|
33
|
+
keypath.path.should eq [@s, Stub.new(:another)]
|
34
34
|
end
|
35
35
|
|
36
36
|
it 'creates a KeyPath when sent #id' do
|
37
37
|
keypath = @s.id
|
38
38
|
keypath.should be_a KeyPath
|
39
|
-
keypath.
|
39
|
+
keypath.path.should eq [@s, Stub.new(:id)]
|
40
40
|
end
|
41
41
|
|
42
42
|
it 'creates a KeyPath when sent #type' do
|
43
43
|
keypath = @s.type
|
44
44
|
keypath.should be_a KeyPath
|
45
|
-
keypath.
|
45
|
+
keypath.path.should eq [@s, Stub.new(:type)]
|
46
46
|
end
|
47
47
|
|
48
48
|
it 'creates a KeyPath with a join endpoint when sent a method with a Class param' do
|
49
49
|
keypath = @s.another(Person)
|
50
50
|
keypath.should be_a KeyPath
|
51
|
-
keypath.
|
51
|
+
keypath.path.should eq [@s, Join.new(:another, Arel::InnerJoin, Person)]
|
52
52
|
end
|
53
53
|
|
54
54
|
it 'creates a KeyPath with a sifter endpoint when sent #sift' do
|
55
55
|
keypath = @s.sift(:blah, 1)
|
56
56
|
keypath.should be_a KeyPath
|
57
|
-
keypath.
|
57
|
+
keypath.path.should eq [@s, Sifter.new(:blah, [1])]
|
58
58
|
end
|
59
59
|
|
60
60
|
it 'creates an absolute keypath with just an endpoint with ~' do
|
61
61
|
node = ~@s
|
62
62
|
node.should be_a KeyPath
|
63
|
-
node.path.should eq []
|
64
|
-
node.endpoint.should eq @s
|
63
|
+
node.path.should eq [@s]
|
65
64
|
end
|
66
65
|
|
67
66
|
Squeel::Constants::PREDICATES.each do |method_name|
|
@@ -115,6 +115,11 @@ module Squeel
|
|
115
115
|
as.to_sql.should match /"children_people"."name" AS other_name/
|
116
116
|
end
|
117
117
|
|
118
|
+
it 'creates an ARel Grouping node for a Squeel Grouping node' do
|
119
|
+
grouping = @v.accept(dsl{_(id)})
|
120
|
+
grouping.should be_a Arel::Nodes::Grouping
|
121
|
+
end
|
122
|
+
|
118
123
|
it 'creates an ARel Addition node for an Operation node with + as operator' do
|
119
124
|
operation = @v.accept(dsl{id + 1})
|
120
125
|
operation.should be_a Arel::Nodes::Addition
|
@@ -147,4 +152,4 @@ module Squeel
|
|
147
152
|
|
148
153
|
end
|
149
154
|
end
|
150
|
-
end
|
155
|
+
end
|
@@ -55,6 +55,24 @@ module Squeel
|
|
55
55
|
predicate.should eq '1=1'
|
56
56
|
end
|
57
57
|
|
58
|
+
it 'visits Grouping nodes' do
|
59
|
+
predicate = @v.accept(dsl{_(`foo`)})
|
60
|
+
predicate.should be_a Arel::Nodes::Grouping
|
61
|
+
predicate.to_sql.should eq '(foo)'
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'visits Grouping nodes on the attribute side of predicates' do
|
65
|
+
predicate = @v.accept(dsl{_(`foo`) == `foo`})
|
66
|
+
predicate.should be_a Arel::Nodes::Equality
|
67
|
+
predicate.to_sql.should eq '(foo) = foo'
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'visits operations containing Grouping nodes' do
|
71
|
+
predicate = @v.accept(dsl{_(1) + _(1) == 2})
|
72
|
+
predicate.should be_a Arel::Nodes::Equality
|
73
|
+
predicate.to_sql.should eq '(1) + (1) = 2'
|
74
|
+
end
|
75
|
+
|
58
76
|
it 'creates OR nodes against a Literal' do
|
59
77
|
predicate = @v.accept(dsl{`blah` | `blah`})
|
60
78
|
predicate.should be_a Arel::Nodes::Grouping
|
@@ -384,6 +402,16 @@ module Squeel
|
|
384
402
|
function.to_sql.should match /newname/
|
385
403
|
end
|
386
404
|
|
405
|
+
it 'accepts As nodes containing symbols' do
|
406
|
+
as = @v.accept(:name.as('other_name'))
|
407
|
+
as.to_sql.should match /"people"."name" AS other_name/
|
408
|
+
end
|
409
|
+
|
410
|
+
it 'accepts As nodes containing stubs' do
|
411
|
+
as = @v.accept(dsl{name.as(other_name)})
|
412
|
+
as.to_sql.should match /"people"."name" AS other_name/
|
413
|
+
end
|
414
|
+
|
387
415
|
it 'creates an ARel Addition node for an Operation node with + as operator' do
|
388
416
|
operation = @v.accept(dsl{id + 1})
|
389
417
|
operation.should be_a Arel::Nodes::Addition
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: squeel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,12 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-05-
|
13
|
-
default_executable:
|
12
|
+
date: 2012-05-30 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: activerecord
|
17
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
18
17
|
none: false
|
19
18
|
requirements:
|
20
19
|
- - ~>
|
@@ -22,10 +21,15 @@ dependencies:
|
|
22
21
|
version: '3.0'
|
23
22
|
type: :runtime
|
24
23
|
prerelease: false
|
25
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '3.0'
|
26
30
|
- !ruby/object:Gem::Dependency
|
27
31
|
name: activesupport
|
28
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
29
33
|
none: false
|
30
34
|
requirements:
|
31
35
|
- - ~>
|
@@ -33,10 +37,15 @@ dependencies:
|
|
33
37
|
version: '3.0'
|
34
38
|
type: :runtime
|
35
39
|
prerelease: false
|
36
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '3.0'
|
37
46
|
- !ruby/object:Gem::Dependency
|
38
47
|
name: polyamorous
|
39
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
40
49
|
none: false
|
41
50
|
requirements:
|
42
51
|
- - ~>
|
@@ -44,10 +53,15 @@ dependencies:
|
|
44
53
|
version: 0.5.0
|
45
54
|
type: :runtime
|
46
55
|
prerelease: false
|
47
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.5.0
|
48
62
|
- !ruby/object:Gem::Dependency
|
49
63
|
name: rspec
|
50
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
51
65
|
none: false
|
52
66
|
requirements:
|
53
67
|
- - ~>
|
@@ -55,10 +69,15 @@ dependencies:
|
|
55
69
|
version: 2.6.0
|
56
70
|
type: :development
|
57
71
|
prerelease: false
|
58
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 2.6.0
|
59
78
|
- !ruby/object:Gem::Dependency
|
60
79
|
name: machinist
|
61
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
62
81
|
none: false
|
63
82
|
requirements:
|
64
83
|
- - ~>
|
@@ -66,10 +85,15 @@ dependencies:
|
|
66
85
|
version: 1.0.6
|
67
86
|
type: :development
|
68
87
|
prerelease: false
|
69
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 1.0.6
|
70
94
|
- !ruby/object:Gem::Dependency
|
71
95
|
name: faker
|
72
|
-
requirement:
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
73
97
|
none: false
|
74
98
|
requirements:
|
75
99
|
- - ~>
|
@@ -77,10 +101,15 @@ dependencies:
|
|
77
101
|
version: 0.9.5
|
78
102
|
type: :development
|
79
103
|
prerelease: false
|
80
|
-
version_requirements:
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 0.9.5
|
81
110
|
- !ruby/object:Gem::Dependency
|
82
111
|
name: sqlite3
|
83
|
-
requirement:
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
84
113
|
none: false
|
85
114
|
requirements:
|
86
115
|
- - ~>
|
@@ -88,7 +117,12 @@ dependencies:
|
|
88
117
|
version: 1.3.3
|
89
118
|
type: :development
|
90
119
|
prerelease: false
|
91
|
-
version_requirements:
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ~>
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: 1.3.3
|
92
126
|
description: ! "\n Squeel unlocks the power of ARel in your Rails 3 application
|
93
127
|
with\n a handy block-based syntax. You can write subqueries, access named\n
|
94
128
|
\ functions provided by your RDBMS, and more, all without writing\n SQL
|
@@ -102,6 +136,7 @@ files:
|
|
102
136
|
- .gitignore
|
103
137
|
- .travis.yml
|
104
138
|
- .yardopts
|
139
|
+
- CHANGELOG.md
|
105
140
|
- Gemfile
|
106
141
|
- LICENSE
|
107
142
|
- README.md
|
@@ -114,10 +149,12 @@ files:
|
|
114
149
|
- lib/squeel/adapters/active_record/3.0/compat.rb
|
115
150
|
- lib/squeel/adapters/active_record/3.0/context.rb
|
116
151
|
- lib/squeel/adapters/active_record/3.0/relation_extensions.rb
|
152
|
+
- lib/squeel/adapters/active_record/3.1/compat.rb
|
117
153
|
- lib/squeel/adapters/active_record/3.1/context.rb
|
118
154
|
- lib/squeel/adapters/active_record/3.1/preloader_extensions.rb
|
119
155
|
- lib/squeel/adapters/active_record/3.1/relation_extensions.rb
|
120
156
|
- lib/squeel/adapters/active_record/base_extensions.rb
|
157
|
+
- lib/squeel/adapters/active_record/compat.rb
|
121
158
|
- lib/squeel/adapters/active_record/context.rb
|
122
159
|
- lib/squeel/adapters/active_record/join_dependency_extensions.rb
|
123
160
|
- lib/squeel/adapters/active_record/preloader_extensions.rb
|
@@ -134,6 +171,7 @@ files:
|
|
134
171
|
- lib/squeel/nodes/as.rb
|
135
172
|
- lib/squeel/nodes/binary.rb
|
136
173
|
- lib/squeel/nodes/function.rb
|
174
|
+
- lib/squeel/nodes/grouping.rb
|
137
175
|
- lib/squeel/nodes/join.rb
|
138
176
|
- lib/squeel/nodes/key_path.rb
|
139
177
|
- lib/squeel/nodes/literal.rb
|
@@ -143,12 +181,13 @@ files:
|
|
143
181
|
- lib/squeel/nodes/operators.rb
|
144
182
|
- lib/squeel/nodes/or.rb
|
145
183
|
- lib/squeel/nodes/order.rb
|
184
|
+
- lib/squeel/nodes/ordering.rb
|
146
185
|
- lib/squeel/nodes/predicate.rb
|
186
|
+
- lib/squeel/nodes/predicate_methods.rb
|
147
187
|
- lib/squeel/nodes/predicate_operators.rb
|
148
188
|
- lib/squeel/nodes/sifter.rb
|
149
189
|
- lib/squeel/nodes/stub.rb
|
150
190
|
- lib/squeel/nodes/unary.rb
|
151
|
-
- lib/squeel/predicate_methods.rb
|
152
191
|
- lib/squeel/version.rb
|
153
192
|
- lib/squeel/visitors.rb
|
154
193
|
- lib/squeel/visitors/attribute_visitor.rb
|
@@ -171,6 +210,7 @@ files:
|
|
171
210
|
- spec/squeel/core_ext/symbol_spec.rb
|
172
211
|
- spec/squeel/dsl_spec.rb
|
173
212
|
- spec/squeel/nodes/function_spec.rb
|
213
|
+
- spec/squeel/nodes/grouping_spec.rb
|
174
214
|
- spec/squeel/nodes/join_spec.rb
|
175
215
|
- spec/squeel/nodes/key_path_spec.rb
|
176
216
|
- spec/squeel/nodes/literal_spec.rb
|
@@ -186,7 +226,6 @@ files:
|
|
186
226
|
- spec/squeel/visitors/symbol_visitor_spec.rb
|
187
227
|
- spec/support/schema.rb
|
188
228
|
- squeel.gemspec
|
189
|
-
has_rdoc: true
|
190
229
|
homepage: http://erniemiller.org/projects/squeel
|
191
230
|
licenses: []
|
192
231
|
post_install_message:
|
@@ -201,7 +240,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
201
240
|
version: '0'
|
202
241
|
segments:
|
203
242
|
- 0
|
204
|
-
hash:
|
243
|
+
hash: -3844391929361765236
|
205
244
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
206
245
|
none: false
|
207
246
|
requirements:
|
@@ -210,10 +249,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
210
249
|
version: '0'
|
211
250
|
segments:
|
212
251
|
- 0
|
213
|
-
hash:
|
252
|
+
hash: -3844391929361765236
|
214
253
|
requirements: []
|
215
254
|
rubyforge_project: squeel
|
216
|
-
rubygems_version: 1.
|
255
|
+
rubygems_version: 1.8.24
|
217
256
|
signing_key:
|
218
257
|
specification_version: 3
|
219
258
|
summary: ActiveRecord 3, improved.
|
@@ -234,6 +273,7 @@ test_files:
|
|
234
273
|
- spec/squeel/core_ext/symbol_spec.rb
|
235
274
|
- spec/squeel/dsl_spec.rb
|
236
275
|
- spec/squeel/nodes/function_spec.rb
|
276
|
+
- spec/squeel/nodes/grouping_spec.rb
|
237
277
|
- spec/squeel/nodes/join_spec.rb
|
238
278
|
- spec/squeel/nodes/key_path_spec.rb
|
239
279
|
- spec/squeel/nodes/literal_spec.rb
|