discerner 2.0.10 → 2.0.11

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- NzMxZmQzMjg2YmRmNmFjY2ZkZDE2NzFmZjJkZjNjMjNmOTg5MDkzNA==
5
- data.tar.gz: !binary |-
6
- MDNiZjQ3NzYwOGVmOWNmNjUxYTAyMjE0OGY2YTJmODY1MWNiZDdiZA==
2
+ SHA1:
3
+ metadata.gz: 592df800d53af780b3baec193a23ba2953b92da4
4
+ data.tar.gz: 5ad7d4e54f1b7f63361f18b11fe85cc0d91d77d5
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- NTM1YTgwN2E3NzM5OGYwNzM2ZTRiMmEzMWJlZWY1NzM3ZWIzNjliMDk0M2Ex
10
- ZTJhOTE4MDJiNGQwYzMzYWFmNGQ0NWQxYmQwYmYxYTlhODk0MjgzMDdjYWIw
11
- YWMzNWRhNmMyMzZiMzNlYmM2OTRlZmZkM2FkZjViMDU2ZjgwNjE=
12
- data.tar.gz: !binary |-
13
- OWRlZDU2ZDY5OTg4NGQ3YzA2NmU0ZTE4NmNjODQ4ZTdiNzgzYzUzNTJkYzNk
14
- MDExYmJiNmMwNTc3YTRkYzE2NDZiYWQzMDAzZmM0NTI1OWZkYWMxYWFlMDcz
15
- YmI4ZjFiYTRiNjM0YzVlOGEyNWU5NmMxZDE2ZGYxNzU5OTViNDc=
6
+ metadata.gz: ed9694283fab0c7f9792b16d76bd096b452017300696412995a10e3fbb121c07a52f7359f67f31be03f78712839f72c8d30ba4834751e53bcb21adee296143d6
7
+ data.tar.gz: 2543e41b4c2cd78ec0231558a5df6ed97c20106681b0350f990a65b4c8b366e0efe975811629956f07c10eb59db4097a22762ea8395f38578ec9d7abc5166fdc
@@ -26,7 +26,7 @@
26
26
  %a{ class: "select_all_parameters", href: "#"}
27
27
  Select all
28
28
 
29
- - items = exportable_parameters(@discerner_search, c)
29
+ - items = exportable_parameters(@discerner_search, c).reject{|p| p.hidden_in_export}
30
30
  - columns_count = 3
31
31
  - items_rendered_count = 0
32
32
  - (0...columns_count).each do |i|
@@ -1,4 +1,5 @@
1
1
  = image_tag 'discerner/ajax-loader.gif', class: 'discerner-spinner hide'
2
+
2
3
  - unless @discerner_search.blank?
3
4
  = render 'discerner/shared/error_messages', object: @discerner_search
4
5
 
@@ -10,7 +10,7 @@
10
10
  %td
11
11
  = search.display_name
12
12
  %td
13
- = discerner_format_datetime(search.updated_at)
13
+ = discerner_format_datetime(search.last_executed)
14
14
  %td
15
15
  = link_to 'Open', edit_search_path(search), class: 'discerner-show-link discerner-icon-link'
16
16
  = link_to 'Export options', export_parameters_path(search), class: 'discerner-options-link discerner-icon-link' if export_discerner_results?
@@ -0,0 +1,11 @@
1
+ class AddHiddenToDiscernerParameters < ActiveRecord::Migration
2
+ def change
3
+ add_column :discerner_parameters, :hidden_in_export, :boolean, default: false
4
+ add_column :discerner_parameters, :hidden_in_search, :boolean, default: false
5
+ Discerner::Parameter.all.each do |parameter|
6
+ parameter.hidden_in_export = false
7
+ parameter.hidden_in_search = false
8
+ parameter.save!
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ class AddLastExecutedToDiscernerSearches < ActiveRecord::Migration
2
+ def change
3
+ add_column :discerner_searches, :last_executed, :datetime
4
+ end
5
+ end
@@ -46,6 +46,8 @@ module Discerner
46
46
  dictionary = dictionary_model.new(@discerner_search)
