rgviz-rails 0.46 → 0.47
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/rgviz_rails/executor.rb +96 -93
- data/lib/rgviz_rails.rb +0 -3
- data/spec/rgviz/executor_spec.rb +140 -106
- data/spec/spec_helper.rb +4 -4
- metadata +57 -42
data/lib/rgviz_rails/executor.rb
CHANGED
@@ -2,7 +2,7 @@ module Rgviz
|
|
2
2
|
class Executor
|
3
3
|
attr_reader :model_class
|
4
4
|
attr_reader :adapter
|
5
|
-
|
5
|
+
|
6
6
|
def initialize(model_class, query)
|
7
7
|
@model_class = model_class
|
8
8
|
@query = query
|
@@ -14,55 +14,58 @@ module Rgviz
|
|
14
14
|
@original_columns = []
|
15
15
|
case ActiveRecord::Base.connection.adapter_name.downcase
|
16
16
|
when 'sqlite'
|
17
|
+
require File.dirname(__FILE__) + '/adapters/sqlite_adapter.rb'
|
17
18
|
@adapter = SqliteAdapter.new
|
18
19
|
when 'mysql'
|
20
|
+
require File.dirname(__FILE__) + '/adapters/mysql_adapter.rb'
|
19
21
|
@adapter = MySqlAdapter.new
|
20
22
|
when 'postgresql'
|
23
|
+
require File.dirname(__FILE__) + '/adapters/postgresql_adapter.rb'
|
21
24
|
@adapter = PostgreSqlAdapter.new
|
22
25
|
end
|
23
26
|
end
|
24
|
-
|
27
|
+
|
25
28
|
def execute(options = {})
|
26
29
|
@query = Parser.parse(@query, options) unless @query.kind_of?(Query)
|
27
|
-
|
30
|
+
|
28
31
|
@table = Table.new
|
29
32
|
@extra_conditions = options[:conditions]
|
30
|
-
|
33
|
+
|
31
34
|
process_pivot
|
32
35
|
process_labels
|
33
|
-
|
36
|
+
|
34
37
|
generate_columns
|
35
38
|
generate_conditions
|
36
39
|
generate_group
|
37
40
|
generate_order
|
38
|
-
|
41
|
+
|
39
42
|
generate_rows
|
40
|
-
|
43
|
+
|
41
44
|
@table
|
42
45
|
end
|
43
|
-
|
46
|
+
|
44
47
|
def process_labels
|
45
48
|
return unless @query.labels.present?
|
46
|
-
|
49
|
+
|
47
50
|
@query.labels.each do |label|
|
48
51
|
@labels[label.column.to_s] = label.label
|
49
52
|
end
|
50
53
|
end
|
51
|
-
|
54
|
+
|
52
55
|
def process_pivot
|
53
56
|
if @query.pivot
|
54
57
|
@query.pivot.columns.each do |column|
|
55
58
|
@pivots[column.to_s] = true
|
56
59
|
end
|
57
60
|
end
|
58
|
-
|
61
|
+
|
59
62
|
if @query.group_by
|
60
63
|
@query.group_by.columns.each do |column|
|
61
64
|
@group_bys[column.to_s] = true
|
62
65
|
end
|
63
66
|
end
|
64
67
|
end
|
65
|
-
|
68
|
+
|
66
69
|
def add_joins(joins)
|
67
70
|
map = @joins
|
68
71
|
joins.each do |join|
|
@@ -72,14 +75,14 @@ module Rgviz
|
|
72
75
|
map = map[key]
|
73
76
|
end
|
74
77
|
end
|
75
|
-
|
78
|
+
|
76
79
|
def generate_columns
|
77
80
|
if @query.select && @query.select.columns.present?
|
78
81
|
# Select the specified columns
|
79
82
|
i = 0
|
80
83
|
@query.select.columns.each do |col|
|
81
84
|
col_to_s = col.to_s
|
82
|
-
|
85
|
+
|
83
86
|
@table.cols << (Column.new :id => column_id(col, i), :type => column_type(col), :label => column_label(col_to_s))
|
84
87
|
@selects << "(#{column_select(col)}) as c#{i}"
|
85
88
|
@original_columns << col_to_s
|
@@ -95,26 +98,26 @@ module Rgviz
|
|
95
98
|
i += 1
|
96
99
|
end
|
97
100
|
end
|
98
|
-
|
101
|
+
|
99
102
|
# Select pivot columns and group by columns
|
100
103
|
if @query.pivot
|
101
104
|
@max_before_pivot_columns = @original_columns.length
|
102
|
-
|
105
|
+
|
103
106
|
@query.pivot.columns.each do |col|
|
104
107
|
col_to_s = col.to_s
|
105
|
-
|
108
|
+
|
106
109
|
@table.cols << (Column.new :id => column_id(col, i), :type => column_type(col), :label => column_label(col_to_s))
|
107
|
-
@selects << "(#{column_select(col)}) as c#{i}"
|
110
|
+
@selects << "(#{column_select(col)}) as c#{i}"
|
108
111
|
@original_columns << col_to_s
|
109
112
|
i += 1
|
110
113
|
end
|
111
|
-
|
114
|
+
|
112
115
|
@max_original_columns = @original_columns.length
|
113
|
-
|
116
|
+
|
114
117
|
if @query.group_by
|
115
118
|
@query.group_by.columns.each do |col|
|
116
119
|
col_to_s = col.to_s
|
117
|
-
|
120
|
+
|
118
121
|
@table.cols << (Column.new :id => column_id(col, i), :type => column_type(col), :label => column_label(col_to_s))
|
119
122
|
@selects << "(#{column_select(col)}) as c#{i}"
|
120
123
|
i += 1
|
@@ -122,28 +125,28 @@ module Rgviz
|
|
122
125
|
end
|
123
126
|
end
|
124
127
|
end
|
125
|
-
|
128
|
+
|
126
129
|
def generate_conditions
|
127
130
|
@conditions = to_string @query.where, WhereVisitor if @query.where
|
128
131
|
end
|
129
|
-
|
132
|
+
|
130
133
|
def generate_group
|
131
134
|
@group = to_string @query.group_by, ColumnVisitor if @query.group_by
|
132
135
|
pivot = to_string @query.pivot, ColumnVisitor if @query.pivot
|
133
|
-
|
136
|
+
|
134
137
|
if pivot.present?
|
135
138
|
if @group.present?
|
136
|
-
@group += ',' + pivot
|
139
|
+
@group += ',' + pivot
|
137
140
|
else
|
138
141
|
@group = pivot
|
139
142
|
end
|
140
143
|
end
|
141
144
|
end
|
142
|
-
|
145
|
+
|
143
146
|
def generate_order
|
144
147
|
@order = to_string @query.order_by, OrderVisitor if @query.order_by
|
145
148
|
end
|
146
|
-
|
149
|
+
|
147
150
|
def generate_rows
|
148
151
|
conditions = @conditions
|
149
152
|
if @extra_conditions
|
@@ -151,14 +154,14 @@ module Rgviz
|
|
151
154
|
if @extra_conditions.kind_of? String
|
152
155
|
conditions = "(#{conditions}) AND #{@extra_conditions}"
|
153
156
|
elsif @extra_conditions.kind_of? Array
|
154
|
-
conditions = ["(#{conditions}) AND #{@extra_conditions[0]}", *@extra_conditions[1 .. -1]]
|
157
|
+
conditions = ["(#{conditions}) AND #{@extra_conditions[0]}", *@extra_conditions[1 .. -1]]
|
155
158
|
end
|
156
159
|
else
|
157
160
|
conditions = @extra_conditions
|
158
161
|
end
|
159
162
|
end
|
160
|
-
|
161
|
-
results = @model_class.send :all,
|
163
|
+
|
164
|
+
results = @model_class.send :all,
|
162
165
|
:select => @selects.join(','),
|
163
166
|
:conditions => conditions,
|
164
167
|
:group => @group,
|
@@ -166,15 +169,15 @@ module Rgviz
|
|
166
169
|
:limit => @query.limit,
|
167
170
|
:offset => @query.offset,
|
168
171
|
:joins => @joins
|
169
|
-
|
172
|
+
|
170
173
|
if @pivots.empty? || results.empty?
|
171
174
|
@table.cols = @table.cols[0 ... @max_before_pivot_columns] if @pivots.present?
|
172
|
-
|
175
|
+
|
173
176
|
# Simple, just convert the results to a table
|
174
177
|
results.each do |result|
|
175
178
|
row = Row.new
|
176
179
|
@table.rows << row
|
177
|
-
|
180
|
+
|
178
181
|
i = 0
|
179
182
|
@table.cols.each do |col|
|
180
183
|
hash = {}
|
@@ -185,26 +188,26 @@ module Rgviz
|
|
185
188
|
end
|
186
189
|
else
|
187
190
|
# A little more complicated...
|
188
|
-
|
191
|
+
|
189
192
|
# This is grouping => pivot => [selections]
|
190
193
|
fin = ActiveSupport::OrderedHash.new
|
191
|
-
|
194
|
+
|
192
195
|
# The uniq pivot values
|
193
196
|
uniq_pivots = []
|
194
|
-
|
197
|
+
|
195
198
|
# Fill fin and uniq_pivots
|
196
199
|
results.each do |result|
|
197
200
|
# The grouping key of this result
|
198
201
|
grouped_by = []
|
199
|
-
|
202
|
+
|
200
203
|
# The pivots of this result
|
201
204
|
pivots = []
|
202
|
-
|
205
|
+
|
203
206
|
# The selections of this result
|
204
207
|
selections = []
|
205
|
-
|
208
|
+
|
206
209
|
# Fill grouped_by, pivots and selections, as well as uniq_pivots
|
207
|
-
@table.cols.each_with_index do |col, i|
|
210
|
+
@table.cols.each_with_index do |col, i|
|
208
211
|
val = column_value(col, result.send("c#{i}"))
|
209
212
|
if i >= @max_original_columns || @group_bys.include?(@original_columns[i])
|
210
213
|
grouped_by << val
|
@@ -214,44 +217,44 @@ module Rgviz
|
|
214
217
|
selections << val
|
215
218
|
end
|
216
219
|
end
|
217
|
-
|
220
|
+
|
218
221
|
uniq_pivots << pivots unless uniq_pivots.include? pivots
|
219
|
-
|
222
|
+
|
220
223
|
# Now put all this info into fin
|
221
224
|
fin[grouped_by] = {} unless fin[grouped_by]
|
222
225
|
fin[grouped_by][pivots] = selections
|
223
226
|
end
|
224
|
-
|
227
|
+
|
225
228
|
# Sort the uniq pivots so the results will be sorted for a human
|
226
229
|
uniq_pivots.sort!
|
227
|
-
|
230
|
+
|
228
231
|
# Regenerate the columns info: the current info has the values
|
229
|
-
# we needed to get the info we needed
|
232
|
+
# we needed to get the info we needed
|
230
233
|
col_i = 0
|
231
234
|
new_cols = []
|
232
235
|
@original_columns.each_with_index do |original_column, i|
|
233
236
|
break if i >= @max_original_columns
|
234
|
-
|
235
|
-
old_col = @table.cols[i]
|
237
|
+
|
238
|
+
old_col = @table.cols[i]
|
236
239
|
if @group_bys.include?(original_column)
|
237
240
|
old_col.id = "c#{col_i}"
|
238
241
|
new_cols << @table.cols[i]
|
239
242
|
col_i += 1
|
240
243
|
elsif !@pivots.include?(original_column)
|
241
244
|
uniq_pivots.each do |uniq_pivot|
|
242
|
-
new_cols << (Column.new :id => "c#{col_i}", :type => old_col.type, :label => "#{uniq_pivot.join(', ')} #{old_col.label}")
|
245
|
+
new_cols << (Column.new :id => "c#{col_i}", :type => old_col.type, :label => "#{uniq_pivot.join(', ')} #{old_col.label}")
|
243
246
|
col_i += 1
|
244
247
|
end
|
245
248
|
end
|
246
249
|
end
|
247
|
-
|
250
|
+
|
248
251
|
@table.cols = new_cols
|
249
|
-
|
252
|
+
|
250
253
|
# Create the rows
|
251
254
|
fin.each do |key, value|
|
252
255
|
row = Row.new
|
253
256
|
@table.rows << row
|
254
|
-
|
257
|
+
|
255
258
|
group_i = 0
|
256
259
|
value_i = 0
|
257
260
|
@original_columns.each_with_index do |original_column, i|
|
@@ -264,7 +267,7 @@ module Rgviz
|
|
264
267
|
uniq_pivots.each do |uniq_pivot|
|
265
268
|
v = value[uniq_pivot]
|
266
269
|
v = v[value_i] if v
|
267
|
-
|
270
|
+
|
268
271
|
hash = {}
|
269
272
|
hash[:v] = v unless @query.options && @query.options.no_values
|
270
273
|
row.c << (Cell.new hash)
|
@@ -275,7 +278,7 @@ module Rgviz
|
|
275
278
|
end
|
276
279
|
end
|
277
280
|
end
|
278
|
-
|
281
|
+
|
279
282
|
def column_id(col, i)
|
280
283
|
case col
|
281
284
|
when IdColumn
|
@@ -284,7 +287,7 @@ module Rgviz
|
|
284
287
|
"c#{i}"
|
285
288
|
end
|
286
289
|
end
|
287
|
-
|
290
|
+
|
288
291
|
def column_type(col)
|
289
292
|
case col
|
290
293
|
when IdColumn
|
@@ -312,96 +315,96 @@ module Rgviz
|
|
312
315
|
when ScalarFunctionColumn::Upper, ScalarFunctionColumn::Lower, ScalarFunctionColumn::Concat
|
313
316
|
:string
|
314
317
|
else
|
315
|
-
:number
|
318
|
+
:number
|
316
319
|
end
|
317
320
|
when AggregateColumn
|
318
321
|
:number
|
319
322
|
end
|
320
323
|
end
|
321
|
-
|
324
|
+
|
322
325
|
def column_select(col)
|
323
326
|
to_string col, ColumnVisitor
|
324
327
|
end
|
325
|
-
|
328
|
+
|
326
329
|
def column_value(col, value)
|
327
330
|
case col.type
|
328
331
|
when :number
|
329
332
|
i = value.to_i
|
330
|
-
f = value.to_f
|
333
|
+
f = value.to_f
|
331
334
|
i == f ? i : f
|
332
335
|
when :boolean
|
333
|
-
value == '1' ? true : false
|
336
|
+
value == 1 || value == '1' ? true : false
|
334
337
|
else
|
335
338
|
value.to_s
|
336
339
|
end
|
337
340
|
end
|
338
|
-
|
341
|
+
|
339
342
|
def column_label(string)
|
340
343
|
@labels[string] || string
|
341
344
|
end
|
342
|
-
|
345
|
+
|
343
346
|
def to_string(node, visitor_class)
|
344
347
|
visitor = visitor_class.new self
|
345
348
|
node.accept visitor
|
346
349
|
visitor.string
|
347
350
|
end
|
348
|
-
|
351
|
+
|
349
352
|
def rails_column_type(col)
|
350
353
|
case col.type
|
351
|
-
when :integer
|
354
|
+
when :integer, :float, :decimal
|
352
355
|
:number
|
353
356
|
else
|
354
357
|
col.type
|
355
358
|
end
|
356
359
|
end
|
357
360
|
end
|
358
|
-
|
361
|
+
|
359
362
|
class ColumnVisitor < Rgviz::Visitor
|
360
363
|
attr_reader :string
|
361
|
-
|
364
|
+
|
362
365
|
def initialize(executor)
|
363
366
|
@string = ''
|
364
367
|
@executor = executor
|
365
368
|
end
|
366
|
-
|
369
|
+
|
367
370
|
def <<(string)
|
368
371
|
@string += string
|
369
372
|
end
|
370
|
-
|
373
|
+
|
371
374
|
def visit_id_column(node)
|
372
375
|
klass, rails_col, joins = Rgviz::find_rails_col @executor.model_class, node.name
|
373
376
|
raise "Unknown column '#{node.name}'" unless rails_col
|
374
377
|
@string += ActiveRecord::Base.connection.quote_column_name(klass.table_name)
|
375
378
|
@string += '.'
|
376
379
|
@string += ActiveRecord::Base.connection.quote_column_name(rails_col.name)
|
377
|
-
|
380
|
+
|
378
381
|
@executor.add_joins joins
|
379
382
|
end
|
380
|
-
|
383
|
+
|
381
384
|
def visit_number_column(node)
|
382
385
|
@string += node.value.to_s
|
383
386
|
end
|
384
|
-
|
387
|
+
|
385
388
|
def visit_string_column(node)
|
386
389
|
@string += escaped_string(node.value)
|
387
390
|
end
|
388
|
-
|
391
|
+
|
389
392
|
def visit_boolean_column(node)
|
390
393
|
@string += node.value ? '1' : '0'
|
391
394
|
end
|
392
|
-
|
395
|
+
|
393
396
|
def visit_date_column(node)
|
394
397
|
@string += escaped_string(node.value.to_s)
|
395
398
|
end
|
396
|
-
|
399
|
+
|
397
400
|
def visit_date_time_column(node)
|
398
401
|
@string += escaped_string(node.value.strftime("%Y-%m-%d %H:%M:%S"))
|
399
402
|
end
|
400
|
-
|
403
|
+
|
401
404
|
def visit_time_of_day_column(node)
|
402
405
|
@string += escaped_string(node.value.strftime("%H:%M:%S"))
|
403
406
|
end
|
404
|
-
|
407
|
+
|
405
408
|
def visit_scalar_function_column(node)
|
406
409
|
case node.function
|
407
410
|
when ScalarFunctionColumn::Sum, ScalarFunctionColumn::Difference,
|
@@ -416,7 +419,7 @@ module Rgviz
|
|
416
419
|
end
|
417
420
|
false
|
418
421
|
end
|
419
|
-
|
422
|
+
|
420
423
|
def visit_aggregate_column(node)
|
421
424
|
@string += node.function.to_s
|
422
425
|
@string += '('
|
@@ -424,7 +427,7 @@ module Rgviz
|
|
424
427
|
@string += ')'
|
425
428
|
false
|
426
429
|
end
|
427
|
-
|
430
|
+
|
428
431
|
def visit_group_by(node)
|
429
432
|
node.columns.each_with_index do |c, i|
|
430
433
|
@string += ',' if i > 0
|
@@ -432,7 +435,7 @@ module Rgviz
|
|
432
435
|
end
|
433
436
|
false
|
434
437
|
end
|
435
|
-
|
438
|
+
|
436
439
|
def visit_pivot(node)
|
437
440
|
node.columns.each_with_index do |c, i|
|
438
441
|
@string += ',' if i > 0
|
@@ -440,25 +443,25 @@ module Rgviz
|
|
440
443
|
end
|
441
444
|
false
|
442
445
|
end
|
443
|
-
|
446
|
+
|
444
447
|
def visit_label(node)
|
445
448
|
false
|
446
449
|
end
|
447
|
-
|
450
|
+
|
448
451
|
def visit_format(node)
|
449
452
|
false
|
450
453
|
end
|
451
|
-
|
454
|
+
|
452
455
|
def visit_option(node)
|
453
456
|
false
|
454
457
|
end
|
455
|
-
|
458
|
+
|
456
459
|
def escaped_string(str)
|
457
460
|
str = str.gsub("'", "''")
|
458
461
|
"'#{str}'"
|
459
462
|
end
|
460
463
|
end
|
461
|
-
|
464
|
+
|
462
465
|
class WhereVisitor < ColumnVisitor
|
463
466
|
def visit_logical_expression(node)
|
464
467
|
@string += "("
|
@@ -469,14 +472,14 @@ module Rgviz
|
|
469
472
|
@string += ")"
|
470
473
|
false
|
471
474
|
end
|
472
|
-
|
475
|
+
|
473
476
|
def visit_binary_expression(node)
|
474
477
|
node.left.accept self
|
475
478
|
@string += " #{node.operator} "
|
476
479
|
node.right.accept self
|
477
480
|
false
|
478
481
|
end
|
479
|
-
|
482
|
+
|
480
483
|
def visit_unary_expression(node)
|
481
484
|
case node.operator
|
482
485
|
when UnaryExpression::Not
|
@@ -493,7 +496,7 @@ module Rgviz
|
|
493
496
|
false
|
494
497
|
end
|
495
498
|
end
|
496
|
-
|
499
|
+
|
497
500
|
class OrderVisitor < ColumnVisitor
|
498
501
|
def visit_order_by(node)
|
499
502
|
node.sorts.each_with_index do |sort, i|
|
@@ -502,34 +505,34 @@ module Rgviz
|
|
502
505
|
end
|
503
506
|
false
|
504
507
|
end
|
505
|
-
|
508
|
+
|
506
509
|
def visit_sort(node)
|
507
510
|
node.column.accept self
|
508
511
|
@string += node.order == Sort::Asc ? ' asc' : ' desc'
|
509
512
|
false
|
510
513
|
end
|
511
514
|
end
|
512
|
-
|
515
|
+
|
513
516
|
def self.find_rails_col(klass, name)
|
514
517
|
joins = []
|
515
|
-
|
518
|
+
|
516
519
|
while true
|
517
520
|
col = klass.send(:columns).select{|x| x.name == name}.first
|
518
521
|
return [klass, col, joins] if col
|
519
|
-
|
522
|
+
|
520
523
|
idx = name.index '_'
|
521
524
|
return nil if not idx
|
522
|
-
|
525
|
+
|
523
526
|
before = name[0 ... idx]
|
524
527
|
name = name[idx + 1 .. -1]
|
525
|
-
|
528
|
+
|
526
529
|
assoc = klass.send :reflect_on_association, before.to_sym
|
527
530
|
raise "Unknown association #{before}" unless assoc
|
528
531
|
klass = assoc.klass
|
529
532
|
joins << assoc
|
530
533
|
end
|
531
534
|
end
|
532
|
-
|
535
|
+
|
533
536
|
class NotSupported < ::Exception
|
534
537
|
end
|
535
538
|
end
|
data/lib/rgviz_rails.rb
CHANGED
@@ -2,6 +2,3 @@ require 'rgviz_rails/init.rb'
|
|
2
2
|
require 'rgviz_rails/executor.rb'
|
3
3
|
require 'rgviz_rails/js_renderer.rb'
|
4
4
|
require 'rgviz_rails/tqx.rb'
|
5
|
-
require 'rgviz_rails/adapters/mysql_adapter.rb'
|
6
|
-
require 'rgviz_rails/adapters/postgresql_adapter.rb'
|
7
|
-
require 'rgviz_rails/adapters/sqlite_adapter.rb'
|
data/spec/rgviz/executor_spec.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
-
require 'rgviz'
|
2
|
+
#require 'rgviz'
|
3
3
|
|
4
4
|
include Rgviz
|
5
5
|
|
@@ -7,20 +7,20 @@ describe Executor do
|
|
7
7
|
before :each do
|
8
8
|
[Person, City, Country].each &:delete_all
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
def exec(query, options = {})
|
12
12
|
exec = Executor.new Person, query
|
13
13
|
exec.execute options
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
def format_datetime(date)
|
17
17
|
date.strftime "%Y-%m-%d %H:%M:%S"
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
20
|
def format_date(date)
|
21
21
|
date.strftime "%Y-%m-%d"
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
def self.it_processes_single_select_column(query, id, type, value, label, options = {})
|
25
25
|
it "processes select #{query}" do
|
26
26
|
if block_given?
|
@@ -28,27 +28,27 @@ describe Executor do
|
|
28
28
|
else
|
29
29
|
Person.make
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
32
|
table = exec "select #{query}", options
|
33
33
|
table.cols.length.should == 1
|
34
|
-
|
34
|
+
|
35
35
|
table.cols[0].id.should == id
|
36
36
|
table.cols[0].type.should == type
|
37
37
|
table.cols[0].label.should == label
|
38
|
-
|
38
|
+
|
39
39
|
table.rows.length.should == 1
|
40
40
|
table.rows[0].c.length.should == 1
|
41
|
-
|
41
|
+
|
42
42
|
table.rows[0].c[0].v.should == value
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
46
|
it "processes select *" do
|
47
47
|
p = Person.make
|
48
|
-
|
48
|
+
|
49
49
|
table = exec 'select *'
|
50
50
|
table.cols.length.should == 7
|
51
|
-
|
51
|
+
|
52
52
|
i = 0
|
53
53
|
[['id', :number], ['name', :string], ['age', :number], ['birthday', :date],
|
54
54
|
['created_at', :datetime], ['updated_at', :datetime],
|
@@ -58,12 +58,12 @@ describe Executor do
|
|
58
58
|
table.cols[i].label.should == id
|
59
59
|
i += 1
|
60
60
|
end
|
61
|
-
|
61
|
+
|
62
62
|
table.rows.length.should == 1
|
63
63
|
table.rows[0].c.length.should == 7
|
64
|
-
|
64
|
+
|
65
65
|
i = 0
|
66
|
-
[p.id, p.name, p.age, format_date(p.birthday),
|
66
|
+
[p.id, p.name, p.age, format_date(p.birthday),
|
67
67
|
format_datetime(p.created_at), format_datetime(p.updated_at), p.city.id].each do |val|
|
68
68
|
table.rows[0].c[i].v.should == val
|
69
69
|
i += 1
|
@@ -73,16 +73,16 @@ describe Executor do
|
|
73
73
|
it_processes_single_select_column 'name', 'name', :string, 'foo', 'name' do
|
74
74
|
Person.make :name => 'foo'
|
75
75
|
end
|
76
|
-
|
76
|
+
|
77
77
|
it_processes_single_select_column '1', 'c0', :number, 1, '1'
|
78
78
|
it_processes_single_select_column '1.2', 'c0', :number, 1.2, '1.2'
|
79
79
|
it_processes_single_select_column '"hello"', 'c0', :string, 'hello', "'hello'"
|
80
80
|
it_processes_single_select_column 'false', 'c0', :boolean, false, 'false'
|
81
81
|
it_processes_single_select_column 'true', 'c0', :boolean, true, 'true'
|
82
|
-
it_processes_single_select_column 'date "2010-01-02"', 'c0', :date, '2010-01-02', "date '2010-01-02'"
|
82
|
+
it_processes_single_select_column 'date "2010-01-02"', 'c0', :date, '2010-01-02', "date '2010-01-02'"
|
83
83
|
it_processes_single_select_column 'datetime "2010-01-02 10:11:12"', 'c0', :datetime, '2010-01-02 10:11:12', "datetime '2010-01-02 10:11:12'"
|
84
84
|
it_processes_single_select_column 'timeofday "10:11:12"', 'c0', :timeofday, '10:11:12', "timeofday '10:11:12'"
|
85
|
-
|
85
|
+
|
86
86
|
it_processes_single_select_column '1 + 2', 'c0', :number, 3, '1 + 2'
|
87
87
|
it_processes_single_select_column '3 - 2', 'c0', :number, 1, '3 - 2'
|
88
88
|
it_processes_single_select_column '2 * 3', 'c0', :number, 6, '2 * 3'
|
@@ -90,71 +90,71 @@ describe Executor do
|
|
90
90
|
it_processes_single_select_column '3 * age', 'c0', :number, 60, '3 * age' do
|
91
91
|
Person.make :age => 20
|
92
92
|
end
|
93
|
-
|
93
|
+
|
94
94
|
it_processes_single_select_column 'sum(age)', 'c0', :number, 6, 'sum(age)' do
|
95
95
|
[1, 2, 3].each{|i| Person.make :age => i}
|
96
96
|
end
|
97
|
-
|
97
|
+
|
98
98
|
it_processes_single_select_column 'avg(age)', 'c0', :number, 30, 'avg(age)' do
|
99
99
|
[10, 20, 60].each{|i| Person.make :age => i}
|
100
100
|
end
|
101
|
-
|
101
|
+
|
102
102
|
it_processes_single_select_column 'count(age)', 'c0', :number, 3, 'count(age)' do
|
103
103
|
3.times{|i| Person.make}
|
104
104
|
end
|
105
|
-
|
105
|
+
|
106
106
|
it_processes_single_select_column 'max(age)', 'c0', :number, 3, 'max(age)' do
|
107
107
|
[1, 2, 3].each{|i| Person.make :age => i}
|
108
108
|
end
|
109
|
-
|
109
|
+
|
110
110
|
it_processes_single_select_column 'min(age)', 'c0', :number, 1, 'min(age)' do
|
111
111
|
[1, 2, 3].each{|i| Person.make :age => i}
|
112
112
|
end
|
113
|
-
|
113
|
+
|
114
114
|
it_processes_single_select_column 'age where age > 2', 'age', :number, 3, 'age' do
|
115
115
|
[1, 2, 3].each{|i| Person.make :age => i}
|
116
116
|
end
|
117
|
-
|
117
|
+
|
118
118
|
it_processes_single_select_column 'age where age > 2 and age <= 3', 'age', :number, 3, 'age' do
|
119
119
|
[1, 2, 3, 4, 5].each{|i| Person.make :age => i}
|
120
120
|
end
|
121
|
-
|
121
|
+
|
122
122
|
it_processes_single_select_column 'name where age is null', 'name', :string, 'b', 'name' do
|
123
123
|
Person.make :age => 1, :name => 'a'
|
124
124
|
Person.make :age => nil, :name => 'b'
|
125
125
|
end
|
126
|
-
|
126
|
+
|
127
127
|
it_processes_single_select_column "age where city_name = 'Laos' and year(birthday) = '2010'", 'age', :number, 1, 'age' do
|
128
128
|
Person.make :age => 1, :name => 'a', :city => City.make(:name => 'Laos'), :birthday => '2010-01-01'
|
129
129
|
end
|
130
|
-
|
130
|
+
|
131
131
|
it_processes_single_select_column 'name where age is not null', 'name', :string, 'a', 'name' do
|
132
132
|
Person.make :age => 1, :name => 'a'
|
133
133
|
Person.make :age => nil, :name => 'b'
|
134
134
|
end
|
135
|
-
|
135
|
+
|
136
136
|
it "processes group by" do
|
137
137
|
Person.make :name => 'one', :age => 1
|
138
138
|
Person.make :name => 'one', :age => 2
|
139
139
|
Person.make :name => 'two', :age => 3
|
140
140
|
Person.make :name => 'two', :age => 4
|
141
|
-
|
141
|
+
|
142
142
|
table = exec 'select max(age) group by name order by name'
|
143
|
-
|
143
|
+
|
144
144
|
table.rows.length.should == 2
|
145
145
|
table.rows[0].c.length.should == 1
|
146
146
|
table.rows[0].c[0].v.should == 2
|
147
147
|
table.rows[1].c.length.should == 1
|
148
148
|
table.rows[1].c[0].v.should == 4
|
149
149
|
end
|
150
|
-
|
150
|
+
|
151
151
|
it "processes order by" do
|
152
152
|
Person.make :age => 1
|
153
153
|
Person.make :age => 3
|
154
154
|
Person.make :age => 2
|
155
|
-
|
155
|
+
|
156
156
|
table = exec 'select age order by age desc'
|
157
|
-
|
157
|
+
|
158
158
|
table.rows.length.should == 3
|
159
159
|
table.rows[0].c.length.should == 1
|
160
160
|
table.rows[0].c[0].v.should == 3
|
@@ -163,153 +163,153 @@ describe Executor do
|
|
163
163
|
table.rows[2].c.length.should == 1
|
164
164
|
table.rows[2].c[0].v.should == 1
|
165
165
|
end
|
166
|
-
|
166
|
+
|
167
167
|
it_processes_single_select_column 'age where age > 3 order by age limit 1', 'age', :number, 4, 'age' do
|
168
168
|
[1, 2, 3, 4, 5].each{|i| Person.make :age => i}
|
169
169
|
end
|
170
|
-
|
170
|
+
|
171
171
|
it_processes_single_select_column 'age where age > 3 order by age limit 1 offset 1', 'age', :number, 5, 'age' do
|
172
172
|
[1, 2, 3, 4, 5].each{|i| Person.make :age => i}
|
173
173
|
end
|
174
|
-
|
174
|
+
|
175
175
|
it_processes_single_select_column 'city_name', 'city_name', :string, 'Buenos Aires', 'city_name' do
|
176
|
-
Person.make :city => City.make(:name => 'Buenos Aires')
|
176
|
+
Person.make :city => City.make(:name => 'Buenos Aires')
|
177
177
|
end
|
178
|
-
|
178
|
+
|
179
179
|
it_processes_single_select_column 'city_country_name', 'city_country_name', :string, 'Argentina', 'city_country_name' do
|
180
|
-
Person.make :city => City.make(:country => Country.make(:name => 'Argentina'))
|
180
|
+
Person.make :city => City.make(:country => Country.make(:name => 'Argentina'))
|
181
181
|
end
|
182
|
-
|
182
|
+
|
183
183
|
it_processes_single_select_column 'city_country_name group by city_country_name', 'city_country_name', :string, 'Argentina', 'city_country_name' do
|
184
|
-
Person.make :city => City.make(:country => Country.make(:name => 'Argentina'))
|
184
|
+
Person.make :city => City.make(:country => Country.make(:name => 'Argentina'))
|
185
185
|
end
|
186
|
-
|
186
|
+
|
187
187
|
it "processes with conditions as string" do
|
188
188
|
Person.make :age => 1
|
189
189
|
Person.make :age => 2
|
190
190
|
Person.make :age => 3
|
191
|
-
|
191
|
+
|
192
192
|
table = exec 'select age', :conditions => 'age = 2'
|
193
|
-
|
193
|
+
|
194
194
|
table.rows.length.should == 1
|
195
195
|
table.rows[0].c.length.should == 1
|
196
196
|
table.rows[0].c[0].v.should == 2
|
197
197
|
end
|
198
|
-
|
198
|
+
|
199
199
|
it "processes with conditions as string and another filter" do
|
200
200
|
Person.make :age => 1
|
201
201
|
Person.make :age => 2
|
202
202
|
Person.make :age => 3
|
203
|
-
|
203
|
+
|
204
204
|
table = exec 'select age where age > 1', :conditions => 'age < 3'
|
205
|
-
|
205
|
+
|
206
206
|
table.rows.length.should == 1
|
207
207
|
table.rows[0].c.length.should == 1
|
208
208
|
table.rows[0].c[0].v.should == 2
|
209
209
|
end
|
210
|
-
|
210
|
+
|
211
211
|
it "processes with conditions as array" do
|
212
212
|
Person.make :age => 1
|
213
213
|
Person.make :age => 2
|
214
214
|
Person.make :age => 3
|
215
|
-
|
215
|
+
|
216
216
|
table = exec 'select age', :conditions => ['age = ?', 2]
|
217
|
-
|
217
|
+
|
218
218
|
table.rows.length.should == 1
|
219
219
|
table.rows[0].c.length.should == 1
|
220
220
|
table.rows[0].c[0].v.should == 2
|
221
221
|
end
|
222
|
-
|
222
|
+
|
223
223
|
it "processes with conditions as array and another filter" do
|
224
224
|
Person.make :age => 1
|
225
225
|
Person.make :age => 2
|
226
226
|
Person.make :age => 3
|
227
|
-
|
227
|
+
|
228
228
|
table = exec 'select age where age > 1', :conditions => ['age < ?', 3]
|
229
|
-
|
229
|
+
|
230
230
|
table.rows.length.should == 1
|
231
231
|
table.rows[0].c.length.should == 1
|
232
232
|
table.rows[0].c[0].v.should == 2
|
233
233
|
end
|
234
|
-
|
235
|
-
[['year', 2006], ['month', 5], ['day', 2],
|
234
|
+
|
235
|
+
[['year', 2006], ['month', 5], ['day', 2],
|
236
236
|
['hour', 3], ['minute', 4], ['second', 9],
|
237
237
|
['dayOfWeek', 3]].each do |str, val|
|
238
238
|
it_processes_single_select_column "#{str}(created_at)", 'c0', :number, val, "#{str}(created_at)" do
|
239
|
-
Person.make :created_at => Time.parse('2006-05-02 3:04:09')
|
239
|
+
Person.make :created_at => Time.parse('2006-05-02 3:04:09')
|
240
240
|
end
|
241
241
|
end
|
242
|
-
|
242
|
+
|
243
243
|
# it_processes_single_select_column "quarter(created_at)", 'c0', :number, 2, 'quarter(created_at)' do
|
244
|
-
# Person.make :created_at => Time.parse('2006-05-02 3:04:09')
|
244
|
+
# Person.make :created_at => Time.parse('2006-05-02 3:04:09')
|
245
245
|
# end
|
246
|
-
|
246
|
+
|
247
247
|
it_processes_single_select_column "dateDiff(date '2008-03-13', date '2008-03-10')", 'c0', :number, 3, "dateDiff(date '2008-03-13', date '2008-03-10')"
|
248
|
-
|
248
|
+
|
249
249
|
# it_processes_single_select_column "now()", 'c0', :datetime, Time.now.utc.strftime("%Y-%m-%d %H:%M:%S"), "now()" do
|
250
|
-
# Person.make :created_at => Time.parse('2006-05-02 3:04:09')
|
250
|
+
# Person.make :created_at => Time.parse('2006-05-02 3:04:09')
|
251
251
|
# end
|
252
252
|
|
253
253
|
it_processes_single_select_column "toDate('2008-03-13')", 'c0', :date, Date.parse('2008-03-13').to_s, "toDate('2008-03-13')"
|
254
|
-
|
254
|
+
|
255
255
|
it_processes_single_select_column "toDate(created_at)", 'c0', :date, Date.parse('2008-03-13').to_s, "toDate(created_at)" do
|
256
|
-
Person.make :created_at => Time.parse('2008-03-13 3:04:09')
|
256
|
+
Person.make :created_at => Time.parse('2008-03-13 3:04:09')
|
257
257
|
end
|
258
|
-
|
258
|
+
|
259
259
|
# it_processes_single_select_column "toDate(1234567890000)", 'c0', :date, Date.parse('2009-02-13').to_s, "toDate(1234567890000)"
|
260
|
-
|
260
|
+
|
261
261
|
it_processes_single_select_column "upper(name)", 'c0', :string, 'FOO', "upper(name)" do
|
262
262
|
Person.make :name => 'foo'
|
263
263
|
end
|
264
|
-
|
264
|
+
|
265
265
|
it_processes_single_select_column "lower(name)", 'c0', :string, 'foo', "lower(name)" do
|
266
266
|
Person.make :name => 'FOO'
|
267
267
|
end
|
268
|
-
|
268
|
+
|
269
269
|
it_processes_single_select_column "concat(age)", 'c0', :string, '20', "concat(age)", :extensions => true do
|
270
270
|
Person.make :age => 20
|
271
271
|
end
|
272
|
-
|
272
|
+
|
273
273
|
it_processes_single_select_column "concat(name, 'bar')", 'c0', :string, 'foobar', "concat(name, 'bar')", :extensions => true do
|
274
274
|
Person.make :name => 'foo'
|
275
275
|
end
|
276
|
-
|
276
|
+
|
277
277
|
it_processes_single_select_column "name label name 'my name'", 'name', :string, 'foo', "my name" do
|
278
278
|
Person.make :name => 'foo'
|
279
279
|
end
|
280
|
-
|
280
|
+
|
281
281
|
it_processes_single_select_column "1 + 2 label 1 + 2 'my name'", 'c0', :number, 3, "my name"
|
282
|
-
|
282
|
+
|
283
283
|
it_processes_single_select_column "sum(age) label sum(age) 'my name'", 'c0', :number, 2, "my name" do
|
284
284
|
Person.make :age => 2
|
285
285
|
end
|
286
|
-
|
286
|
+
|
287
287
|
it_processes_single_select_column "1 options no_values", 'c0', :number, nil, "1"
|
288
|
-
|
288
|
+
|
289
289
|
it "processes pivot" do
|
290
290
|
Person.make :name => 'Eng', :birthday => '2000-01-12', :age => 1000
|
291
|
-
Person.make :name => 'Eng', :birthday => '2000-01-12', :age => 500
|
291
|
+
Person.make :name => 'Eng', :birthday => '2000-01-12', :age => 500
|
292
292
|
Person.make :name => 'Eng', :birthday => '2000-01-13', :age => 600
|
293
293
|
Person.make :name => 'Sales', :birthday => '2000-01-12', :age => 400
|
294
294
|
Person.make :name => 'Sales', :birthday => '2000-01-12', :age => 350
|
295
295
|
Person.make :name => 'Marketing', :birthday => '2000-01-13', :age => 800
|
296
|
-
|
296
|
+
|
297
297
|
table = exec 'select name, sum(age) group by name pivot birthday order by name'
|
298
|
-
|
298
|
+
|
299
299
|
table.cols.length.should == 3
|
300
|
-
|
300
|
+
|
301
301
|
i = 0
|
302
302
|
[['c0', :string, 'name'],
|
303
|
-
['c1', :number, '2000-01-12 sum(age)'],
|
303
|
+
['c1', :number, '2000-01-12 sum(age)'],
|
304
304
|
['c2', :number, '2000-01-13 sum(age)']].each do |id, type, label|
|
305
305
|
table.cols[i].id.should == id
|
306
306
|
table.cols[i].type.should == type
|
307
307
|
table.cols[i].label.should == label
|
308
308
|
i += 1
|
309
309
|
end
|
310
|
-
|
310
|
+
|
311
311
|
table.rows.length.should == 3
|
312
|
-
|
312
|
+
|
313
313
|
i = 0
|
314
314
|
[['Eng', 1500, 600],
|
315
315
|
['Marketing', nil, 800],
|
@@ -321,21 +321,21 @@ describe Executor do
|
|
321
321
|
i += 1
|
322
322
|
end
|
323
323
|
end
|
324
|
-
|
324
|
+
|
325
325
|
it "processes pivot2" do
|
326
326
|
Person.make :name => 'Eng', :birthday => '2000-01-12', :age => 1000
|
327
|
-
Person.make :name => 'Eng', :birthday => '2000-01-12', :age => 500
|
327
|
+
Person.make :name => 'Eng', :birthday => '2000-01-12', :age => 500
|
328
328
|
Person.make :name => 'Eng', :birthday => '2000-01-13', :age => 600
|
329
329
|
Person.make :name => 'Sales', :birthday => '2000-01-12', :age => 400
|
330
330
|
Person.make :name => 'Sales', :birthday => '2000-01-12', :age => 350
|
331
331
|
Person.make :name => 'Marketing', :birthday => '2000-01-13', :age => 800
|
332
|
-
|
332
|
+
|
333
333
|
table = exec 'select sum(age), name group by name pivot birthday order by name'
|
334
|
-
|
334
|
+
|
335
335
|
table.cols.length.should == 3
|
336
|
-
|
336
|
+
|
337
337
|
i = 0
|
338
|
-
[['c0', :number, '2000-01-12 sum(age)'],
|
338
|
+
[['c0', :number, '2000-01-12 sum(age)'],
|
339
339
|
['c1', :number, '2000-01-13 sum(age)'],
|
340
340
|
['c2', :string, 'name']].each do |id, type, label|
|
341
341
|
table.cols[i].id.should == id
|
@@ -343,9 +343,9 @@ describe Executor do
|
|
343
343
|
table.cols[i].label.should == label
|
344
344
|
i += 1
|
345
345
|
end
|
346
|
-
|
346
|
+
|
347
347
|
table.rows.length.should == 3
|
348
|
-
|
348
|
+
|
349
349
|
i = 0
|
350
350
|
[[1500, 600, 'Eng'],
|
351
351
|
[nil, 800, 'Marketing'],
|
@@ -357,15 +357,15 @@ describe Executor do
|
|
357
357
|
i += 1
|
358
358
|
end
|
359
359
|
end
|
360
|
-
|
360
|
+
|
361
361
|
it "processes pivot3" do
|
362
362
|
Person.make :name => 'Eng', :birthday => '2000-01-12', :age => 10
|
363
363
|
Person.make :name => 'Eng', :birthday => '2001-02-12', :age => 10
|
364
|
-
|
364
|
+
|
365
365
|
table = exec 'select name, sum(age) group by name pivot year(birthday), month(birthday)'
|
366
|
-
|
366
|
+
|
367
367
|
table.cols.length.should == 3
|
368
|
-
|
368
|
+
|
369
369
|
i = 0
|
370
370
|
[['Eng', 10, 10]].each do |values|
|
371
371
|
table.rows[i].c.length.should == 3
|
@@ -375,15 +375,15 @@ describe Executor do
|
|
375
375
|
i += 1
|
376
376
|
end
|
377
377
|
end
|
378
|
-
|
378
|
+
|
379
379
|
it "processes pivot4" do
|
380
380
|
Person.make :name => 'Eng', :birthday => '2000-01-12', :age => 10
|
381
381
|
Person.make :name => 'Sales', :birthday => '2001-02-12', :age => 20
|
382
|
-
|
382
|
+
|
383
383
|
table = exec 'select birthday, month(birthday), sum(age) group by month(birthday) pivot name order by name'
|
384
|
-
|
384
|
+
|
385
385
|
table.cols.length.should == 5
|
386
|
-
|
386
|
+
|
387
387
|
i = 0
|
388
388
|
[
|
389
389
|
['2000-01-12', nil, 1, 10, nil],
|
@@ -396,17 +396,51 @@ describe Executor do
|
|
396
396
|
i += 1
|
397
397
|
end
|
398
398
|
end
|
399
|
-
|
399
|
+
|
400
|
+
it "processes pivot without group by" do
|
401
|
+
Person.make :name => 'Eng', :birthday => '2000-01-12', :age => 1000
|
402
|
+
Person.make :name => 'Eng', :birthday => '2000-01-12', :age => 500
|
403
|
+
Person.make :name => 'Eng', :birthday => '2000-01-13', :age => 600
|
404
|
+
Person.make :name => 'Sales', :birthday => '2000-01-12', :age => 400
|
405
|
+
Person.make :name => 'Sales', :birthday => '2000-01-12', :age => 350
|
406
|
+
Person.make :name => 'Marketing', :birthday => '2000-01-13', :age => 800
|
407
|
+
|
408
|
+
table = exec 'select sum(age) pivot name order by name'
|
409
|
+
|
410
|
+
table.cols.length.should == 3
|
411
|
+
|
412
|
+
i = 0
|
413
|
+
[['c0', :number, 'Eng sum(age)'],
|
414
|
+
['c1', :number, 'Marketing sum(age)'],
|
415
|
+
['c2', :number, 'Sales sum(age)']].each do |id, type, label|
|
416
|
+
table.cols[i].id.should == id
|
417
|
+
table.cols[i].type.should == type
|
418
|
+
table.cols[i].label.should == label
|
419
|
+
i += 1
|
420
|
+
end
|
421
|
+
|
422
|
+
table.rows.length.should == 1
|
423
|
+
|
424
|
+
i = 0
|
425
|
+
[[2100, 800, 750]].each do |values|
|
426
|
+
table.rows[i].c.length.should == 3
|
427
|
+
values.each_with_index do |v, j|
|
428
|
+
table.rows[i].c[j].v.should == v
|
429
|
+
end
|
430
|
+
i += 1
|
431
|
+
end
|
432
|
+
end
|
433
|
+
|
400
434
|
it "processes pivot with no results" do
|
401
435
|
Person.make :name => 'Eng', :birthday => '2000-01-12', :age => 10
|
402
436
|
Person.make :name => 'Sales', :birthday => '2001-02-12', :age => 20
|
403
|
-
|
437
|
+
|
404
438
|
table = exec 'select birthday, sum(age) where 1 = 2 group by month(birthday) pivot name order by name'
|
405
|
-
|
439
|
+
|
406
440
|
table.cols.length.should == 2
|
407
|
-
|
441
|
+
|
408
442
|
i = 0
|
409
|
-
[['birthday', :date, 'birthday'],
|
443
|
+
[['birthday', :date, 'birthday'],
|
410
444
|
['c1', :number, 'sum(age)']].each do |id, type, label|
|
411
445
|
table.cols[i].id.should == id
|
412
446
|
table.cols[i].type.should == type
|
@@ -414,15 +448,15 @@ describe Executor do
|
|
414
448
|
i += 1
|
415
449
|
end
|
416
450
|
end
|
417
|
-
|
451
|
+
|
418
452
|
it "processes pivot with group by not in select" do
|
419
453
|
Person.make :name => 'Eng', :birthday => '2000-01-12', :age => 10
|
420
454
|
Person.make :name => 'Sales', :birthday => '2001-02-12', :age => 20
|
421
|
-
|
455
|
+
|
422
456
|
table = exec 'select birthday, sum(age) group by month(birthday) pivot name order by name'
|
423
|
-
|
457
|
+
|
424
458
|
table.cols.length.should == 4
|
425
|
-
|
459
|
+
|
426
460
|
i = 0
|
427
461
|
[
|
428
462
|
['2000-01-12', nil, 10, nil],
|
@@ -435,5 +469,5 @@ describe Executor do
|
|
435
469
|
i += 1
|
436
470
|
end
|
437
471
|
end
|
438
|
-
|
472
|
+
|
439
473
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
$:.unshift(File.dirname(__FILE__) + '/../lib')
|
2
2
|
|
3
3
|
require 'rubygems'
|
4
|
-
require 'spec'
|
5
4
|
require 'logger'
|
6
5
|
|
7
6
|
require 'active_record'
|
@@ -40,10 +39,11 @@ require File.dirname(__FILE__) + '/models/country'
|
|
40
39
|
|
41
40
|
require File.dirname(__FILE__) + '/blueprints'
|
42
41
|
|
43
|
-
require 'rgviz'
|
44
|
-
require '
|
42
|
+
require File.dirname(__FILE__) + '/../../rgviz/lib/rgviz'
|
43
|
+
#require 'rgviz'
|
44
|
+
require 'rgviz_rails/executor'
|
45
45
|
|
46
46
|
RAILS_ENV = 'test'
|
47
47
|
|
48
48
|
# Add this directory so the ActiveSupport autoloading works
|
49
|
-
ActiveSupport::Dependencies.load_paths << File.dirname(__FILE__)
|
49
|
+
#ActiveSupport::Dependencies.load_paths << File.dirname(__FILE__)
|
metadata
CHANGED
@@ -1,27 +1,36 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rgviz-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 85
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 47
|
9
|
+
version: "0.47"
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
|
-
|
12
|
+
- Ary Borenszweig
|
8
13
|
autorequire:
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date:
|
17
|
+
date: 2011-07-07 00:00:00 -03:00
|
13
18
|
default_executable:
|
14
19
|
dependencies:
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: rgviz
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
version: "0"
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
25
34
|
description:
|
26
35
|
email: aborenszweig@manas.com.ar
|
27
36
|
executables: []
|
@@ -29,26 +38,26 @@ executables: []
|
|
29
38
|
extensions: []
|
30
39
|
|
31
40
|
extra_rdoc_files:
|
32
|
-
|
41
|
+
- README.rdoc
|
33
42
|
files:
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
43
|
+
- lib/rgviz_rails.rb
|
44
|
+
- lib/rgviz_rails/executor.rb
|
45
|
+
- lib/rgviz_rails/js_renderer.rb
|
46
|
+
- lib/rgviz_rails/tqx.rb
|
47
|
+
- lib/rgviz_rails/view_helper.rb
|
48
|
+
- lib/rgviz_rails/adapters/mysql_adapter.rb
|
49
|
+
- lib/rgviz_rails/adapters/postgresql_adapter.rb
|
50
|
+
- lib/rgviz_rails/adapters/sqlite_adapter.rb
|
51
|
+
- lib/rgviz_rails/init.rb
|
52
|
+
- rails/init.rb
|
53
|
+
- spec/blueprints.rb
|
54
|
+
- spec/spec.opts
|
55
|
+
- spec/spec_helper.rb
|
56
|
+
- spec/models/city.rb
|
57
|
+
- spec/models/country.rb
|
58
|
+
- spec/models/person.rb
|
59
|
+
- spec/rgviz/executor_spec.rb
|
60
|
+
- README.rdoc
|
52
61
|
has_rdoc: true
|
53
62
|
homepage: http://code.google.com/p/rgviz-rails
|
54
63
|
licenses: []
|
@@ -57,23 +66,29 @@ post_install_message:
|
|
57
66
|
rdoc_options: []
|
58
67
|
|
59
68
|
require_paths:
|
60
|
-
|
69
|
+
- lib
|
61
70
|
required_ruby_version: !ruby/object:Gem::Requirement
|
71
|
+
none: false
|
62
72
|
requirements:
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
hash: 3
|
76
|
+
segments:
|
77
|
+
- 0
|
78
|
+
version: "0"
|
67
79
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
|
+
none: false
|
68
81
|
requirements:
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
hash: 3
|
85
|
+
segments:
|
86
|
+
- 0
|
87
|
+
version: "0"
|
73
88
|
requirements: []
|
74
89
|
|
75
90
|
rubyforge_project:
|
76
|
-
rubygems_version: 1.
|
91
|
+
rubygems_version: 1.4.2
|
77
92
|
signing_key:
|
78
93
|
specification_version: 3
|
79
94
|
summary: rgviz for rails
|