arel 2.2.3 → 3.0.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +0 -2
- data/arel.gemspec +11 -14
- data/lib/arel.rb +1 -1
- data/lib/arel/nodes/node.rb +1 -1
- data/lib/arel/nodes/sql_literal.rb +0 -3
- data/lib/arel/select_manager.rb +4 -4
- data/lib/arel/visitors/depth_first.rb +0 -1
- data/lib/arel/visitors/dot.rb +0 -1
- data/lib/arel/visitors/to_sql.rb +13 -20
- data/test/nodes/test_node.rb +0 -1
- data/test/support/fake_record.rb +13 -3
- data/test/visitors/test_ibm_db.rb +1 -1
- data/test/visitors/test_informix.rb +1 -1
- data/test/visitors/test_join_sql.rb +1 -1
- data/test/visitors/test_mssql.rb +1 -1
- data/test/visitors/test_mysql.rb +1 -1
- data/test/visitors/test_postgres.rb +1 -1
- data/test/visitors/test_to_sql.rb +3 -27
- metadata +16 -19
- data/lib/arel/visitors/bind_visitor.rb +0 -24
- data/test/visitors/test_bind_visitor.rb +0 -39
data/Manifest.txt
CHANGED
@@ -62,7 +62,6 @@ lib/arel/table.rb
|
|
62
62
|
lib/arel/tree_manager.rb
|
63
63
|
lib/arel/update_manager.rb
|
64
64
|
lib/arel/visitors.rb
|
65
|
-
lib/arel/visitors/bind_visitor.rb
|
66
65
|
lib/arel/visitors/depth_first.rb
|
67
66
|
lib/arel/visitors/dot.rb
|
68
67
|
lib/arel/visitors/ibm_db.rb
|
@@ -107,7 +106,6 @@ test/test_insert_manager.rb
|
|
107
106
|
test/test_select_manager.rb
|
108
107
|
test/test_table.rb
|
109
108
|
test/test_update_manager.rb
|
110
|
-
test/visitors/test_bind_visitor.rb
|
111
109
|
test/visitors/test_depth_first.rb
|
112
110
|
test/visitors/test_dot.rb
|
113
111
|
test/visitors/test_ibm_db.rb
|
data/arel.gemspec
CHANGED
@@ -2,38 +2,35 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "arel"
|
5
|
-
s.version = "
|
5
|
+
s.version = "3.0.0.pre.20111119204131"
|
6
6
|
|
7
|
-
s.required_rubygems_version = Gem::Requirement.new("
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Aaron Patterson", "Bryan Halmkamp", "Emilio Tagua", "Nick Kallen"]
|
9
|
-
s.date = "
|
9
|
+
s.date = "2011-11-20"
|
10
10
|
s.description = "Arel is a SQL AST manager for Ruby. It\n\n1. Simplifies the generation of complex SQL queries\n2. Adapts to various RDBMS systems\n\nIt is intended to be a framework framework; that is, you can build your own ORM\nwith it, focusing on innovative object and collection modeling as opposed to\ndatabase compatibility and query generation."
|
11
11
|
s.email = ["aaron@tenderlovemaking.com", "bryan@brynary.com", "miloops@gmail.com", "nick@example.org"]
|
12
12
|
s.extra_rdoc_files = ["History.txt", "MIT-LICENSE.txt", "Manifest.txt", "README.markdown"]
|
13
|
-
s.files = [".autotest", ".gemtest", ".travis.yml", "Gemfile", "History.txt", "MIT-LICENSE.txt", "Manifest.txt", "README.markdown", "Rakefile", "arel.gemspec", "lib/arel.rb", "lib/arel/alias_predication.rb", "lib/arel/attributes.rb", "lib/arel/attributes/attribute.rb", "lib/arel/compatibility/wheres.rb", "lib/arel/crud.rb", "lib/arel/delete_manager.rb", "lib/arel/deprecated.rb", "lib/arel/expression.rb", "lib/arel/expressions.rb", "lib/arel/factory_methods.rb", "lib/arel/insert_manager.rb", "lib/arel/math.rb", "lib/arel/nodes.rb", "lib/arel/nodes/and.rb", "lib/arel/nodes/ascending.rb", "lib/arel/nodes/binary.rb", "lib/arel/nodes/count.rb", "lib/arel/nodes/delete_statement.rb", "lib/arel/nodes/descending.rb", "lib/arel/nodes/equality.rb", "lib/arel/nodes/false.rb", "lib/arel/nodes/function.rb", "lib/arel/nodes/in.rb", "lib/arel/nodes/infix_operation.rb", "lib/arel/nodes/inner_join.rb", "lib/arel/nodes/insert_statement.rb", "lib/arel/nodes/join_source.rb", "lib/arel/nodes/named_function.rb", "lib/arel/nodes/node.rb", "lib/arel/nodes/ordering.rb", "lib/arel/nodes/outer_join.rb", "lib/arel/nodes/select_core.rb", "lib/arel/nodes/select_statement.rb", "lib/arel/nodes/sql_literal.rb", "lib/arel/nodes/string_join.rb", "lib/arel/nodes/table_alias.rb", "lib/arel/nodes/terminal.rb", "lib/arel/nodes/true.rb", "lib/arel/nodes/unary.rb", "lib/arel/nodes/unqualified_column.rb", "lib/arel/nodes/update_statement.rb", "lib/arel/nodes/values.rb", "lib/arel/nodes/with.rb", "lib/arel/order_predications.rb", "lib/arel/predications.rb", "lib/arel/relation.rb", "lib/arel/select_manager.rb", "lib/arel/sql/engine.rb", "lib/arel/sql_literal.rb", "lib/arel/table.rb", "lib/arel/tree_manager.rb", "lib/arel/update_manager.rb", "lib/arel/visitors.rb", "lib/arel/visitors/
|
13
|
+
s.files = [".autotest", ".gemtest", ".travis.yml", "Gemfile", "History.txt", "MIT-LICENSE.txt", "Manifest.txt", "README.markdown", "Rakefile", "arel.gemspec", "lib/arel.rb", "lib/arel/alias_predication.rb", "lib/arel/attributes.rb", "lib/arel/attributes/attribute.rb", "lib/arel/compatibility/wheres.rb", "lib/arel/crud.rb", "lib/arel/delete_manager.rb", "lib/arel/deprecated.rb", "lib/arel/expression.rb", "lib/arel/expressions.rb", "lib/arel/factory_methods.rb", "lib/arel/insert_manager.rb", "lib/arel/math.rb", "lib/arel/nodes.rb", "lib/arel/nodes/and.rb", "lib/arel/nodes/ascending.rb", "lib/arel/nodes/binary.rb", "lib/arel/nodes/count.rb", "lib/arel/nodes/delete_statement.rb", "lib/arel/nodes/descending.rb", "lib/arel/nodes/equality.rb", "lib/arel/nodes/false.rb", "lib/arel/nodes/function.rb", "lib/arel/nodes/in.rb", "lib/arel/nodes/infix_operation.rb", "lib/arel/nodes/inner_join.rb", "lib/arel/nodes/insert_statement.rb", "lib/arel/nodes/join_source.rb", "lib/arel/nodes/named_function.rb", "lib/arel/nodes/node.rb", "lib/arel/nodes/ordering.rb", "lib/arel/nodes/outer_join.rb", "lib/arel/nodes/select_core.rb", "lib/arel/nodes/select_statement.rb", "lib/arel/nodes/sql_literal.rb", "lib/arel/nodes/string_join.rb", "lib/arel/nodes/table_alias.rb", "lib/arel/nodes/terminal.rb", "lib/arel/nodes/true.rb", "lib/arel/nodes/unary.rb", "lib/arel/nodes/unqualified_column.rb", "lib/arel/nodes/update_statement.rb", "lib/arel/nodes/values.rb", "lib/arel/nodes/with.rb", "lib/arel/order_predications.rb", "lib/arel/predications.rb", "lib/arel/relation.rb", "lib/arel/select_manager.rb", "lib/arel/sql/engine.rb", "lib/arel/sql_literal.rb", "lib/arel/table.rb", "lib/arel/tree_manager.rb", "lib/arel/update_manager.rb", "lib/arel/visitors.rb", "lib/arel/visitors/depth_first.rb", "lib/arel/visitors/dot.rb", "lib/arel/visitors/ibm_db.rb", "lib/arel/visitors/informix.rb", "lib/arel/visitors/join_sql.rb", "lib/arel/visitors/mssql.rb", "lib/arel/visitors/mysql.rb", "lib/arel/visitors/oracle.rb", "lib/arel/visitors/order_clauses.rb", "lib/arel/visitors/postgresql.rb", "lib/arel/visitors/sqlite.rb", "lib/arel/visitors/to_sql.rb", "lib/arel/visitors/visitor.rb", "lib/arel/visitors/where_sql.rb", "test/attributes/test_attribute.rb", "test/helper.rb", "test/nodes/test_as.rb", "test/nodes/test_ascending.rb", "test/nodes/test_bin.rb", "test/nodes/test_count.rb", "test/nodes/test_delete_statement.rb", "test/nodes/test_descending.rb", "test/nodes/test_equality.rb", "test/nodes/test_infix_operation.rb", "test/nodes/test_insert_statement.rb", "test/nodes/test_named_function.rb", "test/nodes/test_node.rb", "test/nodes/test_not.rb", "test/nodes/test_or.rb", "test/nodes/test_select_core.rb", "test/nodes/test_select_statement.rb", "test/nodes/test_sql_literal.rb", "test/nodes/test_sum.rb", "test/nodes/test_update_statement.rb", "test/support/fake_record.rb", "test/test_activerecord_compat.rb", "test/test_attributes.rb", "test/test_crud.rb", "test/test_delete_manager.rb", "test/test_factory_methods.rb", "test/test_insert_manager.rb", "test/test_select_manager.rb", "test/test_table.rb", "test/test_update_manager.rb", "test/visitors/test_depth_first.rb", "test/visitors/test_dot.rb", "test/visitors/test_ibm_db.rb", "test/visitors/test_informix.rb", "test/visitors/test_join_sql.rb", "test/visitors/test_mssql.rb", "test/visitors/test_mysql.rb", "test/visitors/test_oracle.rb", "test/visitors/test_postgres.rb", "test/visitors/test_sqlite.rb", "test/visitors/test_to_sql.rb"]
|
14
14
|
s.homepage = "http://github.com/rails/arel"
|
15
15
|
s.rdoc_options = ["--main", "README.markdown"]
|
16
16
|
s.require_paths = ["lib"]
|
17
17
|
s.rubyforge_project = "arel"
|
18
18
|
s.rubygems_version = "1.8.11"
|
19
19
|
s.summary = "Arel is a SQL AST manager for Ruby"
|
20
|
-
s.test_files = ["test/attributes/test_attribute.rb", "test/nodes/test_as.rb", "test/nodes/test_ascending.rb", "test/nodes/test_bin.rb", "test/nodes/test_count.rb", "test/nodes/test_delete_statement.rb", "test/nodes/test_descending.rb", "test/nodes/test_equality.rb", "test/nodes/test_infix_operation.rb", "test/nodes/test_insert_statement.rb", "test/nodes/test_named_function.rb", "test/nodes/test_node.rb", "test/nodes/test_not.rb", "test/nodes/test_or.rb", "test/nodes/test_select_core.rb", "test/nodes/test_select_statement.rb", "test/nodes/test_sql_literal.rb", "test/nodes/test_sum.rb", "test/nodes/test_update_statement.rb", "test/test_activerecord_compat.rb", "test/test_attributes.rb", "test/test_crud.rb", "test/test_delete_manager.rb", "test/test_factory_methods.rb", "test/test_insert_manager.rb", "test/test_select_manager.rb", "test/test_table.rb", "test/test_update_manager.rb", "test/visitors/
|
20
|
+
s.test_files = ["test/attributes/test_attribute.rb", "test/nodes/test_as.rb", "test/nodes/test_ascending.rb", "test/nodes/test_bin.rb", "test/nodes/test_count.rb", "test/nodes/test_delete_statement.rb", "test/nodes/test_descending.rb", "test/nodes/test_equality.rb", "test/nodes/test_infix_operation.rb", "test/nodes/test_insert_statement.rb", "test/nodes/test_named_function.rb", "test/nodes/test_node.rb", "test/nodes/test_not.rb", "test/nodes/test_or.rb", "test/nodes/test_select_core.rb", "test/nodes/test_select_statement.rb", "test/nodes/test_sql_literal.rb", "test/nodes/test_sum.rb", "test/nodes/test_update_statement.rb", "test/test_activerecord_compat.rb", "test/test_attributes.rb", "test/test_crud.rb", "test/test_delete_manager.rb", "test/test_factory_methods.rb", "test/test_insert_manager.rb", "test/test_select_manager.rb", "test/test_table.rb", "test/test_update_manager.rb", "test/visitors/test_depth_first.rb", "test/visitors/test_dot.rb", "test/visitors/test_ibm_db.rb", "test/visitors/test_informix.rb", "test/visitors/test_join_sql.rb", "test/visitors/test_mssql.rb", "test/visitors/test_mysql.rb", "test/visitors/test_oracle.rb", "test/visitors/test_postgres.rb", "test/visitors/test_sqlite.rb", "test/visitors/test_to_sql.rb"]
|
21
21
|
|
22
22
|
if s.respond_to? :specification_version then
|
23
23
|
s.specification_version = 3
|
24
24
|
|
25
25
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
26
|
-
s.add_development_dependency(%q<minitest>, ["~> 2.
|
27
|
-
s.add_development_dependency(%q<
|
28
|
-
s.add_development_dependency(%q<hoe>, ["~> 2.13"])
|
26
|
+
s.add_development_dependency(%q<minitest>, ["~> 2.8"])
|
27
|
+
s.add_development_dependency(%q<hoe>, ["~> 2.12"])
|
29
28
|
else
|
30
|
-
s.add_dependency(%q<minitest>, ["~> 2.
|
31
|
-
s.add_dependency(%q<
|
32
|
-
s.add_dependency(%q<hoe>, ["~> 2.13"])
|
29
|
+
s.add_dependency(%q<minitest>, ["~> 2.8"])
|
30
|
+
s.add_dependency(%q<hoe>, ["~> 2.12"])
|
33
31
|
end
|
34
32
|
else
|
35
|
-
s.add_dependency(%q<minitest>, ["~> 2.
|
36
|
-
s.add_dependency(%q<
|
37
|
-
s.add_dependency(%q<hoe>, ["~> 2.13"])
|
33
|
+
s.add_dependency(%q<minitest>, ["~> 2.8"])
|
34
|
+
s.add_dependency(%q<hoe>, ["~> 2.12"])
|
38
35
|
end
|
39
36
|
end
|
data/lib/arel.rb
CHANGED
data/lib/arel/nodes/node.rb
CHANGED
data/lib/arel/select_manager.rb
CHANGED
@@ -51,7 +51,7 @@ module Arel
|
|
51
51
|
if $VERBOSE
|
52
52
|
warn "(#{caller.first}) where_clauses is deprecated and will be removed in arel 3.0.0 with no replacement"
|
53
53
|
end
|
54
|
-
to_sql = Visitors::ToSql.new @engine.
|
54
|
+
to_sql = Visitors::ToSql.new @engine.connection
|
55
55
|
@ctx.wheres.map { |c| to_sql.accept c }
|
56
56
|
end
|
57
57
|
|
@@ -161,13 +161,13 @@ module Arel
|
|
161
161
|
|
162
162
|
def wheres
|
163
163
|
warn "#{caller[0]}: SelectManager#wheres is deprecated and will be removed in ARel 3.0.0 with no replacement"
|
164
|
-
Compatibility::Wheres.new @engine.
|
164
|
+
Compatibility::Wheres.new @engine.connection, @ctx.wheres
|
165
165
|
end
|
166
166
|
|
167
167
|
def where_sql
|
168
168
|
return if @ctx.wheres.empty?
|
169
169
|
|
170
|
-
viz = Visitors::WhereSql.new @engine.
|
170
|
+
viz = Visitors::WhereSql.new @engine.connection
|
171
171
|
Nodes::SqlLiteral.new viz.accept @ctx
|
172
172
|
end
|
173
173
|
|
@@ -222,7 +222,7 @@ module Arel
|
|
222
222
|
end
|
223
223
|
|
224
224
|
def order_clauses
|
225
|
-
visitor = Visitors::OrderClauses.new(@engine.
|
225
|
+
visitor = Visitors::OrderClauses.new(@engine.connection)
|
226
226
|
visitor.accept(@ast).map { |x|
|
227
227
|
Nodes::SqlLiteral.new x
|
228
228
|
}
|
@@ -109,7 +109,6 @@ module Arel
|
|
109
109
|
alias :visit_Arel_Nodes_Lock :terminal
|
110
110
|
alias :visit_Arel_Nodes_Node :terminal
|
111
111
|
alias :visit_Arel_Nodes_SqlLiteral :terminal
|
112
|
-
alias :visit_Arel_Nodes_BindParam :terminal
|
113
112
|
alias :visit_Arel_SqlLiteral :terminal
|
114
113
|
alias :visit_BigDecimal :terminal
|
115
114
|
alias :visit_Bignum :terminal
|
data/lib/arel/visitors/dot.rb
CHANGED
data/lib/arel/visitors/to_sql.rb
CHANGED
@@ -4,30 +4,22 @@ require 'date'
|
|
4
4
|
module Arel
|
5
5
|
module Visitors
|
6
6
|
class ToSql < Arel::Visitors::Visitor
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
attr_accessor :last_column
|
8
|
+
|
9
|
+
def initialize connection
|
10
|
+
@connection = connection
|
11
|
+
@schema_cache = connection.schema_cache
|
10
12
|
@quoted_tables = {}
|
11
13
|
@quoted_columns = {}
|
14
|
+
@last_column = nil
|
12
15
|
end
|
13
16
|
|
14
17
|
def accept object
|
15
18
|
self.last_column = nil
|
16
|
-
|
17
|
-
@connection = conn
|
18
|
-
super
|
19
|
-
end
|
19
|
+
super
|
20
20
|
end
|
21
21
|
|
22
22
|
private
|
23
|
-
def last_column= col
|
24
|
-
Thread.current[:arel_visitors_to_sql_last_column] = col
|
25
|
-
end
|
26
|
-
|
27
|
-
def last_column
|
28
|
-
Thread.current[:arel_visitors_to_sql_last_column]
|
29
|
-
end
|
30
|
-
|
31
23
|
def visit_Arel_Nodes_DeleteStatement o
|
32
24
|
[
|
33
25
|
"DELETE FROM #{visit o.relation}",
|
@@ -97,7 +89,7 @@ key on UpdateManager using UpdateManager#key=
|
|
97
89
|
end
|
98
90
|
|
99
91
|
def table_exists? name
|
100
|
-
@
|
92
|
+
@schema_cache.table_exists? name
|
101
93
|
end
|
102
94
|
|
103
95
|
def column_for attr
|
@@ -110,13 +102,13 @@ key on UpdateManager using UpdateManager#key=
|
|
110
102
|
end
|
111
103
|
|
112
104
|
def column_cache
|
113
|
-
@
|
105
|
+
@schema_cache.columns_hash
|
114
106
|
end
|
115
107
|
|
116
108
|
def visit_Arel_Nodes_Values o
|
117
109
|
"VALUES (#{o.expressions.zip(o.columns).map { |value, attr|
|
118
110
|
if Nodes::SqlLiteral === value
|
119
|
-
|
111
|
+
visit_Arel_Nodes_SqlLiteral value
|
120
112
|
else
|
121
113
|
quote(value, attr && column_for(attr))
|
122
114
|
end
|
@@ -382,13 +374,14 @@ key on UpdateManager using UpdateManager#key=
|
|
382
374
|
|
383
375
|
def literal o; o end
|
384
376
|
|
385
|
-
alias :visit_Arel_Nodes_BindParam :literal
|
386
377
|
alias :visit_Arel_Nodes_SqlLiteral :literal
|
387
378
|
alias :visit_Arel_SqlLiteral :literal # This is deprecated
|
388
379
|
alias :visit_Bignum :literal
|
389
380
|
alias :visit_Fixnum :literal
|
390
381
|
|
391
|
-
def quoted o
|
382
|
+
def quoted o
|
383
|
+
quote(o, last_column)
|
384
|
+
end
|
392
385
|
|
393
386
|
alias :visit_ActiveSupport_Multibyte_Chars :quoted
|
394
387
|
alias :visit_ActiveSupport_StringInquirer :quoted
|
data/test/nodes/test_node.rb
CHANGED
data/test/support/fake_record.rb
CHANGED
@@ -3,9 +3,10 @@ module FakeRecord
|
|
3
3
|
end
|
4
4
|
|
5
5
|
class Connection
|
6
|
-
attr_reader :tables, :columns_hash
|
6
|
+
attr_reader :tables, :columns_hash
|
7
|
+
attr_accessor :visitor
|
7
8
|
|
8
|
-
def initialize(visitor)
|
9
|
+
def initialize(visitor = nil)
|
9
10
|
@tables = %w{ users photos developers products}
|
10
11
|
@columns = {
|
11
12
|
'users' => [
|
@@ -50,6 +51,10 @@ module FakeRecord
|
|
50
51
|
"\"#{name.to_s}\""
|
51
52
|
end
|
52
53
|
|
54
|
+
def schema_cache
|
55
|
+
self
|
56
|
+
end
|
57
|
+
|
53
58
|
def quote thing, column = nil
|
54
59
|
if column && column.type == :integer
|
55
60
|
return 'NULL' if thing.nil?
|
@@ -79,7 +84,8 @@ module FakeRecord
|
|
79
84
|
|
80
85
|
def initialize
|
81
86
|
@spec = Spec.new(:adapter => 'america')
|
82
|
-
@connection = Connection.new
|
87
|
+
@connection = Connection.new
|
88
|
+
@connection.visitor = Arel::Visitors::ToSql.new(connection)
|
83
89
|
end
|
84
90
|
|
85
91
|
def with_connection
|
@@ -93,6 +99,10 @@ module FakeRecord
|
|
93
99
|
def columns_hash
|
94
100
|
connection.columns_hash
|
95
101
|
end
|
102
|
+
|
103
|
+
def schema_cache
|
104
|
+
connection
|
105
|
+
end
|
96
106
|
end
|
97
107
|
|
98
108
|
class Base
|
data/test/visitors/test_mssql.rb
CHANGED
data/test/visitors/test_mysql.rb
CHANGED
@@ -1,24 +1,14 @@
|
|
1
1
|
require 'helper'
|
2
2
|
|
3
|
-
class Arel::Visitors::ToSql
|
4
|
-
def last_column; Thread.current[:arel_visitors_to_sql_last_column]; end
|
5
|
-
end
|
6
|
-
|
7
3
|
module Arel
|
8
4
|
module Visitors
|
9
5
|
describe 'the to_sql visitor' do
|
10
6
|
before do
|
11
|
-
@visitor = ToSql.new Table.engine.
|
7
|
+
@visitor = ToSql.new Table.engine.connection
|
12
8
|
@table = Table.new(:users)
|
13
9
|
@attr = @table[:id]
|
14
10
|
end
|
15
11
|
|
16
|
-
it 'works with BindParams' do
|
17
|
-
node = Nodes::BindParam.new 'omg'
|
18
|
-
sql = @visitor.accept node
|
19
|
-
sql.must_be_like 'omg'
|
20
|
-
end
|
21
|
-
|
22
12
|
it 'can define a dispatch method' do
|
23
13
|
visited = false
|
24
14
|
viz = Class.new(Arel::Visitors::Visitor) {
|
@@ -35,20 +25,6 @@ module Arel
|
|
35
25
|
assert visited, 'hello method was called'
|
36
26
|
end
|
37
27
|
|
38
|
-
it "should be thread safe around usage of last_column" do
|
39
|
-
visit_integer_column = Thread.new do
|
40
|
-
Thread.stop
|
41
|
-
@visitor.send(:visit_Arel_Attributes_Attribute, @attr)
|
42
|
-
end
|
43
|
-
|
44
|
-
sleep 0.2
|
45
|
-
@visitor.accept(@table[:name])
|
46
|
-
assert_equal(:string, @visitor.last_column.type)
|
47
|
-
visit_integer_column.run
|
48
|
-
visit_integer_column.join
|
49
|
-
assert_equal(:string, @visitor.last_column.type)
|
50
|
-
end
|
51
|
-
|
52
28
|
it 'should not quote sql literals' do
|
53
29
|
node = @table[Arel.star]
|
54
30
|
sql = @visitor.accept node
|
@@ -226,7 +202,7 @@ module Arel
|
|
226
202
|
end
|
227
203
|
end
|
228
204
|
in_node = Nodes::In.new @attr, %w{ a b c }
|
229
|
-
visitor = visitor.new(Table.engine.
|
205
|
+
visitor = visitor.new(Table.engine.connection)
|
230
206
|
visitor.expected = Table.engine.connection.columns(:users).find { |x|
|
231
207
|
x.name == 'name'
|
232
208
|
}
|
@@ -314,7 +290,7 @@ module Arel
|
|
314
290
|
end
|
315
291
|
end
|
316
292
|
in_node = Nodes::NotIn.new @attr, %w{ a b c }
|
317
|
-
visitor = visitor.new(Table.engine.
|
293
|
+
visitor = visitor.new(Table.engine.connection)
|
318
294
|
visitor.expected = Table.engine.connection.columns(:users).find { |x|
|
319
295
|
x.name == 'name'
|
320
296
|
}
|
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
5
|
-
prerelease:
|
4
|
+
version: 3.0.0.rc1
|
5
|
+
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Aaron Patterson
|
@@ -12,41 +12,41 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date:
|
15
|
+
date: 2011-12-14 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: minitest
|
19
|
-
requirement: &
|
19
|
+
requirement: &70238561431700 !ruby/object:Gem::Requirement
|
20
20
|
none: false
|
21
21
|
requirements:
|
22
22
|
- - ~>
|
23
23
|
- !ruby/object:Gem::Version
|
24
|
-
version: '2.
|
24
|
+
version: '2.9'
|
25
25
|
type: :development
|
26
26
|
prerelease: false
|
27
|
-
version_requirements: *
|
27
|
+
version_requirements: *70238561431700
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
|
-
name:
|
30
|
-
requirement: &
|
29
|
+
name: hoe
|
30
|
+
requirement: &70238561493640 !ruby/object:Gem::Requirement
|
31
31
|
none: false
|
32
32
|
requirements:
|
33
33
|
- - ~>
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: '
|
35
|
+
version: '2.12'
|
36
36
|
type: :development
|
37
37
|
prerelease: false
|
38
|
-
version_requirements: *
|
38
|
+
version_requirements: *70238561493640
|
39
39
|
- !ruby/object:Gem::Dependency
|
40
|
-
name:
|
41
|
-
requirement: &
|
40
|
+
name: rdoc
|
41
|
+
requirement: &70238562708680 !ruby/object:Gem::Requirement
|
42
42
|
none: false
|
43
43
|
requirements:
|
44
44
|
- - ~>
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: '
|
46
|
+
version: '3.10'
|
47
47
|
type: :development
|
48
48
|
prerelease: false
|
49
|
-
version_requirements: *
|
49
|
+
version_requirements: *70238562708680
|
50
50
|
description: ! 'Arel is a SQL AST manager for Ruby. It
|
51
51
|
|
52
52
|
|
@@ -137,7 +137,6 @@ files:
|
|
137
137
|
- lib/arel/tree_manager.rb
|
138
138
|
- lib/arel/update_manager.rb
|
139
139
|
- lib/arel/visitors.rb
|
140
|
-
- lib/arel/visitors/bind_visitor.rb
|
141
140
|
- lib/arel/visitors/depth_first.rb
|
142
141
|
- lib/arel/visitors/dot.rb
|
143
142
|
- lib/arel/visitors/ibm_db.rb
|
@@ -182,7 +181,6 @@ files:
|
|
182
181
|
- test/test_select_manager.rb
|
183
182
|
- test/test_table.rb
|
184
183
|
- test/test_update_manager.rb
|
185
|
-
- test/visitors/test_bind_visitor.rb
|
186
184
|
- test/visitors/test_depth_first.rb
|
187
185
|
- test/visitors/test_dot.rb
|
188
186
|
- test/visitors/test_ibm_db.rb
|
@@ -211,9 +209,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
211
209
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
212
210
|
none: false
|
213
211
|
requirements:
|
214
|
-
- - ! '
|
212
|
+
- - ! '>'
|
215
213
|
- !ruby/object:Gem::Version
|
216
|
-
version:
|
214
|
+
version: 1.3.1
|
217
215
|
requirements: []
|
218
216
|
rubyforge_project: arel
|
219
217
|
rubygems_version: 1.8.11
|
@@ -249,7 +247,6 @@ test_files:
|
|
249
247
|
- test/test_select_manager.rb
|
250
248
|
- test/test_table.rb
|
251
249
|
- test/test_update_manager.rb
|
252
|
-
- test/visitors/test_bind_visitor.rb
|
253
250
|
- test/visitors/test_depth_first.rb
|
254
251
|
- test/visitors/test_dot.rb
|
255
252
|
- test/visitors/test_ibm_db.rb
|
@@ -1,24 +0,0 @@
|
|
1
|
-
module Arel
|
2
|
-
module Visitors
|
3
|
-
module BindVisitor
|
4
|
-
def initialize target
|
5
|
-
@block = nil
|
6
|
-
super
|
7
|
-
end
|
8
|
-
|
9
|
-
def accept node, &block
|
10
|
-
@block = block if block_given?
|
11
|
-
super
|
12
|
-
end
|
13
|
-
|
14
|
-
private
|
15
|
-
def visit_Arel_Nodes_BindParam o
|
16
|
-
if @block
|
17
|
-
@block.call
|
18
|
-
else
|
19
|
-
super
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
require 'helper'
|
2
|
-
require 'arel/visitors/bind_visitor'
|
3
|
-
|
4
|
-
module Arel
|
5
|
-
module Visitors
|
6
|
-
class TestBindVisitor < MiniTest::Unit::TestCase
|
7
|
-
def test_visitor_yields_on_binds
|
8
|
-
visitor = Class.new(Arel::Visitors::Visitor) {
|
9
|
-
def initialize omg
|
10
|
-
end
|
11
|
-
|
12
|
-
include Arel::Visitors::BindVisitor
|
13
|
-
}.new nil
|
14
|
-
|
15
|
-
bp = Nodes::BindParam.new 'omg'
|
16
|
-
called = false
|
17
|
-
visitor.accept(bp) { called = true }
|
18
|
-
assert called
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_visitor_only_yields_on_binds
|
22
|
-
visitor = Class.new(Arel::Visitors::Visitor) {
|
23
|
-
def initialize omg
|
24
|
-
end
|
25
|
-
|
26
|
-
include Arel::Visitors::BindVisitor
|
27
|
-
}.new(nil)
|
28
|
-
|
29
|
-
bp = Arel.sql 'omg'
|
30
|
-
called = false
|
31
|
-
|
32
|
-
assert_raises(TypeError) {
|
33
|
-
visitor.accept(bp) { called = true }
|
34
|
-
}
|
35
|
-
refute called
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|