47
47
  if dictionary.respond_to?('search')
48
48
  @results = dictionary.search(params, dictionary_search_options)
49
+ @discerner_search.last_executed = Time.now
50
+ @discerner_search.save!
49
51
  else
50
52
  error_message = "Model '#{dictionary_model_name}' instance does not respond to 'search' method. You need to implement it to be able to run search on this dictionary"
51
53
  end
@@ -81,7 +83,7 @@ module Discerner
81
83
  searches = searches.by_user(username) unless username.blank?
82
84
 
83
85
  searches = searches.where('discerner_searches.name like ?', '%' + params[:query] + '%') unless params[:query].blank?
84
- @discerner_searches = searches.order("discerner_searches.updated_at DESC")
86
+ @discerner_searches = searches.order("discerner_searches.last_executed DESC")
85
87
  end
86
88
 
87
89
  def destroy
@@ -20,8 +20,8 @@ module Discerner
20
20
  base.send :validate, :validate_export_attributes
21
21
 
22
22
  # Scopes
23
- base.send(:scope, :searchable, -> {base.not_deleted.where('search_model is not null and search_method is not null')})
24
- base.send(:scope, :exportable, -> {base.not_deleted.where('export_model is not null and export_method is not null')})
23
+ base.send(:scope, :searchable, -> {base.not_deleted.where('search_model is not null and search_method is not null and hidden_in_search = ?', false)})
24
+ base.send(:scope, :exportable, -> {base.not_deleted.where('export_model is not null and export_method is not null and hidden_in_export = ?', false)})
25
25
 
26
26
  # Hooks
27
27
  base.send :after_commit, :cascade_delete_parameter_values, on: :update, if: Proc.new { |record| record.previous_changes.include?('deleted_at') }
@@ -14,8 +14,8 @@ module Discerner
14
14
  base.send :validates, :dictionary, presence: { message: "for parameter category can't be blank" }
15
15
 
16
16
  # Scopes
17
- base.send(:scope, :searchable, -> {base.includes(:parameters).where('discerner_parameters.search_model is not null and discerner_parameters.search_method is not null and discerner_parameters.deleted_at is null').references(:discerner_parameters)})
18
- base.send(:scope, :exportable, -> {base.includes(:parameters).where('discerner_parameters.export_model is not null and discerner_parameters.export_method is not null and discerner_parameters.deleted_at is null').references(:discerner_parameters)})
17
+ base.send(:scope, :searchable, -> {base.includes(:parameters).where('discerner_parameters.search_model IS NOT NULL AND discerner_parameters.search_method IS NOT NULL AND discerner_parameters.deleted_at IS NULL AND discerner_parameters.hidden_in_search = ?', false).references(:discerner_parameters)})
18
+ base.send(:scope, :exportable, -> {base.includes(:parameters).where('discerner_parameters.export_model IS NOT NULL AND discerner_parameters.export_method IS NOT NULL AND discerner_parameters.deleted_at IS NULL AND discerner_parameters.hidden_in_export = ?', false).references(:discerner_parameters)})
19
19
  base.send(:scope, :ordered_by_name, -> {base.order('discerner_parameter_categories.name ASC')})
20
20
 
21
21
  # Hooks
@@ -62,7 +62,8 @@ module Discerner
62
62
  if parameter.parameter_type.name == 'list'
63
63
  parameter.search_parameters.each do |sp|
64
64
  if sp.search_parameter_values.where(parameter_value_id: id).blank?
65
- max_display_order = sp.search_parameter_values.ordered_by_display_order.last.display_order || -1
65
+ last_search_parameter_value = sp.search_parameter_values.ordered_by_display_order.last
66
+ max_display_order = last_search_parameter_value ? last_search_parameter_value.display_order : -1
66
67
  sp.search_parameter_values.build(parameter_value_id: id, display_order: max_display_order + 1)
