arel_extensions 1.2.2 → 1.2.3
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 +4 -4
- data/lib/arel_extensions/nodes/blank.rb +14 -11
- data/lib/arel_extensions/nodes/change_case.rb +2 -2
- data/lib/arel_extensions/nodes/collate.rb +12 -12
- data/lib/arel_extensions/nodes/function.rb +8 -0
- data/lib/arel_extensions/nodes/is_null.rb +10 -8
- data/lib/arel_extensions/nodes/levenshtein_distance.rb +5 -5
- data/lib/arel_extensions/nodes/locate.rb +7 -7
- data/lib/arel_extensions/nodes/union_all.rb +1 -1
- data/lib/arel_extensions/set_functions.rb +14 -14
- data/lib/arel_extensions/version.rb +1 -1
- data/lib/arel_extensions/visitors/mssql.rb +4 -4
- data/lib/arel_extensions/visitors/mysql.rb +2 -10
- data/lib/arel_extensions/visitors/oracle.rb +25 -13
- data/lib/arel_extensions/visitors/postgresql.rb +2 -2
- data/lib/arel_extensions/visitors/sqlite.rb +2 -2
- data/lib/arel_extensions/visitors/to_sql.rb +4 -4
- data/test/with_ar/all_agnostic_test.rb +17 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 19306a80e5058901e7d9db6da1e05cea53e54f3c
|
4
|
+
data.tar.gz: e79f09a5b088c2d571079b796cb819ddec25ebd3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 29df0447069762b05d5daaa2e53884a3cfa68fef1a67fe9df34ef09923c2ef152da138694a564e59b7302317895b150272f8ef9da5ef2eca20bcde54384068c1
|
7
|
+
data.tar.gz: b9102e07381a96d449c9257467e7437f5c4746c6a9f047172f72daf3d5cf0d1fa9c49d5bc6fcc61119032695ee58e84e4db0fdff068d5d820288a591631a9e1b
|
@@ -1,20 +1,23 @@
|
|
1
|
+
require 'arel_extensions/boolean_functions'
|
2
|
+
|
1
3
|
module ArelExtensions
|
2
4
|
module Nodes
|
3
|
-
class Blank <
|
4
|
-
|
5
|
+
class Blank < Arel::Nodes::Unary
|
6
|
+
include ArelExtensions::BooleanFunctions
|
7
|
+
RETURN_TYPE = :boolean
|
5
8
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
end
|
9
|
+
def initialize expr
|
10
|
+
super expr.first
|
11
|
+
end
|
10
12
|
end
|
11
13
|
|
12
|
-
class NotBlank <
|
13
|
-
|
14
|
+
class NotBlank < Arel::Nodes::Unary
|
15
|
+
include ArelExtensions::BooleanFunctions
|
16
|
+
RETURN_TYPE = :boolean
|
14
17
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
+
def initialize expr
|
19
|
+
super expr.first
|
20
|
+
end
|
18
21
|
end
|
19
22
|
|
20
23
|
end
|
@@ -1,18 +1,18 @@
|
|
1
1
|
module ArelExtensions
|
2
2
|
module Nodes
|
3
3
|
class Collate < Function
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
4
|
+
RETURN_TYPE = :string
|
5
|
+
|
6
|
+
attr_accessor :ai, :ci, :option
|
7
|
+
|
8
|
+
def initialize left, option=nil, ai=false, ci=false
|
9
|
+
@ai = ai
|
10
|
+
@ci = ci
|
11
|
+
@option = option
|
12
|
+
tab = [convert_to_node(left)]
|
13
|
+
return super(tab)
|
14
|
+
end
|
15
|
+
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
@@ -32,6 +32,14 @@ module ArelExtensions
|
|
32
32
|
@expressions[1]
|
33
33
|
end
|
34
34
|
|
35
|
+
def ==(other)
|
36
|
+
Arel::Nodes::Equality.new self, Arel::Nodes.build_quoted(other, self)
|
37
|
+
end
|
38
|
+
|
39
|
+
def !=(other)
|
40
|
+
Arel::Nodes::NotEqual.new self, Arel::Nodes.build_quoted(other, self)
|
41
|
+
end
|
42
|
+
|
35
43
|
def type_of_attribute(att)
|
36
44
|
case att
|
37
45
|
when Arel::Attributes::Attribute
|
@@ -1,13 +1,15 @@
|
|
1
|
+
require 'arel_extensions/boolean_functions'
|
2
|
+
|
1
3
|
module ArelExtensions
|
2
4
|
module Nodes
|
3
|
-
class IsNull <
|
4
|
-
|
5
|
-
|
5
|
+
class IsNull < Arel::Nodes::Unary
|
6
|
+
include ArelExtensions::BooleanFunctions
|
7
|
+
RETURN_TYPE = :boolean
|
8
|
+
end
|
9
|
+
|
10
|
+
class IsNotNull < Arel::Nodes::Unary
|
11
|
+
include ArelExtensions::BooleanFunctions
|
12
|
+
RETURN_TYPE = :boolean
|
6
13
|
end
|
7
|
-
|
8
|
-
class IsNotNull < Function
|
9
|
-
RETURN_TYPE = :boolean
|
10
|
-
|
11
|
-
end
|
12
14
|
end
|
13
15
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
module ArelExtensions
|
2
2
|
module Nodes
|
3
3
|
class LevenshteinDistance < Function
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
4
|
+
RETURN_TYPE = :number
|
5
|
+
|
6
|
+
def initialize expr
|
7
|
+
super [convert_to_node(expr.first), Arel::Nodes.build_quoted(expr[1])]
|
8
|
+
end
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
@@ -1,14 +1,14 @@
|
|
1
1
|
module ArelExtensions
|
2
2
|
module Nodes
|
3
3
|
class Locate < Function
|
4
|
-
|
4
|
+
RETURN_TYPE = :integer
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
6
|
+
def initialize expr
|
7
|
+
tab = expr.map do |arg|
|
8
|
+
convert_to_node(arg)
|
9
|
+
end
|
10
|
+
return super(tab)
|
11
|
+
end
|
12
12
|
|
13
13
|
end
|
14
14
|
end
|
@@ -2,25 +2,25 @@ require 'arel_extensions/nodes/union'
|
|
2
2
|
require 'arel_extensions/nodes/union_all'
|
3
3
|
|
4
4
|
module ArelExtensions
|
5
|
-
|
5
|
+
module SetFunctions
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
def +(other)
|
8
|
+
ArelExtensions::Nodes::Union.new(self,other)
|
9
|
+
end
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
def union(other)
|
12
|
+
ArelExtensions::Nodes::Union.new(self,other)
|
13
|
+
end
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
15
|
+
def union_all(other)
|
16
|
+
ArelExtensions::Nodes::UnionAll.new(self,other)
|
17
|
+
end
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
def uniq
|
20
|
+
self
|
21
|
+
end
|
22
22
|
|
23
|
-
|
23
|
+
end
|
24
24
|
end
|
25
25
|
|
26
26
|
Arel::Nodes::Union.class_eval do
|
@@ -51,14 +51,14 @@ module ArelExtensions
|
|
51
51
|
|
52
52
|
def visit_ArelExtensions_Nodes_IsNull o, collector
|
53
53
|
collector << "("
|
54
|
-
collector = visit o.
|
54
|
+
collector = visit o.expr, collector
|
55
55
|
collector << " IS NULL)"
|
56
56
|
collector
|
57
57
|
end
|
58
58
|
|
59
59
|
def visit_ArelExtensions_Nodes_IsNotNull o, collector
|
60
60
|
collector << "("
|
61
|
-
collector = visit o.
|
61
|
+
collector = visit o.expr, collector
|
62
62
|
collector << " IS NOT NULL)"
|
63
63
|
collector
|
64
64
|
end
|
@@ -234,11 +234,11 @@ module ArelExtensions
|
|
234
234
|
end
|
235
235
|
|
236
236
|
def visit_ArelExtensions_Nodes_Blank o, collector
|
237
|
-
visit o.
|
237
|
+
visit o.expr.coalesce('').trim.length.eq(0), collector
|
238
238
|
end
|
239
239
|
|
240
240
|
def visit_ArelExtensions_Nodes_NotBlank o, collector
|
241
|
-
visit o.
|
241
|
+
visit o.expr.coalesce('').trim.length.gt(0), collector
|
242
242
|
end
|
243
243
|
|
244
244
|
def visit_ArelExtensions_Nodes_Format o, collector
|
@@ -284,22 +284,14 @@ module ArelExtensions
|
|
284
284
|
|
285
285
|
def visit_ArelExtensions_Nodes_IsNull o, collector
|
286
286
|
collector << "ISNULL("
|
287
|
-
collector = visit o.
|
288
|
-
if o.right
|
289
|
-
collector << Arel::Visitors::MySQL::COMMA
|
290
|
-
collector = visit o.right, collector
|
291
|
-
end
|
287
|
+
collector = visit o.expr, collector
|
292
288
|
collector << ")"
|
293
289
|
collector
|
294
290
|
end
|
295
291
|
|
296
292
|
def visit_ArelExtensions_Nodes_IsNotNull o, collector
|
297
293
|
collector << "NOT ISNULL("
|
298
|
-
collector = visit o.
|
299
|
-
if o.right
|
300
|
-
collector << Arel::Visitors::MySQL::COMMA
|
301
|
-
collector = visit o.right, collector
|
302
|
-
end
|
294
|
+
collector = visit o.expr, collector
|
303
295
|
collector << ")"
|
304
296
|
collector
|
305
297
|
end
|
@@ -154,8 +154,8 @@ module ArelExtensions
|
|
154
154
|
o.expressions.each_with_index { |arg, i|
|
155
155
|
collector << Arel::Visitors::Oracle::COMMA unless i == 0
|
156
156
|
if i > 0 && o.left_node_type == :text
|
157
|
-
if arg == ''
|
158
|
-
collector <<
|
157
|
+
if arg == '' || (arg.is_a?(Arel::Nodes::Quoted) && (arg.expr == ''))
|
158
|
+
collector << "NULL"
|
159
159
|
else
|
160
160
|
collector << 'TO_CLOB('
|
161
161
|
collector = visit arg, collector
|
@@ -257,9 +257,15 @@ module ArelExtensions
|
|
257
257
|
collector << ")"
|
258
258
|
return collector
|
259
259
|
when :time
|
260
|
-
|
261
|
-
|
262
|
-
|
260
|
+
if (o.left.respond_to?(:return_type) && o.left.return_type == :string) || o.left.is_a?(Arel::Nodes::Quoted)
|
261
|
+
collector << "TO_DATE("
|
262
|
+
collector = visit o.left, collector
|
263
|
+
collector << ",'HH24:MI:SS')"
|
264
|
+
else
|
265
|
+
collector << "TO_DATE(TO_CHAR("
|
266
|
+
collector = visit o.left, collector
|
267
|
+
collector << ",'HH24:MI:SS'),'HH24:MI:SS')"
|
268
|
+
end
|
263
269
|
return collector
|
264
270
|
when :number, :decimal
|
265
271
|
collector << "TO_NUMBER("
|
@@ -269,9 +275,15 @@ module ArelExtensions
|
|
269
275
|
when :datetime
|
270
276
|
as_attr = Arel::Nodes::SqlLiteral.new('timestamp')
|
271
277
|
when :date
|
272
|
-
|
273
|
-
|
274
|
-
|
278
|
+
if (o.left.respond_to?(:return_type) && o.left.return_type == :string) || o.left.is_a?(Arel::Nodes::Quoted)
|
279
|
+
collector << "TO_DATE("
|
280
|
+
collector = visit o.left, collector
|
281
|
+
collector << ",'YYYY-MM-DD')"
|
282
|
+
else
|
283
|
+
collector << "TO_DATE(TO_CHAR("
|
284
|
+
collector = visit o.left, collector
|
285
|
+
collector << ",'YYYY-MM-DD'),'YYYY-MM-DD')"
|
286
|
+
end
|
275
287
|
return collector
|
276
288
|
when :binary
|
277
289
|
as_attr = Arel::Nodes::SqlLiteral.new('binary')
|
@@ -294,13 +306,13 @@ module ArelExtensions
|
|
294
306
|
end
|
295
307
|
|
296
308
|
def visit_ArelExtensions_Nodes_IsNull o, collector
|
297
|
-
collector = visit o.
|
309
|
+
collector = visit o.expr, collector
|
298
310
|
collector << ' IS NULL'
|
299
311
|
collector
|
300
312
|
end
|
301
313
|
|
302
314
|
def visit_ArelExtensions_Nodes_IsNotNull o, collector
|
303
|
-
collector = visit o.
|
315
|
+
collector = visit o.expr, collector
|
304
316
|
collector << ' IS NOT NULL'
|
305
317
|
collector
|
306
318
|
end
|
@@ -407,11 +419,11 @@ module ArelExtensions
|
|
407
419
|
end
|
408
420
|
|
409
421
|
def visit_ArelExtensions_Nodes_Blank o, collector
|
410
|
-
visit o.
|
422
|
+
visit o.expr.trim.length.coalesce(0).eq(0), collector
|
411
423
|
end
|
412
424
|
|
413
425
|
def visit_ArelExtensions_Nodes_NotBlank o, collector
|
414
|
-
visit o.
|
426
|
+
visit o.expr.trim.length.coalesce(0).gt(0), collector
|
415
427
|
end
|
416
428
|
|
417
429
|
def visit_ArelExtensions_Nodes_DateAdd o, collector
|
@@ -571,7 +583,7 @@ module ArelExtensions
|
|
571
583
|
else
|
572
584
|
collector = visit o.left, collector
|
573
585
|
end
|
574
|
-
quote = o.right.to_s =~ /[
|
586
|
+
quote = o.right.to_s =~ /(\A["].*["]\z)|\A[a-zA-Z_]*\z/ ? '' : '"'
|
575
587
|
collector << " AS #{quote}"
|
576
588
|
collector = visit o.right, collector
|
577
589
|
collector << "#{quote}"
|
@@ -278,13 +278,13 @@ module ArelExtensions
|
|
278
278
|
end
|
279
279
|
|
280
280
|
def visit_ArelExtensions_Nodes_IsNull o, collector
|
281
|
-
collector = visit o.
|
281
|
+
collector = visit o.expr, collector
|
282
282
|
collector << ' IS NULL'
|
283
283
|
collector
|
284
284
|
end
|
285
285
|
|
286
286
|
def visit_ArelExtensions_Nodes_IsNotNull o, collector
|
287
|
-
collector = visit o.
|
287
|
+
collector = visit o.expr, collector
|
288
288
|
collector << ' IS NOT NULL'
|
289
289
|
collector
|
290
290
|
end
|
@@ -150,13 +150,13 @@ module ArelExtensions
|
|
150
150
|
end
|
151
151
|
|
152
152
|
def visit_ArelExtensions_Nodes_IsNull o, collector
|
153
|
-
collector = visit o.
|
153
|
+
collector = visit o.expr, collector
|
154
154
|
collector << ' IS NULL'
|
155
155
|
collector
|
156
156
|
end
|
157
157
|
|
158
158
|
def visit_ArelExtensions_Nodes_IsNotNull o, collector
|
159
|
-
collector = visit o.
|
159
|
+
collector = visit o.expr, collector
|
160
160
|
collector << ' IS NOT NULL'
|
161
161
|
collector
|
162
162
|
end
|
@@ -218,7 +218,7 @@ module ArelExtensions
|
|
218
218
|
def visit_ArelExtensions_Nodes_Blank o, collector
|
219
219
|
#visit o.left.coalesce('').trim.length.eq(0), collector
|
220
220
|
collector << 'LENGTH(TRIM(COALESCE('
|
221
|
-
collector = visit o.
|
221
|
+
collector = visit o.expr, collector
|
222
222
|
collector << Arel::Visitors::ToSql::COMMA
|
223
223
|
collector = visit Arel::Nodes.build_quoted(''), collector
|
224
224
|
collector << "))) = 0"
|
@@ -229,7 +229,7 @@ module ArelExtensions
|
|
229
229
|
def visit_ArelExtensions_Nodes_NotBlank o, collector
|
230
230
|
#visit o.left.coalesce('').trim.length.gt(0), collector
|
231
231
|
collector << 'LENGTH(TRIM(COALESCE('
|
232
|
-
collector = visit o.
|
232
|
+
collector = visit o.expr, collector
|
233
233
|
collector << Arel::Visitors::ToSql::COMMA
|
234
234
|
collector = visit Arel::Nodes.build_quoted(''), collector
|
235
235
|
collector << "))) > 0"
|
@@ -367,14 +367,14 @@ module ArelExtensions
|
|
367
367
|
|
368
368
|
def visit_ArelExtensions_Nodes_IsNull o, collector
|
369
369
|
collector << "ISNULL("
|
370
|
-
collector = visit o.
|
370
|
+
collector = visit o.expr, collector
|
371
371
|
collector << ")"
|
372
372
|
collector
|
373
373
|
end
|
374
374
|
|
375
375
|
def visit_ArelExtensions_Nodes_IsNotNull o, collector
|
376
376
|
collector << "NOT ISNULL("
|
377
|
-
collector = visit o.
|
377
|
+
collector = visit o.expr, collector
|
378
378
|
collector << ")"
|
379
379
|
collector
|
380
380
|
end
|
@@ -32,6 +32,7 @@ module ArelExtensions
|
|
32
32
|
t.column :created_at, :date
|
33
33
|
t.column :updated_at, :datetime
|
34
34
|
t.column :duration, :time
|
35
|
+
t.column :other, :string
|
35
36
|
t.column :score, :decimal, :precision => 20, :scale => 10
|
36
37
|
end
|
37
38
|
@cnx.drop_table(:product_tests) rescue nil
|
@@ -63,7 +64,7 @@ module ArelExtensions
|
|
63
64
|
@myung = User.where(:id => u.id)
|
64
65
|
u = User.create :age => 25, :name => "Laure", :created_at => d, :score => 20.16, :duration => Time.utc(2001, 1, 1, 12, 42, 21),:updated_at => Time.utc(2014, 3, 3, 12, 42, 0)
|
65
66
|
@laure = User.where(:id => u.id)
|
66
|
-
u = User.create :age => nil, :name => "Test", :created_at => d, :score => 1.62
|
67
|
+
u = User.create :age => nil, :name => "Test", :created_at => d, :score => 1.62, :other => 'toto'
|
67
68
|
@test = User.where(:id => u.id)
|
68
69
|
u = User.create :age => -42, :name => "Negatif", :comments => '1,22,3,42,2', :created_at => d, :updated_at => d.to_time, :score => 0.17
|
69
70
|
@neg = User.where(:id => u.id)
|
@@ -77,6 +78,7 @@ module ArelExtensions
|
|
77
78
|
@comments = User.arel_table[:comments]
|
78
79
|
@duration = User.arel_table[:duration]
|
79
80
|
@price = Product.arel_table[:price]
|
81
|
+
@other = User.arel_table[:other]
|
80
82
|
@not_in_table = User.arel_table[:not_in_table]
|
81
83
|
|
82
84
|
@ut = User.arel_table
|
@@ -347,12 +349,16 @@ module ArelExtensions
|
|
347
349
|
def test_coalesce
|
348
350
|
assert_equal 'Camille concat', t(@camille, @name.coalesce(nil, "default") + ' concat')
|
349
351
|
|
352
|
+
assert_equal 'toto', t(@test, @other.coalesce(""))
|
353
|
+
|
350
354
|
assert_equal ' ', t(@myung, @comments.coalesce("Myung").coalesce('ignored'))
|
351
355
|
assert_equal 'Laure', t(@laure, @comments.coalesce("Laure"))
|
352
356
|
if @env_db == 'oracle'
|
353
357
|
assert_nil t(@laure, @comments.coalesce(""))
|
358
|
+
assert_nil t(@camille, @other.coalesce(""))
|
354
359
|
else
|
355
360
|
assert_equal('', t(@laure, @comments.coalesce("")))
|
361
|
+
assert_equal '', t(@camille, @other.coalesce(""))
|
356
362
|
end
|
357
363
|
assert_equal 100, t(@test, @age.coalesce(100))
|
358
364
|
assert_equal "Camille", t(@camille, @name.coalesce(nil, "default"))
|
@@ -470,20 +476,26 @@ module ArelExtensions
|
|
470
476
|
assert_equal 21, t(@laure,@score.cast(:string).cast(:int)+1)
|
471
477
|
|
472
478
|
assert_equal String, t(@lucas,@updated_at.cast(:string)).class
|
473
|
-
assert_equal Date, t(@lucas,@updated_at.cast(:date)).class unless @env_db == 'oracle'
|
479
|
+
assert_equal Date, t(@lucas,@updated_at.cast(:date)).class unless @env_db == 'oracle' # DateTime
|
474
480
|
assert_equal Time, t(@lucas,@updated_at.cast(:string).cast(:datetime)).class
|
475
481
|
assert_equal Time, t(@lucas,@updated_at.cast(:time)).class
|
476
482
|
|
477
483
|
assert_equal "2014-03-03 12:42:00", t(@lucas,@updated_at.cast(:string)) unless @env_db == 'mssql' #locale dependent
|
484
|
+
assert_equal Date.parse("2014-03-03"), t(@lucas,Arel::Nodes.build_quoted('2014-03-03').cast(:date))
|
485
|
+
assert_equal Date.parse("5014-03-03"), t(@lucas,(@age.cast(:string) + '014-03-03').cast(:date))
|
478
486
|
assert_equal Time.parse("2014-03-03 12:42:00 UTC"), t(@lucas,@updated_at.cast(:string).cast(:datetime))
|
479
487
|
assert_equal Date.parse("2014-03-03"), t(@lucas,@updated_at.cast(:date))
|
480
|
-
assert_equal "12:42:00", t(@lucas,@updated_at.cast(:time).cast(:string)).split('.').first unless @env_db == 'oracle'
|
488
|
+
assert_equal "12:42:00", t(@lucas,@updated_at.cast(:time).cast(:string)).split('.').first unless @env_db == 'oracle' #DateTime
|
481
489
|
end
|
482
490
|
end
|
483
491
|
|
484
492
|
def test_is_null
|
485
493
|
#puts User.where(@age.is_null).select(@name).to_sql
|
486
|
-
|
494
|
+
#puts @age.is_null
|
495
|
+
#puts @age.is_null.inspect
|
496
|
+
#puts @age.is_null.to_sql
|
497
|
+
#puts @age=='34'
|
498
|
+
assert_equal "Test", User.select(@name).where(@age.is_null.to_sql).first.name
|
487
499
|
end
|
488
500
|
|
489
501
|
def test_math_plus
|
@@ -778,6 +790,7 @@ module ArelExtensions
|
|
778
790
|
assert_equal 'Arthur', @arthur.select(@name.as('Na Me')).first.attributes["Na Me"]
|
779
791
|
assert_equal 'ArthurArthur', @arthur.select((@name+@name).as('Na-Me')).first.attributes["Na-Me"]
|
780
792
|
end
|
793
|
+
|
781
794
|
end
|
782
795
|
end
|
783
796
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arel_extensions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yann Azoury
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2019-
|
13
|
+
date: 2019-07-24 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: arel
|