squeel 1.1.1 → 1.2.1
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 +7 -0
- data/.gitignore +3 -0
- data/.rspec +3 -0
- data/.travis.yml +36 -4
- data/CHANGELOG.md +15 -0
- data/Gemfile +1 -1
- data/README.md +47 -6
- data/Rakefile +14 -2
- data/lib/squeel.rb +9 -1
- data/lib/squeel/adapters/active_record.rb +0 -1
- data/lib/squeel/adapters/active_record/3.0/join_dependency_extensions.rb +1 -0
- data/lib/squeel/adapters/active_record/3.0/relation_extensions.rb +12 -1
- data/lib/squeel/adapters/active_record/3.1/join_dependency_extensions.rb +1 -0
- data/lib/squeel/adapters/active_record/3.2/join_dependency_extensions.rb +1 -0
- data/lib/squeel/adapters/active_record/4.0/join_dependency_extensions.rb +1 -0
- data/lib/squeel/adapters/active_record/4.0/relation_extensions.rb +92 -0
- data/lib/squeel/adapters/active_record/4.1/compat.rb +15 -0
- data/lib/squeel/adapters/active_record/4.1/context.rb +88 -0
- data/lib/squeel/adapters/active_record/4.1/preloader_extensions.rb +31 -0
- data/lib/squeel/adapters/active_record/4.1/reflection_extensions.rb +37 -0
- data/lib/squeel/adapters/active_record/4.1/relation_extensions.rb +307 -0
- data/lib/squeel/adapters/active_record/4.2/compat.rb +1 -0
- data/lib/squeel/adapters/active_record/4.2/context.rb +1 -0
- data/lib/squeel/adapters/active_record/4.2/preloader_extensions.rb +1 -0
- data/lib/squeel/adapters/active_record/4.2/relation_extensions.rb +108 -0
- data/lib/squeel/adapters/active_record/context.rb +7 -7
- data/lib/squeel/adapters/active_record/join_dependency_extensions.rb +9 -13
- data/lib/squeel/adapters/active_record/relation_extensions.rb +38 -8
- data/lib/squeel/core_ext/symbol.rb +3 -3
- data/lib/squeel/dsl.rb +1 -1
- data/lib/squeel/nodes.rb +1 -0
- data/lib/squeel/nodes/as.rb +12 -0
- data/lib/squeel/nodes/join.rb +8 -4
- data/lib/squeel/nodes/key_path.rb +10 -1
- data/lib/squeel/nodes/node.rb +21 -0
- data/lib/squeel/nodes/stub.rb +8 -4
- data/lib/squeel/nodes/subquery_join.rb +44 -0
- data/lib/squeel/version.rb +1 -1
- data/lib/squeel/visitors.rb +2 -0
- data/lib/squeel/visitors/enumeration_visitor.rb +101 -0
- data/lib/squeel/visitors/order_visitor.rb +9 -2
- data/lib/squeel/visitors/predicate_visitor.rb +11 -0
- data/lib/squeel/visitors/preload_visitor.rb +12 -0
- data/lib/squeel/visitors/visitor.rb +89 -13
- data/spec/config.travis.yml +13 -0
- data/spec/config.yml +12 -0
- data/spec/console.rb +3 -12
- data/spec/core_ext/symbol_spec.rb +3 -3
- data/spec/helpers/squeel_helper.rb +8 -5
- data/spec/spec_helper.rb +4 -16
- data/spec/squeel/adapters/active_record/context_spec.rb +8 -4
- data/spec/squeel/adapters/active_record/join_dependency_extensions_spec.rb +123 -38
- data/spec/squeel/adapters/active_record/relation_extensions_spec.rb +350 -124
- data/spec/squeel/core_ext/symbol_spec.rb +3 -3
- data/spec/squeel/nodes/join_spec.rb +4 -4
- data/spec/squeel/nodes/stub_spec.rb +3 -3
- data/spec/squeel/nodes/subquery_join_spec.rb +46 -0
- data/spec/squeel/visitors/order_visitor_spec.rb +3 -3
- data/spec/squeel/visitors/predicate_visitor_spec.rb +69 -36
- data/spec/squeel/visitors/select_visitor_spec.rb +1 -1
- data/spec/squeel/visitors/visitor_spec.rb +7 -6
- data/spec/support/models.rb +99 -15
- data/spec/support/schema.rb +109 -4
- data/squeel.gemspec +8 -6
- metadata +89 -107
- data/.ruby-gemset +0 -1
- data/.ruby-version +0 -1
- data/spec/blueprints/articles.rb +0 -5
- data/spec/blueprints/comments.rb +0 -5
- data/spec/blueprints/notes.rb +0 -3
- data/spec/blueprints/people.rb +0 -4
- data/spec/blueprints/tags.rb +0 -3
data/spec/support/models.rb
CHANGED
@@ -71,9 +71,13 @@ class Article < ActiveRecord::Base
|
|
71
71
|
belongs_to :person
|
72
72
|
has_many :comments
|
73
73
|
has_and_belongs_to_many :tags
|
74
|
-
has_many
|
74
|
+
has_many :notes, :as => :notable
|
75
75
|
has_many :commenters, :through => :comments, :source => :person
|
76
|
-
|
76
|
+
if ActiveRecord::VERSION::MAJOR > 3 && ActiveRecord::VERSION::MINOR >= 1
|
77
|
+
has_many :uniq_commenters, lambda { uniq }, :through => :comments, :source => :person
|
78
|
+
else
|
79
|
+
has_many :uniq_commenters, :through => :comments, :source => :person, :uniq => true
|
80
|
+
end
|
77
81
|
end
|
78
82
|
|
79
83
|
class Comment < ActiveRecord::Base
|
@@ -89,34 +93,114 @@ class Note < ActiveRecord::Base
|
|
89
93
|
belongs_to :notable, :polymorphic => true
|
90
94
|
end
|
91
95
|
|
92
|
-
|
93
|
-
|
96
|
+
class User < ActiveRecord::Base
|
97
|
+
has_many :memberships, as: :member
|
98
|
+
has_many :groups, through: :memberships
|
99
|
+
has_many :packages, through: :groups
|
100
|
+
end
|
101
|
+
|
102
|
+
class Package < ActiveRecord::Base
|
103
|
+
has_many :memberships, as: :member
|
104
|
+
end
|
105
|
+
|
106
|
+
class Membership < ActiveRecord::Base
|
107
|
+
belongs_to :group
|
108
|
+
belongs_to :member, polymorphic: true
|
109
|
+
|
110
|
+
if ActiveRecord::VERSION::MAJOR > 3
|
111
|
+
default_scope -> { where(active: true) }
|
112
|
+
else
|
113
|
+
default_scope where(active: true)
|
114
|
+
end
|
115
|
+
|
116
|
+
before_save :set_active
|
117
|
+
|
118
|
+
def set_active
|
119
|
+
self.active = true
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
class Group < ActiveRecord::Base
|
124
|
+
has_many :memberships
|
125
|
+
has_many :users, through: :memberships, source: :member, source_type: 'User'
|
126
|
+
has_many :packages, through: :memberships, source: :member, source_type: 'Package'
|
127
|
+
end
|
128
|
+
|
129
|
+
class Seat < ActiveRecord::Base
|
130
|
+
belongs_to :payment, dependent: :destroy
|
131
|
+
has_many(:order_items,
|
132
|
+
as: :orderable,
|
133
|
+
autosave: true,
|
134
|
+
dependent: :destroy
|
135
|
+
)
|
136
|
+
end
|
137
|
+
|
138
|
+
class OrderItem < ActiveRecord::Base
|
139
|
+
belongs_to :orderable, polymorphic: true
|
140
|
+
end
|
141
|
+
|
142
|
+
class Payment < ActiveRecord::Base
|
143
|
+
has_many :seats
|
94
144
|
end
|
95
145
|
|
96
146
|
class Models
|
97
147
|
def self.make
|
98
|
-
10.times do
|
99
|
-
|
148
|
+
10.times do |i|
|
149
|
+
# 10 people total, salary gt 30000
|
150
|
+
person = Person.create(name: Faker::Name.name, salary: 30000 + (i + 1) * 1000)
|
100
151
|
2.times do
|
101
|
-
|
152
|
+
# 20 unidentified object total, 2 per person
|
153
|
+
person.unidentified_objects.create(name: Faker::Lorem.words(1).first)
|
102
154
|
end
|
103
|
-
|
155
|
+
# 10 notes based on people total
|
156
|
+
person.notes.create(note: Faker::Lorem.words(7).join(' '))
|
104
157
|
3.times do
|
105
|
-
|
158
|
+
# 30 articles total
|
159
|
+
article = person.articles.create(title: Faker::Lorem.sentence, body: Faker::Lorem.paragraph)
|
106
160
|
3.times do
|
107
|
-
|
161
|
+
# 30 * 3 tags total
|
162
|
+
article.tags << Tag.create(name: Faker::Lorem.words(3).join(' '))
|
108
163
|
end
|
109
|
-
|
164
|
+
# 30 notes based on articles total
|
165
|
+
article.notes.create(note: Faker::Lorem.words(7).join(' '))
|
110
166
|
10.times do
|
111
|
-
|
167
|
+
# 30 * 10 comments based on articles total
|
168
|
+
article.comments.create(body: Faker::Lorem.paragraph)
|
112
169
|
end
|
113
170
|
end
|
114
171
|
2.times do
|
115
|
-
|
172
|
+
# 20 comments based on people total
|
173
|
+
person.comments.create(body: Faker::Lorem.paragraph)
|
116
174
|
end
|
117
175
|
end
|
118
176
|
|
119
|
-
|
120
|
-
|
177
|
+
# an article, a comment based on articles and people
|
178
|
+
Article.create(title: 'Hello, world!', body: Faker::Lorem.paragraph).
|
179
|
+
comments.create(body: 'First post!', person: Person.last)
|
180
|
+
# a comment based on articles and people
|
181
|
+
Article.first.comments.create(body: 'Last post!', person: Article.last.commenters.first)
|
182
|
+
|
183
|
+
# So, we created
|
184
|
+
# 10 people
|
185
|
+
# 31 articles
|
186
|
+
# 322 comments(22 p + 302 a, 2 overlaps)
|
187
|
+
# 40 notes(10 p + 30 a)
|
188
|
+
# 90 tags
|
189
|
+
# 20 unidentified objects
|
190
|
+
|
191
|
+
# has many through polymorphic model examples
|
192
|
+
users = User.create([{ name: 'batman' }, { name: 'robin' }])
|
193
|
+
groups = Group.create([{ name: 'justice league'}, { name: 'batcave stalagmite counting club'}])
|
194
|
+
users.first.groups << groups.first
|
195
|
+
users.first.groups << groups.last
|
196
|
+
users.last.groups << groups.last
|
197
|
+
|
198
|
+
10.times do |i|
|
199
|
+
seat = Seat.create(no: i+1)
|
200
|
+
seat.order_items.create(unit_price: 10, quantity: 1)
|
201
|
+
|
202
|
+
seat.create_payment if i%2 == 0
|
203
|
+
end
|
121
204
|
end
|
122
205
|
end
|
206
|
+
|
data/spec/support/schema.rb
CHANGED
@@ -1,10 +1,79 @@
|
|
1
1
|
require 'active_record'
|
2
2
|
require 'squeel'
|
3
|
+
require 'pathname'
|
4
|
+
require 'yaml'
|
3
5
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
6
|
+
ENV['SQ_DB'] ||= 'sqlite3'
|
7
|
+
|
8
|
+
MYSQL_ENV = ENV['SQ_DB'] =~ /mysql/
|
9
|
+
SQLITE_ENV = ENV['SQ_DB'] == 'sqlite3'
|
10
|
+
PG_ENV = ENV['SQ_DB'] == 'postgresql'
|
11
|
+
Q = MYSQL_ENV ? '`' : '"' #Quotes difference in MySQL
|
12
|
+
|
13
|
+
module Squeel
|
14
|
+
module Test
|
15
|
+
extend self
|
16
|
+
|
17
|
+
def config
|
18
|
+
@config ||= read_config
|
19
|
+
end
|
20
|
+
|
21
|
+
def read_config
|
22
|
+
config_file = Pathname.new(ENV['SQ_CONFIG_FILE'] || File.expand_path('../../', __FILE__) + '/config.yml')
|
23
|
+
expand_config(YAML.parse(config_file.read).transform)
|
24
|
+
end
|
25
|
+
|
26
|
+
def expand_config(config)
|
27
|
+
config["databases"].each do |adapter, connection|
|
28
|
+
connection['adapter'] ||= adapter
|
29
|
+
end
|
30
|
+
|
31
|
+
config
|
32
|
+
end
|
33
|
+
|
34
|
+
def build_connection(adapter)
|
35
|
+
case adapter
|
36
|
+
when 'sqlite3'
|
37
|
+
ActiveRecord::Base.establish_connection(
|
38
|
+
:adapter => 'sqlite3',
|
39
|
+
:database => ':memory:'
|
40
|
+
)
|
41
|
+
else
|
42
|
+
Squeel::Test.send "rebuild_#{ENV['SQ_DB']}_db"
|
43
|
+
|
44
|
+
ActiveRecord::Base.establish_connection(
|
45
|
+
Squeel::Test.config['databases'][ENV['SQ_DB']]
|
46
|
+
)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
def rebuild_mysql_db
|
52
|
+
config = self.config['databases']['mysql']
|
53
|
+
%x( mysqladmin --user=#{config['username']} -f drop #{config['database']} )
|
54
|
+
%x( mysql --user=#{config['username']} -e "create DATABASE #{config['database']} DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci ")
|
55
|
+
end
|
56
|
+
|
57
|
+
def rebuild_mysql2_db
|
58
|
+
config = self.config['databases']['mysql2']
|
59
|
+
%x( mysqladmin --user=#{config['username']} -f drop #{config['database']} )
|
60
|
+
%x( mysql --user=#{config['username']} -e "create DATABASE #{config['database']} DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci ")
|
61
|
+
end
|
62
|
+
|
63
|
+
def rebuild_postgresql_db
|
64
|
+
config = self.config['databases']['postgresql']
|
65
|
+
%x( dropdb #{config['database']} )
|
66
|
+
%x( createdb -E UTF8 -T template0 #{config['database']} )
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
case ENV['SQ_DB']
|
72
|
+
when 'sqlite3', 'mysql', 'mysql2', 'postgresql'
|
73
|
+
Squeel::Test.build_connection(ENV['SQ_DB'])
|
74
|
+
else
|
75
|
+
raise RuntimeError, "Error SQ_DB setting, must be included in sqlite3, mysql, mysql2, postgresql."
|
76
|
+
end
|
8
77
|
|
9
78
|
silence_stream(STDOUT) do
|
10
79
|
ActiveRecord::Migration.verbose = false
|
@@ -53,6 +122,42 @@ silence_stream(STDOUT) do
|
|
53
122
|
t.string :note
|
54
123
|
end
|
55
124
|
|
125
|
+
# Test for polymorphic with source_type
|
126
|
+
create_table :users do |t|
|
127
|
+
t.string :name
|
128
|
+
end
|
129
|
+
|
130
|
+
create_table :memberships do |t|
|
131
|
+
t.references :group
|
132
|
+
t.integer :member_id
|
133
|
+
t.string :member_type
|
134
|
+
t.boolean :active
|
135
|
+
end
|
136
|
+
|
137
|
+
create_table :packages do |t|
|
138
|
+
t.string :name
|
139
|
+
end
|
140
|
+
|
141
|
+
create_table :groups do |t|
|
142
|
+
t.string :name
|
143
|
+
end
|
144
|
+
|
145
|
+
create_table :seats do |t|
|
146
|
+
t.string :no
|
147
|
+
t.integer :payment_id
|
148
|
+
end
|
149
|
+
|
150
|
+
create_table :order_items do |t|
|
151
|
+
t.string :orderable_type
|
152
|
+
t.integer :orderable_id
|
153
|
+
t.integer :quantity
|
154
|
+
t.integer :unit_price
|
155
|
+
end
|
156
|
+
|
157
|
+
create_table :payments do |t|
|
158
|
+
|
159
|
+
end
|
160
|
+
|
56
161
|
end
|
57
162
|
end
|
58
163
|
|
data/squeel.gemspec
CHANGED
@@ -8,23 +8,25 @@ Gem::Specification.new do |s|
|
|
8
8
|
s.platform = Gem::Platform::RUBY
|
9
9
|
s.authors = ["Ernie Miller"]
|
10
10
|
s.email = ["ernie@erniemiller.org"]
|
11
|
-
s.homepage = "
|
12
|
-
s.summary = %q{Active Record
|
11
|
+
s.homepage = "https://github.com/ernie/squeel"
|
12
|
+
s.summary = %q{Active Record, improved.}
|
13
13
|
s.description = %q{
|
14
|
-
Squeel unlocks the power of Arel in your Rails
|
14
|
+
Squeel unlocks the power of Arel in your Rails application with
|
15
15
|
a handy block-based syntax. You can write subqueries, access named
|
16
16
|
functions provided by your RDBMS, and more, all without writing
|
17
|
-
SQL strings.
|
17
|
+
SQL strings. Supporting Rails 3 and 4.
|
18
18
|
}
|
19
19
|
s.rubyforge_project = "squeel"
|
20
20
|
|
21
21
|
s.add_dependency 'activerecord', '>= 3.0'
|
22
22
|
s.add_dependency 'activesupport', '>= 3.0'
|
23
|
-
s.add_dependency 'polyamorous', '~>
|
23
|
+
s.add_dependency 'polyamorous', '~> 1.1.0'
|
24
24
|
s.add_development_dependency 'rspec', '~> 2.6.0'
|
25
|
-
s.add_development_dependency 'machinist', '~> 1.0.6'
|
26
25
|
s.add_development_dependency 'faker', '~> 0.9.5'
|
27
26
|
s.add_development_dependency 'sqlite3', '~> 1.3.3'
|
27
|
+
s.add_development_dependency 'mysql', '~> 2.9.1'
|
28
|
+
s.add_development_dependency 'mysql2', '~> 0.3.16'
|
29
|
+
s.add_development_dependency 'pg', '~> 0.17.1'
|
28
30
|
|
29
31
|
s.files = `git ls-files`.split("\n")
|
30
32
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
metadata
CHANGED
@@ -1,143 +1,155 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: squeel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
5
|
-
prerelease:
|
4
|
+
version: 1.2.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Ernie Miller
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-07-18 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: activerecord
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '3.0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '3.0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: activesupport
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '3.0'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ">="
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '3.0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: polyamorous
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- - ~>
|
45
|
+
- - "~>"
|
52
46
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
47
|
+
version: 1.1.0
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- - ~>
|
52
|
+
- - "~>"
|
60
53
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
54
|
+
version: 1.1.0
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: rspec
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- - ~>
|
59
|
+
- - "~>"
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: 2.6.0
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- - ~>
|
66
|
+
- - "~>"
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: 2.6.0
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
|
-
name:
|
70
|
+
name: faker
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- - ~>
|
73
|
+
- - "~>"
|
84
74
|
- !ruby/object:Gem::Version
|
85
|
-
version:
|
75
|
+
version: 0.9.5
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- - ~>
|
80
|
+
- - "~>"
|
92
81
|
- !ruby/object:Gem::Version
|
93
|
-
version:
|
82
|
+
version: 0.9.5
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
|
-
name:
|
84
|
+
name: sqlite3
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- - ~>
|
87
|
+
- - "~>"
|
100
88
|
- !ruby/object:Gem::Version
|
101
|
-
version:
|
89
|
+
version: 1.3.3
|
102
90
|
type: :development
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- - ~>
|
94
|
+
- - "~>"
|
108
95
|
- !ruby/object:Gem::Version
|
109
|
-
version:
|
96
|
+
version: 1.3.3
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
|
-
name:
|
98
|
+
name: mysql
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
|
-
- - ~>
|
101
|
+
- - "~>"
|
116
102
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
103
|
+
version: 2.9.1
|
118
104
|
type: :development
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
|
-
- - ~>
|
108
|
+
- - "~>"
|
124
109
|
- !ruby/object:Gem::Version
|
125
|
-
version:
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
110
|
+
version: 2.9.1
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: mysql2
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 0.3.16
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 0.3.16
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: pg
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: 0.17.1
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: 0.17.1
|
139
|
+
description: "\n Squeel unlocks the power of Arel in your Rails application with\n
|
140
|
+
\ a handy block-based syntax. You can write subqueries, access named\n functions
|
141
|
+
provided by your RDBMS, and more, all without writing\n SQL strings. Supporting
|
142
|
+
Rails 3 and 4.\n "
|
130
143
|
email:
|
131
144
|
- ernie@erniemiller.org
|
132
145
|
executables: []
|
133
146
|
extensions: []
|
134
147
|
extra_rdoc_files: []
|
135
148
|
files:
|
136
|
-
- .gitignore
|
137
|
-
- .
|
138
|
-
- .
|
139
|
-
- .
|
140
|
-
- .yardopts
|
149
|
+
- ".gitignore"
|
150
|
+
- ".rspec"
|
151
|
+
- ".travis.yml"
|
152
|
+
- ".yardopts"
|
141
153
|
- CHANGELOG.md
|
142
154
|
- Gemfile
|
143
155
|
- LICENSE
|
@@ -150,19 +162,32 @@ files:
|
|
150
162
|
- lib/squeel/adapters/active_record/3.0/association_preload_extensions.rb
|
151
163
|
- lib/squeel/adapters/active_record/3.0/compat.rb
|
152
164
|
- lib/squeel/adapters/active_record/3.0/context.rb
|
165
|
+
- lib/squeel/adapters/active_record/3.0/join_dependency_extensions.rb
|
153
166
|
- lib/squeel/adapters/active_record/3.0/relation_extensions.rb
|
154
167
|
- lib/squeel/adapters/active_record/3.1/compat.rb
|
155
168
|
- lib/squeel/adapters/active_record/3.1/context.rb
|
169
|
+
- lib/squeel/adapters/active_record/3.1/join_dependency_extensions.rb
|
156
170
|
- lib/squeel/adapters/active_record/3.1/preloader_extensions.rb
|
157
171
|
- lib/squeel/adapters/active_record/3.1/relation_extensions.rb
|
158
172
|
- lib/squeel/adapters/active_record/3.2/compat.rb
|
159
173
|
- lib/squeel/adapters/active_record/3.2/context.rb
|
174
|
+
- lib/squeel/adapters/active_record/3.2/join_dependency_extensions.rb
|
160
175
|
- lib/squeel/adapters/active_record/3.2/preloader_extensions.rb
|
161
176
|
- lib/squeel/adapters/active_record/3.2/relation_extensions.rb
|
162
177
|
- lib/squeel/adapters/active_record/4.0/compat.rb
|
163
178
|
- lib/squeel/adapters/active_record/4.0/context.rb
|
179
|
+
- lib/squeel/adapters/active_record/4.0/join_dependency_extensions.rb
|
164
180
|
- lib/squeel/adapters/active_record/4.0/preloader_extensions.rb
|
165
181
|
- lib/squeel/adapters/active_record/4.0/relation_extensions.rb
|
182
|
+
- lib/squeel/adapters/active_record/4.1/compat.rb
|
183
|
+
- lib/squeel/adapters/active_record/4.1/context.rb
|
184
|
+
- lib/squeel/adapters/active_record/4.1/preloader_extensions.rb
|
185
|
+
- lib/squeel/adapters/active_record/4.1/reflection_extensions.rb
|
186
|
+
- lib/squeel/adapters/active_record/4.1/relation_extensions.rb
|
187
|
+
- lib/squeel/adapters/active_record/4.2/compat.rb
|
188
|
+
- lib/squeel/adapters/active_record/4.2/context.rb
|
189
|
+
- lib/squeel/adapters/active_record/4.2/preloader_extensions.rb
|
190
|
+
- lib/squeel/adapters/active_record/4.2/relation_extensions.rb
|
166
191
|
- lib/squeel/adapters/active_record/base_extensions.rb
|
167
192
|
- lib/squeel/adapters/active_record/compat.rb
|
168
193
|
- lib/squeel/adapters/active_record/context.rb
|
@@ -198,9 +223,11 @@ files:
|
|
198
223
|
- lib/squeel/nodes/predicate_operators.rb
|
199
224
|
- lib/squeel/nodes/sifter.rb
|
200
225
|
- lib/squeel/nodes/stub.rb
|
226
|
+
- lib/squeel/nodes/subquery_join.rb
|
201
227
|
- lib/squeel/nodes/unary.rb
|
202
228
|
- lib/squeel/version.rb
|
203
229
|
- lib/squeel/visitors.rb
|
230
|
+
- lib/squeel/visitors/enumeration_visitor.rb
|
204
231
|
- lib/squeel/visitors/from_visitor.rb
|
205
232
|
- lib/squeel/visitors/group_visitor.rb
|
206
233
|
- lib/squeel/visitors/having_visitor.rb
|
@@ -211,11 +238,8 @@ files:
|
|
211
238
|
- lib/squeel/visitors/select_visitor.rb
|
212
239
|
- lib/squeel/visitors/visitor.rb
|
213
240
|
- lib/squeel/visitors/where_visitor.rb
|
214
|
-
- spec/
|
215
|
-
- spec/
|
216
|
-
- spec/blueprints/notes.rb
|
217
|
-
- spec/blueprints/people.rb
|
218
|
-
- spec/blueprints/tags.rb
|
241
|
+
- spec/config.travis.yml
|
242
|
+
- spec/config.yml
|
219
243
|
- spec/console.rb
|
220
244
|
- spec/core_ext/symbol_spec.rb
|
221
245
|
- spec/helpers/squeel_helper.rb
|
@@ -239,6 +263,7 @@ files:
|
|
239
263
|
- spec/squeel/nodes/predicate_spec.rb
|
240
264
|
- spec/squeel/nodes/sifter_spec.rb
|
241
265
|
- spec/squeel/nodes/stub_spec.rb
|
266
|
+
- spec/squeel/nodes/subquery_join_spec.rb
|
242
267
|
- spec/squeel/visitors/from_visitor_spec.rb
|
243
268
|
- spec/squeel/visitors/order_visitor_spec.rb
|
244
269
|
- spec/squeel/visitors/predicate_visitor_spec.rb
|
@@ -248,70 +273,27 @@ files:
|
|
248
273
|
- spec/support/models.rb
|
249
274
|
- spec/support/schema.rb
|
250
275
|
- squeel.gemspec
|
251
|
-
homepage:
|
276
|
+
homepage: https://github.com/ernie/squeel
|
252
277
|
licenses: []
|
278
|
+
metadata: {}
|
253
279
|
post_install_message:
|
254
280
|
rdoc_options: []
|
255
281
|
require_paths:
|
256
282
|
- lib
|
257
283
|
required_ruby_version: !ruby/object:Gem::Requirement
|
258
|
-
none: false
|
259
284
|
requirements:
|
260
|
-
- -
|
285
|
+
- - ">="
|
261
286
|
- !ruby/object:Gem::Version
|
262
287
|
version: '0'
|
263
|
-
segments:
|
264
|
-
- 0
|
265
|
-
hash: 2299455513016806786
|
266
288
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
267
|
-
none: false
|
268
289
|
requirements:
|
269
|
-
- -
|
290
|
+
- - ">="
|
270
291
|
- !ruby/object:Gem::Version
|
271
292
|
version: '0'
|
272
|
-
segments:
|
273
|
-
- 0
|
274
|
-
hash: 2299455513016806786
|
275
293
|
requirements: []
|
276
294
|
rubyforge_project: squeel
|
277
|
-
rubygems_version:
|
295
|
+
rubygems_version: 2.2.2
|
278
296
|
signing_key:
|
279
|
-
specification_version:
|
280
|
-
summary: Active Record
|
281
|
-
test_files:
|
282
|
-
- spec/blueprints/articles.rb
|
283
|
-
- spec/blueprints/comments.rb
|
284
|
-
- spec/blueprints/notes.rb
|
285
|
-
- spec/blueprints/people.rb
|
286
|
-
- spec/blueprints/tags.rb
|
287
|
-
- spec/console.rb
|
288
|
-
- spec/core_ext/symbol_spec.rb
|
289
|
-
- spec/helpers/squeel_helper.rb
|
290
|
-
- spec/spec_helper.rb
|
291
|
-
- spec/squeel/adapters/active_record/base_extensions_spec.rb
|
292
|
-
- spec/squeel/adapters/active_record/context_spec.rb
|
293
|
-
- spec/squeel/adapters/active_record/join_dependency_extensions_spec.rb
|
294
|
-
- spec/squeel/adapters/active_record/relation_extensions_spec.rb
|
295
|
-
- spec/squeel/core_ext/symbol_spec.rb
|
296
|
-
- spec/squeel/dsl_spec.rb
|
297
|
-
- spec/squeel/nodes/as_spec.rb
|
298
|
-
- spec/squeel/nodes/function_spec.rb
|
299
|
-
- spec/squeel/nodes/grouping_spec.rb
|
300
|
-
- spec/squeel/nodes/join_spec.rb
|
301
|
-
- spec/squeel/nodes/key_path_spec.rb
|
302
|
-
- spec/squeel/nodes/literal_spec.rb
|
303
|
-
- spec/squeel/nodes/operation_spec.rb
|
304
|
-
- spec/squeel/nodes/operators_spec.rb
|
305
|
-
- spec/squeel/nodes/order_spec.rb
|
306
|
-
- spec/squeel/nodes/predicate_operators_spec.rb
|
307
|
-
- spec/squeel/nodes/predicate_spec.rb
|
308
|
-
- spec/squeel/nodes/sifter_spec.rb
|
309
|
-
- spec/squeel/nodes/stub_spec.rb
|
310
|
-
- spec/squeel/visitors/from_visitor_spec.rb
|
311
|
-
- spec/squeel/visitors/order_visitor_spec.rb
|
312
|
-
- spec/squeel/visitors/predicate_visitor_spec.rb
|
313
|
-
- spec/squeel/visitors/preload_visitor_spec.rb
|
314
|
-
- spec/squeel/visitors/select_visitor_spec.rb
|
315
|
-
- spec/squeel/visitors/visitor_spec.rb
|
316
|
-
- spec/support/models.rb
|
317
|
-
- spec/support/schema.rb
|
297
|
+
specification_version: 4
|
298
|
+
summary: Active Record, improved.
|
299
|
+
test_files: []
|