67
68
  sp.save
68
69
  end
@@ -155,6 +155,7 @@ module Discerner
155
155
 
156
156
  parameter.search_model = search_identifiers[:model].to_s
157
157
  parameter.search_method = search_identifiers[:method].to_s
158
+ parameter.hidden_in_search = search_identifiers[:hidden].blank? ? false : search_identifiers[:hidden]
158
159
  parameter.parameter_type = find_or_initialize_parameter_type(search_identifiers[:parameter_type])
159
160
  end
160
161
 
@@ -165,6 +166,7 @@ module Discerner
165
166
 
166
167
  parameter.export_model = export_identifiers[:model].to_s
167
168
  parameter.export_method = export_identifiers[:method].to_s
169
+ parameter.hidden_in_export = export_identifiers[:hidden].blank? ? false : export_identifiers[:hidden]
168
170
  end
169
171
 
170
172
  if parameter.new_record?
@@ -1,3 +1,3 @@
1
1
  module Discerner
2
- VERSION = "2.0.10"
2
+ VERSION = "2.0.11"
3
3
  end
@@ -7,11 +7,13 @@
7
7
  # - :name: string # used for display
8
8
  # :unique_identifier: # has to be unique within the dictionary
9
9
  # :export:
10
- # :model # name of the model to be used for exporting
11
- # :method # name of the model method to be used for exporting
10
+ # :model: string # name of the model to be used for exporting
11
+ # :method: string # name of the model method to be used for exporting
12
+ # :hidden: boolean # default: false. If set to true, parameter will be hidden from list of exportable parameters
12
13
  # :search: # parameter search model and method combination has to be unique within the category
13
14
  # :model: string # name of the model to be used for searching
14
15
  # :method: string # name of the model method to be used for searching
16
+ # :hidden: boolean # default: false. If set to true, parameter will be hidden from list of searchable parameters
15
17
  # :parameter_type: numeric/date/list/combobox/text/string # used to define applicable operators/display options. does not have to be restricted to the given list, but additional parameters will require adding operators to match
16
18
  # :parameter_value_categories_source: # used to define parameter value categories
17
19
  # :model: string # source model to be used to load parameter value categiories
@@ -234,3 +236,37 @@
234
236
  :method: text
235
237
  :parameter_type: text
236
238
 
239
+ - :name: "Hidden parameter"
240
+ :unique_identifier: hidden
241
+ :search:
242
+ :model: Book
243
+ :method: text
244
+ :parameter_type: text
245
+ :hidden: true
246
+ :export:
247
+ :model: Book
248
+ :method: text
249
+ :hidden: true
250
+
251
+ - :name: "Hidden from search parameter"
252
+ :unique_identifier: hidden_from_search
253
+ :search:
254
+ :model: Book
255
+ :method: text
256
+ :parameter_type: text
257
+ :hidden: true
258
+ :export:
259
+ :model: Book
260
+ :method: text
261
+
262
+ - :name: "Hidden from export parameter"
263
+ :unique_identifier: hidden_from_export
264
+ :search:
265
+ :model: Book
266
+ :method: text
267
+ :parameter_type: text
268
+ :export:
269
+ :model: Book
270
+ :method: text
271
+ :hidden: true
272
+
metadata CHANGED
@@ -1,293 +1,293 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: discerner
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.10
4
+ version: 2.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Gurley, Yulia Bushmanova
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-08 00:00:00.000000000 Z
11
+ date: 2015-02-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '4.1'
20
- - - ! '>='
20
+ - - ">="
21
21
  - !ruby/object:Gem::Version
22
22
  version: 4.1.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - ~>
27
+ - - "~>"
28
28
  - !ruby/object:Gem::Version
29
29
  version: '4.1'
30
- - - ! '>='
30
+ - - ">="
31
31
  - !ruby/object:Gem::Version
