ransack 1.8.3 → 1.8.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -25
- data/README.md +18 -8
- data/lib/ransack/adapters/active_record/context.rb +19 -9
- data/lib/ransack/configuration.rb +9 -3
- data/lib/ransack/constants.rb +1 -0
- data/lib/ransack/helpers/form_helper.rb +7 -2
- data/lib/ransack/locale/it.yml +70 -0
- data/lib/ransack/nodes/value.rb +74 -68
- data/lib/ransack/version.rb +1 -1
- data/spec/ransack/configuration_spec.rb +17 -2
- data/spec/ransack/helpers/form_helper_spec.rb +27 -2
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c8e6d1b7f6033421d1b31eff646ed9a001e372a3
|
4
|
+
data.tar.gz: 9a2736272f385849dc81f3a5f915c40ccde4d74e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 701f44cf5ed1ffa5c4c28ddf7267270161affdc70e6c5feffa1cd73e6fca16ab1438b836476337b41e25f67cfa71c5c4a51943f7848ea65150aeda5dd9ad2b8b
|
7
|
+
data.tar.gz: 221fc344c558b0c152363ecee786b9be06bb2d45460af5c0942485f56d36856d465c4ca039e248c9d879b8d6d44ebbff8b22e43d0e6ab66fef94293cfe1c6561
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
-
##
|
3
|
+
## Version 1.8.3 - 2017-06-15
|
4
4
|
|
5
5
|
### Added
|
6
6
|
|
@@ -141,30 +141,17 @@
|
|
141
141
|
|
142
142
|
*Marcel Eeken*
|
143
143
|
|
144
|
-
* Add
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
*
|
150
|
-
[#
|
151
|
-
|
152
|
-
*
|
153
|
-
|
154
|
-
|
155
|
-
[#581](https://github.com/activerecord-hackery/ransack/pull/581).
|
156
|
-
|
157
|
-
*Diego Henrique Domingues*
|
158
|
-
|
159
|
-
* Add Indonesian (Bahasa) i18n locale file (`id.yml`). PR
|
160
|
-
[#612](https://github.com/activerecord-hackery/ransack/pull/612).
|
161
|
-
|
162
|
-
*Adam Pahlevi Baihaqi*
|
163
|
-
|
164
|
-
* Add Japanese i18n locale file (`ja.yml`). PR
|
165
|
-
[#622](https://github.com/activerecord-hackery/ransack/pull/622).
|
166
|
-
|
167
|
-
*Masanobu Mizutani*
|
144
|
+
* Add i18n locale files:
|
145
|
+
* Taiwanese Hokkien/Mandarin (`zh-TW.yml`). PR
|
146
|
+
[#674](https://github.com/activerecord-hackery/ransack/pull/674). *Sibevin Wang*
|
147
|
+
* Danish (`da.yml`). PR
|
148
|
+
[#663](https://github.com/activerecord-hackery/ransack/pull/663). *Kasper Johansen*
|
149
|
+
* Brazilian Portuguese (`pt-BR.yml`). PR
|
150
|
+
[#581](https://github.com/activerecord-hackery/ransack/pull/581). *Diego Henrique Domingues*
|
151
|
+
* Indonesian (Bahasa) (`id.yml`). PR
|
152
|
+
[#612](https://github.com/activerecord-hackery/ransack/pull/612). *Adam Pahlevi Baihaqi*
|
153
|
+
* Japanese (`ja.yml`). PR
|
154
|
+
[#622](https://github.com/activerecord-hackery/ransack/pull/622). *Masanobu Mizutani*
|
168
155
|
|
169
156
|
### Fixed
|
170
157
|
|
data/README.md
CHANGED
@@ -1,11 +1,8 @@
|
|
1
1
|
# Ransack
|
2
2
|
|
3
|
-
[![Build Status](https://travis-ci.org/activerecord-hackery/ransack.svg)]
|
4
|
-
(https://
|
5
|
-
[![
|
6
|
-
(http://badge.fury.io/rb/ransack)
|
7
|
-
[![Code Climate](https://codeclimate.com/github/activerecord-hackery/ransack/badges/gpa.svg)]
|
8
|
-
(https://codeclimate.com/github/activerecord-hackery/ransack)
|
3
|
+
[![Build Status](https://travis-ci.org/activerecord-hackery/ransack.svg)](https://travis-ci.org/activerecord-hackery/ransack)
|
4
|
+
[![Gem Version](https://badge.fury.io/rb/ransack.svg)](http://badge.fury.io/rb/ransack)
|
5
|
+
[![Code Climate](https://codeclimate.com/github/activerecord-hackery/ransack/badges/gpa.svg)](https://codeclimate.com/github/activerecord-hackery/ransack)
|
9
6
|
|
10
7
|
Ransack is a rewrite of [MetaSearch](https://github.com/activerecord-hackery/meta_search)
|
11
8
|
created by [Ernie Miller](http://twitter.com/erniemiller)
|
@@ -203,13 +200,18 @@ initially sorting the `last_name` field by ascending order, and the
|
|
203
200
|
|
204
201
|
The sort link order indicator arrows may be globally customized by setting a
|
205
202
|
`custom_arrows` option in an initializer file like
|
206
|
-
`config/initializers/ransack.rb
|
203
|
+
`config/initializers/ransack.rb`.
|
204
|
+
|
205
|
+
You can also enable a `default_arrow` which is displayed on all sortable fields
|
206
|
+
which are not currently used in the sorting. This is disabled by default so
|
207
|
+
nothing will be displayed:
|
207
208
|
|
208
209
|
```ruby
|
209
210
|
Ransack.configure do |c|
|
210
211
|
c.custom_arrows = {
|
211
212
|
up_arrow: '<i class="custom-up-arrow-icon"></i>',
|
212
|
-
down_arrow: 'U+02193'
|
213
|
+
down_arrow: 'U+02193',
|
214
|
+
default_arrow: '<i class="default-arrow-icon"></i>'
|
213
215
|
}
|
214
216
|
end
|
215
217
|
```
|
@@ -495,6 +497,14 @@ def index
|
|
495
497
|
end
|
496
498
|
```
|
497
499
|
|
500
|
+
#### `PG::UndefinedFunction: ERROR: could not identify an equality operator for type json`
|
501
|
+
|
502
|
+
If you get the above error while using `distinct: true` that means that
|
503
|
+
one of the columns that Ransack is selecting is a `json` column.
|
504
|
+
PostgreSQL does not provide comparison operators for the `json` type. While
|
505
|
+
it is possible to work around this, in practice it's much better to convert those
|
506
|
+
to `jsonb`, as [recommended by the PostgreSQL documentation](https://www.postgresql.org/docs/9.6/static/datatype-json.html).
|
507
|
+
|
498
508
|
### Authorization (whitelisting/blacklisting)
|
499
509
|
|
500
510
|
By default, searching and sorting are authorized on any column of your model
|
@@ -342,15 +342,25 @@ module Ransack
|
|
342
342
|
def extract_joins(association)
|
343
343
|
parent = @join_dependency.join_root
|
344
344
|
reflection = association.reflection
|
345
|
-
join_constraints =
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
345
|
+
join_constraints = if ::ActiveRecord::VERSION::STRING < Constants::RAILS_5_1
|
346
|
+
association.join_constraints(
|
347
|
+
parent.table,
|
348
|
+
parent.base_klass,
|
349
|
+
association,
|
350
|
+
Arel::Nodes::OuterJoin,
|
351
|
+
association.tables,
|
352
|
+
reflection.scope_chain,
|
353
|
+
reflection.chain
|
354
|
+
)
|
355
|
+
else
|
356
|
+
association.join_constraints(
|
357
|
+
parent.table,
|
358
|
+
parent.base_klass,
|
359
|
+
Arel::Nodes::OuterJoin,
|
360
|
+
association.tables,
|
361
|
+
reflection.chain
|
362
|
+
)
|
363
|
+
end
|
354
364
|
join_constraints.to_a.flatten
|
355
365
|
end
|
356
366
|
|
@@ -12,6 +12,7 @@ module Ransack
|
|
12
12
|
:hide_sort_order_indicators => false,
|
13
13
|
:up_arrow => '▼'.freeze,
|
14
14
|
:down_arrow => '▲'.freeze,
|
15
|
+
:default_arrow => nil,
|
15
16
|
:sanitize_scope_args => true
|
16
17
|
}
|
17
18
|
|
@@ -83,20 +84,25 @@ module Ransack
|
|
83
84
|
# up_arrow: '▼'
|
84
85
|
# down_arrow: '▲'
|
85
86
|
#
|
86
|
-
#
|
87
|
+
# There is also a default arrow which is displayed if a column is not sorted.
|
88
|
+
# By default this is nil so nothing will be displayed.
|
89
|
+
#
|
90
|
+
# Any of the defaults may be globally overridden in an initializer file
|
87
91
|
# like `config/initializers/ransack.rb` as follows:
|
88
92
|
#
|
89
93
|
# Ransack.configure do |config|
|
90
|
-
# # Globally set the up arrow to an icon and the down
|
94
|
+
# # Globally set the up arrow to an icon, and the down and default arrows to unicode.
|
91
95
|
# config.custom_arrows = {
|
92
96
|
# up_arrow: '<i class="fa fa-long-arrow-up"></i>',
|
93
|
-
# down_arrow: 'U+02193'
|
97
|
+
# down_arrow: 'U+02193',
|
98
|
+
# default_arrow: 'U+11047'
|
94
99
|
# }
|
95
100
|
# end
|
96
101
|
#
|
97
102
|
def custom_arrows=(opts = {})
|
98
103
|
self.options[:up_arrow] = opts[:up_arrow].freeze if opts[:up_arrow]
|
99
104
|
self.options[:down_arrow] = opts[:down_arrow].freeze if opts[:down_arrow]
|
105
|
+
self.options[:default_arrow] = opts[:default_arrow].freeze if opts[:default_arrow]
|
100
106
|
end
|
101
107
|
|
102
108
|
# Ransack sanitizes many values in your custom scopes into booleans.
|
data/lib/ransack/constants.rb
CHANGED
@@ -49,7 +49,7 @@ module Ransack
|
|
49
49
|
unless Search === search
|
50
50
|
raise TypeError, 'First argument must be a Ransack::Search!'
|
51
51
|
end
|
52
|
-
args.
|
52
|
+
args[args.first.is_a?(Array) ? 1 : 0, 0] = capture(&block) if block_given?
|
53
53
|
s = SortLink.new(search, attribute, args, params, &block)
|
54
54
|
link_to(s.name, url(routing_proxy, s.url_options), s.html_options(args))
|
55
55
|
end
|
@@ -117,6 +117,10 @@ module Ransack
|
|
117
117
|
Ransack.options[:down_arrow]
|
118
118
|
end
|
119
119
|
|
120
|
+
def default_arrow
|
121
|
+
Ransack.options[:default_arrow]
|
122
|
+
end
|
123
|
+
|
120
124
|
def name
|
121
125
|
[ERB::Util.h(@label_text), order_indicator]
|
122
126
|
.compact
|
@@ -209,7 +213,8 @@ module Ransack
|
|
209
213
|
end
|
210
214
|
|
211
215
|
def order_indicator
|
212
|
-
return if @hide_indicator
|
216
|
+
return if @hide_indicator
|
217
|
+
return default_arrow if no_sort_direction_specified?
|
213
218
|
if @current_dir == 'desc'.freeze
|
214
219
|
up_arrow
|
215
220
|
else
|
@@ -0,0 +1,70 @@
|
|
1
|
+
it:
|
2
|
+
ransack:
|
3
|
+
search: "cerca"
|
4
|
+
predicate: "predicato"
|
5
|
+
and: "e"
|
6
|
+
or: "o"
|
7
|
+
any: "qualsiasi"
|
8
|
+
all: "tutti"
|
9
|
+
combinator: "combinatore"
|
10
|
+
attribute: "attributo"
|
11
|
+
value: "valore"
|
12
|
+
condition: "condizione"
|
13
|
+
sort: "ordinamento"
|
14
|
+
asc: "crescente"
|
15
|
+
desc: "decrescente"
|
16
|
+
predicates:
|
17
|
+
eq: "uguale a"
|
18
|
+
eq_any: "uguale ad almeno un"
|
19
|
+
eq_all: "uguale ad ognuno"
|
20
|
+
not_eq: "diverso da"
|
21
|
+
not_eq_any: "diverso da uno qualsiasi"
|
22
|
+
not_eq_all: "diverso da tutti"
|
23
|
+
matches: "combacia con"
|
24
|
+
matches_any: "combacia con almeno un"
|
25
|
+
matches_all: "combacia con tutti"
|
26
|
+
does_not_match: "non corrisponde"
|
27
|
+
does_not_match_any: "non corrisponde ad uno qualsiasi"
|
28
|
+
does_not_match_all: "non corrisponde con nessuno"
|
29
|
+
lt: "minore di"
|
30
|
+
lt_any: "minore di almeno un"
|
31
|
+
lt_all: "minore di tutti"
|
32
|
+
lteq: "minore o uguale a"
|
33
|
+
lteq_any: "minore o uguale ad almeno un"
|
34
|
+
lteq_all: "minore o uguale a tutti"
|
35
|
+
gt: "maggiore di"
|
36
|
+
gt_any: "maggiore di almeno un"
|
37
|
+
gt_all: "maggiore di tutti"
|
38
|
+
gteq: "maggiore o uguale a"
|
39
|
+
gteq_any: "maggiore o uguale ad almeno un"
|
40
|
+
gteq_all: "maggiore o uguale a tutti"
|
41
|
+
in: "in"
|
42
|
+
in_any: "in almeno un"
|
43
|
+
in_all: "in tutti"
|
44
|
+
not_in: "non in"
|
45
|
+
not_in_any: "non in almeno un"
|
46
|
+
not_in_all: "non in tutti"
|
47
|
+
cont: "contiene"
|
48
|
+
cont_any: "contiene almeno un"
|
49
|
+
cont_all: "contiene tutti"
|
50
|
+
not_cont: "non contiene"
|
51
|
+
not_cont_any: "non contiene un qualsiasi"
|
52
|
+
not_cont_all: "non contiene nessuno"
|
53
|
+
start: "inizia con"
|
54
|
+
start_any: "inizia con almeno un"
|
55
|
+
start_all: "inizia con tutti"
|
56
|
+
not_start: "non inizia con"
|
57
|
+
not_start_any: "non inizia con uno qualsiasi"
|
58
|
+
not_start_all: "non inizia con nessuno"
|
59
|
+
end: "finisce con"
|
60
|
+
end_any: "finisce con almeno un"
|
61
|
+
end_all: "finisce con tutti"
|
62
|
+
not_end: "non finisce con"
|
63
|
+
not_end_any: "non finisce con uno qualsiasi"
|
64
|
+
not_end_all: "non finisce con nessuno"
|
65
|
+
'true': "è vero"
|
66
|
+
'false': "è falso"
|
67
|
+
present: "è presente"
|
68
|
+
blank: "è vuoto"
|
69
|
+
'null': "è nullo"
|
70
|
+
not_null: "non è nullo"
|
data/lib/ransack/nodes/value.rb
CHANGED
@@ -23,87 +23,93 @@ module Ransack
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def cast(type)
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
26
|
+
case type
|
27
|
+
when :date
|
28
|
+
cast_to_date(value)
|
29
|
+
when :datetime, :timestamp, :time
|
30
|
+
cast_to_time(value)
|
31
|
+
when :boolean
|
32
|
+
cast_to_boolean(value)
|
33
|
+
when :integer
|
34
|
+
cast_to_integer(value)
|
35
|
+
when :float
|
36
|
+
cast_to_float(value)
|
37
|
+
when :decimal
|
38
|
+
cast_to_decimal(value)
|
39
|
+
when :money
|
40
|
+
cast_to_money(value)
|
41
|
+
else
|
42
|
+
cast_to_string(value)
|
43
|
+
end
|
44
|
+
end
|
43
45
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
46
|
+
def cast_to_date(val)
|
47
|
+
if val.respond_to?(:to_date)
|
48
|
+
val.to_date rescue nil
|
49
|
+
else
|
50
|
+
y, m, d = *[val].flatten
|
51
|
+
m ||= 1
|
52
|
+
d ||= 1
|
53
|
+
Date.new(y,m,d) rescue nil
|
54
|
+
end
|
55
|
+
end
|
54
56
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
57
|
+
def cast_to_time(val)
|
58
|
+
if val.is_a?(Array)
|
59
|
+
Time.zone.local(*val) rescue nil
|
60
|
+
else
|
61
|
+
unless val.acts_like?(:time)
|
62
|
+
val = val.is_a?(String) ? Time.zone.parse(val) : val.to_time rescue val
|
63
|
+
end
|
64
|
+
val.in_time_zone rescue nil
|
65
|
+
end
|
66
|
+
end
|
65
67
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
68
|
+
def cast_to_boolean(val)
|
69
|
+
if Constants::TRUE_VALUES.include?(val)
|
70
|
+
true
|
71
|
+
elsif Constants::FALSE_VALUES.include?(val)
|
72
|
+
false
|
73
|
+
else
|
74
|
+
nil
|
75
|
+
end
|
76
|
+
end
|
75
77
|
|
76
|
-
|
77
|
-
|
78
|
-
|
78
|
+
def cast_to_string(val)
|
79
|
+
val.respond_to?(:to_s) ? val.to_s : String.new(val)
|
80
|
+
end
|
79
81
|
|
80
|
-
|
81
|
-
|
82
|
-
|
82
|
+
def cast_to_integer(val)
|
83
|
+
val.blank? ? nil : val.to_i
|
84
|
+
end
|
83
85
|
|
84
|
-
|
85
|
-
|
86
|
-
|
86
|
+
def cast_to_float(val)
|
87
|
+
val.blank? ? nil : val.to_f
|
88
|
+
end
|
87
89
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
end
|
90
|
+
def cast_to_decimal(val)
|
91
|
+
if val.blank?
|
92
|
+
nil
|
93
|
+
elsif val.class == BigDecimal
|
94
|
+
val
|
95
|
+
elsif val.respond_to?(:to_d)
|
96
|
+
val.to_d
|
97
|
+
else
|
98
|
+
val.to_s.to_d
|
98
99
|
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def cast_to_money(val)
|
103
|
+
val.blank? ? nil : val.to_f.to_s
|
104
|
+
end
|
99
105
|
|
100
106
|
def inspect
|
101
107
|
"Value <#{value}>"
|
102
108
|
end
|
103
109
|
|
104
|
-
|
105
|
-
|
106
|
-
|
110
|
+
def array_of_arrays?(val)
|
111
|
+
Array === val && Array === val.first
|
112
|
+
end
|
107
113
|
end
|
108
114
|
end
|
109
115
|
end
|
data/lib/ransack/version.rb
CHANGED
@@ -48,6 +48,7 @@ module Ransack
|
|
48
48
|
it 'should have default values for arrows' do
|
49
49
|
expect(Ransack.options[:up_arrow]).to eq '▼'
|
50
50
|
expect(Ransack.options[:down_arrow]).to eq '▲'
|
51
|
+
expect(Ransack.options[:default_arrow]).to eq nil
|
51
52
|
end
|
52
53
|
|
53
54
|
it 'changes the default value for the up arrow only' do
|
@@ -72,17 +73,31 @@ module Ransack
|
|
72
73
|
Ransack.options = default
|
73
74
|
end
|
74
75
|
|
75
|
-
it 'changes the default value for
|
76
|
+
it 'changes the default value for the default arrow only' do
|
77
|
+
default, new_default_arrow = Ransack.options.clone, '<i class="default"></i>'
|
78
|
+
|
79
|
+
Ransack.configure { |c| c.custom_arrows = { default_arrow: new_default_arrow } }
|
80
|
+
|
81
|
+
expect(Ransack.options[:up_arrow]).to eq default[:up_arrow]
|
82
|
+
expect(Ransack.options[:down_arrow]).to eq default[:down_arrow]
|
83
|
+
expect(Ransack.options[:default_arrow]).to eq new_default_arrow
|
84
|
+
|
85
|
+
Ransack.options = default
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'changes the default value for all arrows' do
|
76
89
|
default = Ransack.options.clone
|
77
90
|
new_up_arrow = '<i class="fa fa-long-arrow-up"></i>'
|
78
91
|
new_down_arrow = 'U+02193'
|
92
|
+
new_default_arrow = 'defaultarrow'
|
79
93
|
|
80
94
|
Ransack.configure do |c|
|
81
|
-
c.custom_arrows = { up_arrow: new_up_arrow, down_arrow: new_down_arrow }
|
95
|
+
c.custom_arrows = { up_arrow: new_up_arrow, down_arrow: new_down_arrow, default_arrow: new_default_arrow }
|
82
96
|
end
|
83
97
|
|
84
98
|
expect(Ransack.options[:up_arrow]).to eq new_up_arrow
|
85
99
|
expect(Ransack.options[:down_arrow]).to eq new_down_arrow
|
100
|
+
expect(Ransack.options[:default_arrow]).to eq new_default_arrow
|
86
101
|
|
87
102
|
Ransack.options = default
|
88
103
|
end
|
@@ -727,11 +727,36 @@ module Ransack
|
|
727
727
|
it { should match /Full Name ▼/ }
|
728
728
|
end
|
729
729
|
|
730
|
+
describe '#sort_link with config set to show arrows and a default arrow set' do
|
731
|
+
before do
|
732
|
+
Ransack.configure do |c|
|
733
|
+
c.hide_sort_order_indicators = false
|
734
|
+
c.custom_arrows = { default_arrow: "defaultarrow"}
|
735
|
+
end
|
736
|
+
end
|
737
|
+
|
738
|
+
after do
|
739
|
+
Ransack.configure do |c|
|
740
|
+
c.custom_arrows = { default_arrow: nil}
|
741
|
+
end
|
742
|
+
end
|
743
|
+
|
744
|
+
subject { @controller.view_context
|
745
|
+
.sort_link(
|
746
|
+
[:main_app, Person.search],
|
747
|
+
:name,
|
748
|
+
controller: 'people'
|
749
|
+
)
|
750
|
+
}
|
751
|
+
|
752
|
+
it { should match /Full Name defaultarrow/ }
|
753
|
+
end
|
754
|
+
|
730
755
|
describe '#sort_link w/config to hide arrows + custom arrow, hides all' do
|
731
756
|
before do
|
732
757
|
Ransack.configure do |c|
|
733
758
|
c.hide_sort_order_indicators = true
|
734
|
-
c.custom_arrows = { down_arrow: 'down' }
|
759
|
+
c.custom_arrows = { down_arrow: 'down', default_arrow: "defaultarrow" }
|
735
760
|
end
|
736
761
|
end
|
737
762
|
|
@@ -750,7 +775,7 @@ module Ransack
|
|
750
775
|
)
|
751
776
|
}
|
752
777
|
|
753
|
-
it { should_not match /▼|down/ }
|
778
|
+
it { should_not match /▼|down|defaultarrow/ }
|
754
779
|
end
|
755
780
|
|
756
781
|
describe '#sort_link with config set to show arrows + custom arrow' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ransack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.8.
|
4
|
+
version: 1.8.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ernie Miller
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2017-
|
13
|
+
date: 2017-10-09 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: actionpack
|
@@ -241,6 +241,7 @@ files:
|
|
241
241
|
- lib/ransack/locale/fr.yml
|
242
242
|
- lib/ransack/locale/hu.yml
|
243
243
|
- lib/ransack/locale/id.yml
|
244
|
+
- lib/ransack/locale/it.yml
|
244
245
|
- lib/ransack/locale/ja.yml
|
245
246
|
- lib/ransack/locale/nl.yml
|
246
247
|
- lib/ransack/locale/pt-BR.yml
|
@@ -317,7 +318,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
317
318
|
version: '0'
|
318
319
|
requirements: []
|
319
320
|
rubyforge_project: ransack
|
320
|
-
rubygems_version: 2.
|
321
|
+
rubygems_version: 2.6.13
|
321
322
|
signing_key:
|
322
323
|
specification_version: 4
|
323
324
|
summary: Object-based searching for Active Record and Mongoid (currently).
|