arel_extensions 1.2.2 → 1.2.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|