32
32
  version: 4.1.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: jquery-rails
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - ~>
37
+ - - "~>"
38
38
  - !ruby/object:Gem::Version
39
39
  version: '3.1'
40
- - - ! '>='
40
+ - - ">="
41
41
  - !ruby/object:Gem::Version
42
42
  version: 3.1.0
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - ~>
47
+ - - "~>"
48
48
  - !ruby/object:Gem::Version
49
49
  version: '3.1'
50
- - - ! '>='
50
+ - - ">="
51
51
  - !ruby/object:Gem::Version
52
52
  version: 3.1.0
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: haml
55
55
  requirement: !ruby/object:Gem::Requirement
56
56
  requirements:
57
- - - ~>
57
+ - - "~>"
58
58
  - !ruby/object:Gem::Version
59
59
  version: '4.0'
60
- - - ! '>='
60
+ - - ">="
61
61
  - !ruby/object:Gem::Version
62
62
  version: 4.0.5
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ~>
67
+ - - "~>"
68
68
  - !ruby/object:Gem::Version
69
69
  version: '4.0'
70
- - - ! '>='
70
+ - - ">="
71
71
  - !ruby/object:Gem::Version
72
72
  version: 4.0.5
73
73
  - !ruby/object:Gem::Dependency
74
74
  name: sass-rails
75
75
  requirement: !ruby/object:Gem::Requirement
76
76
  requirements:
77
- - - ~>
77
+ - - "~>"
78
78
  - !ruby/object:Gem::Version
79
79
  version: '4.0'
80
- - - ! '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: 4.0.1
83
83
  type: :runtime
84
84
  prerelease: false
85
85
  version_requirements: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ~>
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
89
  version: '4.0'
90
- - - ! '>='
90
+ - - ">="
91
91
  - !ruby/object:Gem::Version
92
92
  version: 4.0.1
93
93
  - !ruby/object:Gem::Dependency
94
94
  name: sqlite3
95
95
  requirement: !ruby/object:Gem::Requirement
96
96
  requirements:
97
- - - ~>
97
+ - - "~>"
98
98
  - !ruby/object:Gem::Version
99
99
  version: 1.3.9
100
- - - ! '>='
100
+ - - ">="
101
101
  - !ruby/object:Gem::Version
102
102
  version: 1.3.9
103
103
  type: :development
104
104
  prerelease: false
105
105
  version_requirements: !ruby/object:Gem::Requirement
106
106
  requirements:
107
- - - ~>
107
+ - - "~>"
108
108
  - !ruby/object:Gem::Version
109
109
  version: 1.3.9
110
- - - ! '>='
110
+ - - ">="
111
111
  - !ruby/object:Gem::Version
112
112
  version: 1.3.9
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: rspec-rails
115
115
  requirement: !ruby/object:Gem::Requirement
116
116
  requirements:
117
- - - ~>
117
+ - - "~>"
118
118
  - !ruby/object:Gem::Version
119
119
  version: 3.0.2
120
- - - ! '>='
120
+ - - ">="
121
121
  - !ruby/object:Gem::Version
122
122
  version: 3.0.2
123
123
  type: :development
124
124
  prerelease: false
125
125
  version_requirements: !ruby/object:Gem::Requirement
126
126
  requirements:
127
- - - ~>
127
+ - - "~>"
128
128
  - !ruby/object:Gem::Version
129
129
  version: 3.0.2
130
- - - ! '>='
130
+ - - ">="
131
131
  - !ruby/object:Gem::Version
132
132
  version: 3.0.2
133
133
  - !ruby/object:Gem::Dependency
134
134
  name: factory_girl_rails
135
135
  requirement: !ruby/object:Gem::Requirement
136
136
  requirements:
137
- - - ~>
137
+ - - "~>"
138
138
  - !ruby/object:Gem::Version
139
139
  version: 4.4.1
140
- - - ! '>='
140
+ - - ">="
141
141
  - !ruby/object:Gem::Version
142
142
  version: 4.4.1
