search_rails 2.0.2 → 3.0.0
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/.node-version +1 -1
- data/.npm-version +1 -1
- data/.rubocop.yml +23 -1
- data/.ruby-version +1 -1
- data/.tool-versions +2 -3
- data/Gemfile +1 -1
- data/Gemfile.lock +180 -166
- data/VERSION +1 -1
- data/bin/bundle +123 -0
- data/bin/bundle-audit +31 -0
- data/bin/bundler-audit +31 -0
- data/bin/dorian +31 -0
- data/bin/rubocop +31 -0
- data/bin/test +3 -0
- data/lib/search.rb +79 -76
- data/package-lock.json +4 -4
- data/package.json +3 -3
- data/search_rails.gemspec +3 -3
- metadata +13 -7
data/lib/search.rb
CHANGED
|
@@ -28,7 +28,7 @@ module Search
|
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
def _search_cast(node:, type: "text")
|
|
31
|
-
Arel::Nodes::NamedFunction.new("cast", [node.as(type)])
|
|
31
|
+
Arel::Nodes::NamedFunction.new("cast", [node.as(type.to_s)])
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
def _search_cast_boolean(value)
|
|
@@ -94,8 +94,8 @@ module Search
|
|
|
94
94
|
# fields:
|
|
95
95
|
# [:id, :name, :input]
|
|
96
96
|
scope :search,
|
|
97
|
-
|
|
98
|
-
raise ArgumentError unless
|
|
97
|
+
lambda { |q: "", fields: search_fields&.keys|
|
|
98
|
+
raise ArgumentError unless search_fields.is_an?(Hash)
|
|
99
99
|
raise ArgumentError unless fields.is_an?(Array)
|
|
100
100
|
|
|
101
101
|
fields = fields.map(&:to_s)
|
|
@@ -113,22 +113,24 @@ module Search
|
|
|
113
113
|
fields: fields
|
|
114
114
|
)
|
|
115
115
|
)
|
|
116
|
-
|
|
116
|
+
}
|
|
117
117
|
|
|
118
118
|
scope :_search_joins,
|
|
119
|
-
|
|
119
|
+
lambda { |scope:, fields:|
|
|
120
120
|
fields = fields.map(&:to_s)
|
|
121
121
|
|
|
122
122
|
relations =
|
|
123
|
-
fields.
|
|
123
|
+
fields.filter_map do |field|
|
|
124
|
+
search_fields.fetch(field.to_sym)[:relation]
|
|
125
|
+
end
|
|
124
126
|
|
|
125
127
|
relations.reduce(scope) do |scope_with_relations, relation|
|
|
126
128
|
relation.call(scope_with_relations)
|
|
127
129
|
end
|
|
128
|
-
|
|
130
|
+
}
|
|
129
131
|
|
|
130
132
|
scope :_search_parsed,
|
|
131
|
-
|
|
133
|
+
lambda { |parsed:, scope:, fields:|
|
|
132
134
|
if parsed.is_a?(String)
|
|
133
135
|
scope._search_fields(q: parsed, fields: fields)
|
|
134
136
|
elsif parsed.is_a?(Hash)
|
|
@@ -186,7 +188,11 @@ module Search
|
|
|
186
188
|
if key.blank?
|
|
187
189
|
scope.none
|
|
188
190
|
else
|
|
189
|
-
scope._search_field(
|
|
191
|
+
scope._search_field(
|
|
192
|
+
key: key,
|
|
193
|
+
operator: operator,
|
|
194
|
+
value: value
|
|
195
|
+
)
|
|
190
196
|
end
|
|
191
197
|
else
|
|
192
198
|
raise ArgumentError
|
|
@@ -194,14 +200,14 @@ module Search
|
|
|
194
200
|
else
|
|
195
201
|
raise ArgumentError
|
|
196
202
|
end
|
|
197
|
-
|
|
203
|
+
}
|
|
198
204
|
|
|
199
205
|
# q:
|
|
200
206
|
# "dorian"
|
|
201
207
|
# "1"
|
|
202
208
|
# fields: [:id, :given_name, :family_name]
|
|
203
209
|
scope :_search_fields,
|
|
204
|
-
|
|
210
|
+
lambda { |q: "", fields: search_fields&.keys|
|
|
205
211
|
raise ArgumentError unless search_fields.is_an?(Hash)
|
|
206
212
|
raise ArgumentError unless fields.is_an?(Array)
|
|
207
213
|
|
|
@@ -211,21 +217,20 @@ module Search
|
|
|
211
217
|
where(
|
|
212
218
|
fields
|
|
213
219
|
.map do |field|
|
|
214
|
-
field =
|
|
220
|
+
field = search_fields.fetch(field.to_sym)
|
|
215
221
|
node = field[:node].call
|
|
216
222
|
casted_field = _search_cast(node: node, type: :text)
|
|
217
223
|
casted_field.matches("%#{q}%", nil, false)
|
|
218
224
|
end
|
|
219
225
|
.reduce(&:or)
|
|
220
226
|
)
|
|
221
|
-
|
|
222
|
-
end
|
|
227
|
+
}
|
|
223
228
|
|
|
224
229
|
# key: input, name, id, created_at, updated_at, verified, admin, ...
|
|
225
230
|
# operator: :, =, >, ~, <, >=, ...
|
|
226
231
|
# value: "pomodoro", 123, true, false
|
|
227
232
|
scope :_search_field,
|
|
228
|
-
|
|
233
|
+
lambda { |key:, value:, operator: ":", fields: search_fields&.keys|
|
|
229
234
|
raise ArgumentError unless search_fields.is_an?(Hash)
|
|
230
235
|
raise ArgumentError unless fields.is_an?(Array)
|
|
231
236
|
|
|
@@ -235,7 +240,7 @@ module Search
|
|
|
235
240
|
raise ArgumentError if key.blank?
|
|
236
241
|
raise ArgumentError if operator.blank?
|
|
237
242
|
|
|
238
|
-
field =
|
|
243
|
+
field = search_fields.fetch(key.to_sym)
|
|
239
244
|
|
|
240
245
|
case operator
|
|
241
246
|
when ":"
|
|
@@ -256,9 +261,7 @@ module Search
|
|
|
256
261
|
_search_matches(field: field, value: value)
|
|
257
262
|
when "="
|
|
258
263
|
_search_equal(field: field, value: value)
|
|
259
|
-
when "!:"
|
|
260
|
-
where.not(id: _search_colon(field: field, value: value))
|
|
261
|
-
when "!!"
|
|
264
|
+
when "!:", "!!"
|
|
262
265
|
where.not(id: _search_colon(field: field, value: value))
|
|
263
266
|
when "!^"
|
|
264
267
|
where.not(id: _search_starts(field: field, value: value))
|
|
@@ -279,11 +282,11 @@ module Search
|
|
|
279
282
|
else
|
|
280
283
|
raise ArgumentError
|
|
281
284
|
end
|
|
282
|
-
|
|
285
|
+
}
|
|
283
286
|
|
|
284
287
|
# id:1, name:dorian, verified:true, created_at:today
|
|
285
288
|
scope :_search_colon,
|
|
286
|
-
|
|
289
|
+
lambda { |field:, value:|
|
|
287
290
|
node = field[:node].call
|
|
288
291
|
|
|
289
292
|
case field[:type]
|
|
@@ -298,10 +301,10 @@ module Search
|
|
|
298
301
|
else
|
|
299
302
|
raise ArgumentError
|
|
300
303
|
end
|
|
301
|
-
|
|
304
|
+
}
|
|
302
305
|
|
|
303
306
|
scope :_search_matches,
|
|
304
|
-
|
|
307
|
+
lambda { |field:, value:|
|
|
305
308
|
node = field[:node].call
|
|
306
309
|
|
|
307
310
|
case field[:type]
|
|
@@ -316,10 +319,10 @@ module Search
|
|
|
316
319
|
else
|
|
317
320
|
raise ArgumentError
|
|
318
321
|
end
|
|
319
|
-
|
|
322
|
+
}
|
|
320
323
|
|
|
321
324
|
scope :_search_ends,
|
|
322
|
-
|
|
325
|
+
lambda { |field:, value:|
|
|
323
326
|
node = field[:node].call
|
|
324
327
|
|
|
325
328
|
case field[:type]
|
|
@@ -334,10 +337,10 @@ module Search
|
|
|
334
337
|
else
|
|
335
338
|
raise ArgumentError
|
|
336
339
|
end
|
|
337
|
-
|
|
340
|
+
}
|
|
338
341
|
|
|
339
342
|
scope :_search_starts,
|
|
340
|
-
|
|
343
|
+
lambda { |field:, value:|
|
|
341
344
|
node = field[:node].call
|
|
342
345
|
|
|
343
346
|
case field[:type]
|
|
@@ -352,10 +355,10 @@ module Search
|
|
|
352
355
|
else
|
|
353
356
|
raise ArgumentError
|
|
354
357
|
end
|
|
355
|
-
|
|
358
|
+
}
|
|
356
359
|
|
|
357
360
|
scope :_search_equal,
|
|
358
|
-
|
|
361
|
+
lambda { |field:, value:|
|
|
359
362
|
node = field[:node].call
|
|
360
363
|
|
|
361
364
|
case field[:type]
|
|
@@ -370,10 +373,10 @@ module Search
|
|
|
370
373
|
else
|
|
371
374
|
raise ArgumentError
|
|
372
375
|
end
|
|
373
|
-
|
|
376
|
+
}
|
|
374
377
|
|
|
375
378
|
scope :_search_lesser,
|
|
376
|
-
|
|
379
|
+
lambda { |field:, value:|
|
|
377
380
|
node = field[:node].call
|
|
378
381
|
|
|
379
382
|
case field[:type]
|
|
@@ -388,10 +391,10 @@ module Search
|
|
|
388
391
|
else
|
|
389
392
|
raise ArgumentError
|
|
390
393
|
end
|
|
391
|
-
|
|
394
|
+
}
|
|
392
395
|
|
|
393
396
|
scope :_search_lesser_or_equal,
|
|
394
|
-
|
|
397
|
+
lambda { |field:, value:|
|
|
395
398
|
node = field[:node].call
|
|
396
399
|
|
|
397
400
|
case field[:type]
|
|
@@ -406,10 +409,10 @@ module Search
|
|
|
406
409
|
else
|
|
407
410
|
raise ArgumentError
|
|
408
411
|
end
|
|
409
|
-
|
|
412
|
+
}
|
|
410
413
|
|
|
411
414
|
scope :_search_greater,
|
|
412
|
-
|
|
415
|
+
lambda { |field:, value:|
|
|
413
416
|
node = field[:node].call
|
|
414
417
|
|
|
415
418
|
case field[:type]
|
|
@@ -424,10 +427,10 @@ module Search
|
|
|
424
427
|
else
|
|
425
428
|
raise ArgumentError
|
|
426
429
|
end
|
|
427
|
-
|
|
430
|
+
}
|
|
428
431
|
|
|
429
432
|
scope :_search_greater_or_equal,
|
|
430
|
-
|
|
433
|
+
lambda { |field:, value:|
|
|
431
434
|
node = field[:node].call
|
|
432
435
|
|
|
433
436
|
case field[:type]
|
|
@@ -442,10 +445,10 @@ module Search
|
|
|
442
445
|
else
|
|
443
446
|
raise ArgumentError
|
|
444
447
|
end
|
|
445
|
-
|
|
448
|
+
}
|
|
446
449
|
|
|
447
450
|
scope :_search_integer_eq,
|
|
448
|
-
|
|
451
|
+
lambda { |node:, value:|
|
|
449
452
|
node = _search_cast(node: node, type: :bigint)
|
|
450
453
|
value = _search_cast_integer(value)
|
|
451
454
|
|
|
@@ -458,10 +461,10 @@ module Search
|
|
|
458
461
|
else
|
|
459
462
|
where(node.eq(value))
|
|
460
463
|
end
|
|
461
|
-
|
|
464
|
+
}
|
|
462
465
|
|
|
463
466
|
scope :_search_datetime_eq,
|
|
464
|
-
|
|
467
|
+
lambda { |node:, value:|
|
|
465
468
|
node = _search_cast(node: node, type: :timestamp)
|
|
466
469
|
value = _search_cast_datetime(value)
|
|
467
470
|
|
|
@@ -474,10 +477,10 @@ module Search
|
|
|
474
477
|
else
|
|
475
478
|
where(node.eq(value))
|
|
476
479
|
end
|
|
477
|
-
|
|
480
|
+
}
|
|
478
481
|
|
|
479
482
|
scope :_search_string_eq,
|
|
480
|
-
|
|
483
|
+
lambda { |node:, value:|
|
|
481
484
|
node = _search_cast(node: node, type: :text)
|
|
482
485
|
value = _search_cast_string(value)
|
|
483
486
|
|
|
@@ -490,10 +493,10 @@ module Search
|
|
|
490
493
|
else
|
|
491
494
|
where(node.eq(value))
|
|
492
495
|
end
|
|
493
|
-
|
|
496
|
+
}
|
|
494
497
|
|
|
495
498
|
scope :_search_boolean_eq,
|
|
496
|
-
|
|
499
|
+
lambda { |node:, value:|
|
|
497
500
|
node = _search_cast(node: node, type: :boolean)
|
|
498
501
|
value = _search_cast_boolean(value)
|
|
499
502
|
|
|
@@ -506,118 +509,118 @@ module Search
|
|
|
506
509
|
else
|
|
507
510
|
where(node.eq(value))
|
|
508
511
|
end
|
|
509
|
-
|
|
512
|
+
}
|
|
510
513
|
|
|
511
514
|
scope :_search_integer_lt,
|
|
512
|
-
|
|
515
|
+
lambda { |node:, value:|
|
|
513
516
|
node = _search_cast(node: node, type: :bigint)
|
|
514
517
|
value = _search_cast_integer(value)
|
|
515
518
|
value = value.first if value.is_a?(Range)
|
|
516
519
|
|
|
517
520
|
where(node.lt(value))
|
|
518
|
-
|
|
521
|
+
}
|
|
519
522
|
|
|
520
523
|
scope :_search_datetime_lt,
|
|
521
|
-
|
|
524
|
+
lambda { |node:, value:|
|
|
522
525
|
node = _search_cast(node: node, type: :timestamp)
|
|
523
526
|
value = _search_cast_datetime(value)
|
|
524
527
|
value = value.first if value.is_a?(Range)
|
|
525
528
|
|
|
526
529
|
where(node.lt(value))
|
|
527
|
-
|
|
530
|
+
}
|
|
528
531
|
|
|
529
532
|
scope :_search_string_lt,
|
|
530
|
-
|
|
533
|
+
lambda { |node:, value:|
|
|
531
534
|
node = _search_cast(node: node, type: :text)
|
|
532
535
|
value = _search_cast_string(value)
|
|
533
536
|
value = value.first if value.is_a?(Range)
|
|
534
537
|
|
|
535
538
|
where(node.lt(value))
|
|
536
|
-
|
|
539
|
+
}
|
|
537
540
|
|
|
538
541
|
scope :_search_integer_lteq,
|
|
539
|
-
|
|
542
|
+
lambda { |node:, value:|
|
|
540
543
|
node = _search_cast(node: node, type: :bigint)
|
|
541
544
|
value = _search_cast_integer(value)
|
|
542
545
|
value = value.first if value.is_a?(Range)
|
|
543
546
|
|
|
544
547
|
where(node.lteq(value))
|
|
545
|
-
|
|
548
|
+
}
|
|
546
549
|
|
|
547
550
|
scope :_search_datetime_lteq,
|
|
548
|
-
|
|
551
|
+
lambda { |node:, value:|
|
|
549
552
|
node = _search_cast(node: node, type: :timestamp)
|
|
550
553
|
value = _search_cast_datetime(value)
|
|
551
554
|
value = value.first if value.is_a?(Range)
|
|
552
555
|
|
|
553
556
|
where(node.lteq(value))
|
|
554
|
-
|
|
557
|
+
}
|
|
555
558
|
|
|
556
559
|
scope :_search_string_lteq,
|
|
557
|
-
|
|
560
|
+
lambda { |node:, value:|
|
|
558
561
|
node = _search_cast(node: node, type: :text)
|
|
559
562
|
value = _search_cast_string(value)
|
|
560
563
|
value = value.first if value.is_a?(Range)
|
|
561
564
|
|
|
562
565
|
where(node.lteq(value))
|
|
563
|
-
|
|
566
|
+
}
|
|
564
567
|
|
|
565
568
|
scope :_search_integer_gt,
|
|
566
|
-
|
|
569
|
+
lambda { |node:, value:|
|
|
567
570
|
node = _search_cast(node: node, type: :bigint)
|
|
568
571
|
value = _search_cast_integer(value)
|
|
569
572
|
value = value.last if value.is_a?(Range)
|
|
570
573
|
|
|
571
574
|
where(node.gt(value))
|
|
572
|
-
|
|
575
|
+
}
|
|
573
576
|
|
|
574
577
|
scope :_search_datetime_gt,
|
|
575
|
-
|
|
578
|
+
lambda { |node:, value:|
|
|
576
579
|
node = _search_cast(node: node, type: :timestamp)
|
|
577
580
|
value = _search_cast_datetime(value)
|
|
578
581
|
value = value.last if value.is_a?(Range)
|
|
579
582
|
|
|
580
583
|
where(node.gt(value))
|
|
581
|
-
|
|
584
|
+
}
|
|
582
585
|
|
|
583
586
|
scope :_search_string_gt,
|
|
584
|
-
|
|
587
|
+
lambda { |node:, value:|
|
|
585
588
|
node = _search_cast(node: node, type: :text)
|
|
586
589
|
value = _search_cast_string(value)
|
|
587
590
|
value = value.last if value.is_a?(Range)
|
|
588
591
|
|
|
589
592
|
where(node.gt(value))
|
|
590
|
-
|
|
593
|
+
}
|
|
591
594
|
|
|
592
595
|
scope :_search_integer_gteq,
|
|
593
|
-
|
|
596
|
+
lambda { |node:, value:|
|
|
594
597
|
node = _search_cast(node: node, type: :bigint)
|
|
595
598
|
value = _search_cast_integer(value)
|
|
596
599
|
value = value.last if value.is_a?(Range)
|
|
597
600
|
|
|
598
601
|
where(node.gteq(value))
|
|
599
|
-
|
|
602
|
+
}
|
|
600
603
|
|
|
601
604
|
scope :_search_datetime_gteq,
|
|
602
|
-
|
|
605
|
+
lambda { |node:, value:|
|
|
603
606
|
node = _search_cast(node: node, type: :timestamp)
|
|
604
607
|
value = _search_cast_datetime(value)
|
|
605
608
|
value = value.last if value.is_a?(Range)
|
|
606
609
|
|
|
607
610
|
where(node.gteq(value))
|
|
608
|
-
|
|
611
|
+
}
|
|
609
612
|
|
|
610
613
|
scope :_search_string_gteq,
|
|
611
|
-
|
|
614
|
+
lambda { |node:, value:|
|
|
612
615
|
node = _search_cast(node: node, type: :text)
|
|
613
616
|
value = _search_cast_string(value)
|
|
614
617
|
value = value.last if value.is_a?(Range)
|
|
615
618
|
|
|
616
619
|
where(node.gteq(value))
|
|
617
|
-
|
|
620
|
+
}
|
|
618
621
|
|
|
619
622
|
scope :_search_string_matches,
|
|
620
|
-
|
|
623
|
+
lambda { |node:, value:|
|
|
621
624
|
node = _search_cast(node: node, type: :text)
|
|
622
625
|
value = _search_cast_string(value)
|
|
623
626
|
|
|
@@ -630,10 +633,10 @@ module Search
|
|
|
630
633
|
else
|
|
631
634
|
where(node.matches("%#{value}%", nil, false))
|
|
632
635
|
end
|
|
633
|
-
|
|
636
|
+
}
|
|
634
637
|
|
|
635
638
|
scope :_search_string_ends,
|
|
636
|
-
|
|
639
|
+
lambda { |node:, value:|
|
|
637
640
|
node = _search_cast(node: node, type: :text)
|
|
638
641
|
value = _search_cast_string(value)
|
|
639
642
|
|
|
@@ -646,10 +649,10 @@ module Search
|
|
|
646
649
|
else
|
|
647
650
|
where(node.matches("%#{value}", nil, false))
|
|
648
651
|
end
|
|
649
|
-
|
|
652
|
+
}
|
|
650
653
|
|
|
651
654
|
scope :_search_string_starts,
|
|
652
|
-
|
|
655
|
+
lambda { |node:, value:|
|
|
653
656
|
node = _search_cast(node: node, type: :text)
|
|
654
657
|
value = _search_cast_string(value)
|
|
655
658
|
|
|
@@ -662,6 +665,6 @@ module Search
|
|
|
662
665
|
else
|
|
663
666
|
where(node.matches("#{value}%", nil, false))
|
|
664
667
|
end
|
|
665
|
-
|
|
668
|
+
}
|
|
666
669
|
end
|
|
667
670
|
end
|
data/package-lock.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "
|
|
2
|
+
"name": "search_rails",
|
|
3
3
|
"lockfileVersion": 3,
|
|
4
4
|
"requires": true,
|
|
5
5
|
"packages": {
|
|
6
6
|
"": {
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"engines": {
|
|
9
|
-
"node": "
|
|
10
|
-
"npm": "11.
|
|
9
|
+
"node": "26.3.1",
|
|
10
|
+
"npm": "11.17.0"
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
|
-
}
|
|
14
|
+
}
|
data/package.json
CHANGED
data/search_rails.gemspec
CHANGED
|
@@ -12,12 +12,12 @@ Gem::Specification.new do |s|
|
|
|
12
12
|
s.homepage = "https://github.com/dorianmariecom/search_rails"
|
|
13
13
|
s.license = "MIT"
|
|
14
14
|
|
|
15
|
-
s.add_dependency "
|
|
15
|
+
s.add_dependency "chronic"
|
|
16
16
|
s.add_dependency "query-ruby"
|
|
17
|
+
s.add_dependency "rails"
|
|
17
18
|
s.add_dependency "zeitwerk"
|
|
18
|
-
s.add_dependency "chronic"
|
|
19
19
|
|
|
20
20
|
s.metadata["rubygems_mfa_required"] = "true"
|
|
21
21
|
|
|
22
|
-
s.required_ruby_version = ">=
|
|
22
|
+
s.required_ruby_version = ">= 4.0"
|
|
23
23
|
end
|
metadata
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: search_rails
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 3.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Dorian Marié
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
|
-
name:
|
|
13
|
+
name: chronic
|
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
|
15
15
|
requirements:
|
|
16
16
|
- - ">="
|
|
@@ -38,7 +38,7 @@ dependencies:
|
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
39
|
version: '0'
|
|
40
40
|
- !ruby/object:Gem::Dependency
|
|
41
|
-
name:
|
|
41
|
+
name: rails
|
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|
|
43
43
|
requirements:
|
|
44
44
|
- - ">="
|
|
@@ -52,7 +52,7 @@ dependencies:
|
|
|
52
52
|
- !ruby/object:Gem::Version
|
|
53
53
|
version: '0'
|
|
54
54
|
- !ruby/object:Gem::Dependency
|
|
55
|
-
name:
|
|
55
|
+
name: zeitwerk
|
|
56
56
|
requirement: !ruby/object:Gem::Requirement
|
|
57
57
|
requirements:
|
|
58
58
|
- - ">="
|
|
@@ -87,6 +87,12 @@ files:
|
|
|
87
87
|
- README.md
|
|
88
88
|
- Rakefile
|
|
89
89
|
- VERSION
|
|
90
|
+
- bin/bundle
|
|
91
|
+
- bin/bundle-audit
|
|
92
|
+
- bin/bundler-audit
|
|
93
|
+
- bin/dorian
|
|
94
|
+
- bin/rubocop
|
|
95
|
+
- bin/test
|
|
90
96
|
- lib/search.rb
|
|
91
97
|
- lib/search/version.rb
|
|
92
98
|
- lib/search_rails.rb
|
|
@@ -105,14 +111,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
105
111
|
requirements:
|
|
106
112
|
- - ">="
|
|
107
113
|
- !ruby/object:Gem::Version
|
|
108
|
-
version: '
|
|
114
|
+
version: '4.0'
|
|
109
115
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
110
116
|
requirements:
|
|
111
117
|
- - ">="
|
|
112
118
|
- !ruby/object:Gem::Version
|
|
113
119
|
version: '0'
|
|
114
120
|
requirements: []
|
|
115
|
-
rubygems_version:
|
|
121
|
+
rubygems_version: 4.0.15
|
|
116
122
|
specification_version: 4
|
|
117
123
|
summary: a powerful search for rails
|
|
118
124
|
test_files: []
|