143
143
  type: :development
144
144
  prerelease: false
145
145
  version_requirements: !ruby/object:Gem::Requirement
146
146
  requirements:
147
- - - ~>
147
+ - - "~>"
148
148
  - !ruby/object:Gem::Version
149
149
  version: 4.4.1
150
- - - ! '>='
150
+ - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: 4.4.1
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: capybara
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - ~>
157
+ - - "~>"
158
158
  - !ruby/object:Gem::Version
159
159
  version: 2.4.1
160
- - - ! '>='
160
+ - - ">="
161
161
  - !ruby/object:Gem::Version
162
162
  version: 2.4.1
163
163
  type: :development
164
164
  prerelease: false
165
165
  version_requirements: !ruby/object:Gem::Requirement
166
166
  requirements:
167
- - - ~>
167
+ - - "~>"
168
168
  - !ruby/object:Gem::Version
169
169
  version: 2.4.1
170
- - - ! '>='
170
+ - - ">="
171
171
  - !ruby/object:Gem::Version
172
172
  version: 2.4.1
173
173
  - !ruby/object:Gem::Dependency
174
174
  name: selenium-webdriver
175
175
  requirement: !ruby/object:Gem::Requirement
176
176
  requirements:
177
- - - ~>
177
+ - - "~>"
178
178
  - !ruby/object:Gem::Version
179
179
  version: 2.42.0
180
- - - ! '>='
180
+ - - ">="
181
181
  - !ruby/object:Gem::Version
182
182
  version: 2.42.0
183
183
  type: :development
184
184
  prerelease: false
185
185
  version_requirements: !ruby/object:Gem::Requirement
186
186
  requirements:
187
- - - ~>
187
+ - - "~>"
188
188
  - !ruby/object:Gem::Version
189
189
  version: 2.42.0
190
- - - ! '>='
190
+ - - ">="
191
191
  - !ruby/object:Gem::Version
192
192
  version: 2.42.0
193
193
  - !ruby/object:Gem::Dependency
194
194
  name: database_cleaner
195
195
  requirement: !ruby/object:Gem::Requirement
196
196
  requirements:
197
- - - ~>
197
+ - - "~>"
198
198
  - !ruby/object:Gem::Version
199
199
  version: 1.3.0
200
- - - ! '>='
200
+ - - ">="
201
201
  - !ruby/object:Gem::Version
202
202
  version: 1.3.0
203
203
  type: :development
204
204
  prerelease: false
205
205
  version_requirements: !ruby/object:Gem::Requirement
206
206
  requirements:
207
- - - ~>
207
+ - - "~>"
208
208
  - !ruby/object:Gem::Version
209
209
  version: 1.3.0
210
- - - ! '>='
210
+ - - ">="
211
211
  - !ruby/object:Gem::Version
212
212
  version: 1.3.0
213
213
  - !ruby/object:Gem::Dependency
214
214
  name: ansi
215
215
  requirement: !ruby/object:Gem::Requirement
216
216
  requirements:
217
- - - ~>
217
+ - - "~>"
218
218
  - !ruby/object:Gem::Version
219
219
  version: 1.4.3
220
- - - ! '>='
220
+ - - ">="
221
221
  - !ruby/object:Gem::Version
222
222
  version: 1.4.3
223
223
  type: :development
224
224
  prerelease: false
225
225
  version_requirements: !ruby/object:Gem::Requirement
226
226
  requirements:
227
- - - ~>
227
+ - - "~>"
228
228
  - !ruby/object:Gem::Version
229
229
  version: 1.4.3
230
- - - ! '>='
230
+ - - ">="
231
231
  - !ruby/object:Gem::Version
232
232
  version: 1.4.3
233
233
  - !ruby/object:Gem::Dependency
234
234
  name: sprockets
235
235
  requirement: !ruby/object:Gem::Requirement
236
236
  requirements:
237
- - - ~>
237
+ - - "~>"
238
238
  - !ruby/object:Gem::Version
239
239
  version: 2.12.1
240
- - - ! '>='
240
+ - - ">="
241
241
  - !ruby/object:Gem::Version
242
242
  version: 2.12.1
243
243
  type: :development
244
244
  prerelease: false
245
245
  version_requirements: !ruby/object:Gem::Requirement
246
246
  requirements:
247
- - - ~>
247
+ - - "~>"
248
248
  - !ruby/object:Gem::Version
249
249
  version: 2.12.1
250
- - - ! '>='
250
+ - - ">="
251
251
  - !ruby/object:Gem::Version
252
252
  version: 2.12.1
253
253
  - !ruby/object:Gem::Dependency
254
254
  name: yard
255
255
  requirement: !ruby/object:Gem::Requirement
256
256
  requirements:
257
- - - ~>
257
+ - - "~>"
258
258
  - !ruby/object:Gem::Version
259
259
  version: 0.8.7.4
260
- - - ! '>='
260
+ - - ">="
261
261
  - !ruby/object:Gem::Version
262
262
  version: 0.8.7.4
263
263
  type: :development
264
264
  prerelease: false
265
265
  version_requirements: !ruby/object:Gem::Requirement
266
266
  requirements:
267
- - - ~>
267
+ - - "~>"
268
268
  - !ruby/object:Gem::Version
269
269
  version: 0.8.7.4
270
- - - ! '>='
270
+ - - ">="
271
271
  - !ruby/object:Gem::Version
272
272
  version: 0.8.7.4
273
273
  - !ruby/object:Gem::Dependency
274
274
  name: redcarpet
275
275
  requirement: !ruby/object:Gem::Requirement
276
276
  requirements:
277
- - - ~>
277
+ - - "~>"
278
278
  - !ruby/object:Gem::Version
279
279
  version: 3.1.2
280
- - - ! '>='
280
+ - - ">="
281
281
  - !ruby/object:Gem::Version
282
282
  version: 3.1.2
283
283
  type: :development
284
284
  prerelease: false
285
285
  version_requirements: !ruby/object:Gem::Requirement
286
286
  requirements:
287
- - - ~>
287
+ - - "~>"
288
288
  - !ruby/object:Gem::Version
289
289
  version: 3.1.2
290
- - - ! '>='
290
+ - - ">="
291
291
  - !ruby/object:Gem::Version
292
292
  version: 3.1.2
293
293
  description: Discerner is an engine for Rails that provides basic search UI, search
@@ -431,6 +431,8 @@ files:
431
431
  - db/migrate/20140815214629_add_namespace_to_discerner_dictionaries.rb
432
432
  - db/migrate/20140915032427_create_discerner_search_namespaces.rb
433
433
  - db/migrate/20140915032608_replace_namespace_columns_with_label_for_searches.rb
434
+ - db/migrate/20150109001646_add_hidden_to_discerner_parameters.rb
435
+ - db/migrate/20150225202449_add_last_executed_to_discerner_searches.rb
434
436
  - db/seeds.rb
435
437
  - lib/discerner.rb
436
438
  - lib/discerner/engine.rb
@@ -495,17 +497,17 @@ require_paths:
495
497
  - lib
496
498
  required_ruby_version: !ruby/object:Gem::Requirement
497
499
  requirements:
498
- - - ! '>='
500
+ - - ">="
499
501
  - !ruby/object:Gem::Version
500
502
  version: 1.9.0
501
503
  required_rubygems_version: !ruby/object:Gem::Requirement
502
504
  requirements:
503
- - - ! '>='
505
+ - - ">="
504
506
  - !ruby/object:Gem::Version
505
507
  version: '0'
506
508
  requirements: []
507
509
  rubyforge_project:
508
- rubygems_version: 2.4.2
510
+ rubygems_version: 2.2.2
509
511
  signing_key:
510
512
  specification_version: 4
511
513
  summary: Rails engine that provides dictionary-based search functionality