watson-acts_as_ferret 0.4.8.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (162) hide show
  1. data/LICENSE +20 -0
  2. data/README +104 -0
  3. data/acts_as_ferret.gemspec +58 -0
  4. data/bin/aaf_install +29 -0
  5. data/config/ferret_server.yml +24 -0
  6. data/doc/README.win32 +23 -0
  7. data/doc/demo/README +154 -0
  8. data/doc/demo/README_DEMO +23 -0
  9. data/doc/demo/Rakefile +10 -0
  10. data/doc/demo/app/controllers/admin/backend_controller.rb +14 -0
  11. data/doc/demo/app/controllers/admin_area_controller.rb +4 -0
  12. data/doc/demo/app/controllers/application.rb +5 -0
  13. data/doc/demo/app/controllers/contents_controller.rb +49 -0
  14. data/doc/demo/app/controllers/searches_controller.rb +8 -0
  15. data/doc/demo/app/helpers/admin/backend_helper.rb +2 -0
  16. data/doc/demo/app/helpers/application_helper.rb +3 -0
  17. data/doc/demo/app/helpers/content_helper.rb +2 -0
  18. data/doc/demo/app/helpers/search_helper.rb +2 -0
  19. data/doc/demo/app/models/comment.rb +48 -0
  20. data/doc/demo/app/models/content.rb +12 -0
  21. data/doc/demo/app/models/content_base.rb +28 -0
  22. data/doc/demo/app/models/search.rb +19 -0
  23. data/doc/demo/app/models/shared_index1.rb +3 -0
  24. data/doc/demo/app/models/shared_index2.rb +3 -0
  25. data/doc/demo/app/models/special_content.rb +3 -0
  26. data/doc/demo/app/models/stats.rb +20 -0
  27. data/doc/demo/app/views/admin/backend/search.rhtml +18 -0
  28. data/doc/demo/app/views/contents/_form.rhtml +10 -0
  29. data/doc/demo/app/views/contents/edit.rhtml +9 -0
  30. data/doc/demo/app/views/contents/index.rhtml +24 -0
  31. data/doc/demo/app/views/contents/new.rhtml +8 -0
  32. data/doc/demo/app/views/contents/show.rhtml +8 -0
  33. data/doc/demo/app/views/layouts/application.html.erb +17 -0
  34. data/doc/demo/app/views/searches/_content.html.erb +2 -0
  35. data/doc/demo/app/views/searches/search.html.erb +20 -0
  36. data/doc/demo/config/boot.rb +109 -0
  37. data/doc/demo/config/database.yml +38 -0
  38. data/doc/demo/config/environment.rb +69 -0
  39. data/doc/demo/config/environments/development.rb +16 -0
  40. data/doc/demo/config/environments/production.rb +19 -0
  41. data/doc/demo/config/environments/test.rb +21 -0
  42. data/doc/demo/config/ferret_server.yml +18 -0
  43. data/doc/demo/config/lighttpd.conf +40 -0
  44. data/doc/demo/config/routes.rb +9 -0
  45. data/doc/demo/db/development_structure.sql +15 -0
  46. data/doc/demo/db/migrate/001_initial_migration.rb +18 -0
  47. data/doc/demo/db/migrate/002_add_type_to_contents.rb +9 -0
  48. data/doc/demo/db/migrate/003_create_shared_index1s.rb +11 -0
  49. data/doc/demo/db/migrate/004_create_shared_index2s.rb +11 -0
  50. data/doc/demo/db/migrate/005_special_field.rb +9 -0
  51. data/doc/demo/db/migrate/006_create_stats.rb +15 -0
  52. data/doc/demo/db/schema.sql +18 -0
  53. data/doc/demo/db/schema.sqlite +14 -0
  54. data/doc/demo/doc/README_FOR_APP +2 -0
  55. data/doc/demo/doc/howto.txt +70 -0
  56. data/doc/demo/public/404.html +8 -0
  57. data/doc/demo/public/500.html +8 -0
  58. data/doc/demo/public/dispatch.cgi +10 -0
  59. data/doc/demo/public/dispatch.fcgi +24 -0
  60. data/doc/demo/public/dispatch.rb +10 -0
  61. data/doc/demo/public/favicon.ico +0 -0
  62. data/doc/demo/public/images/rails.png +0 -0
  63. data/doc/demo/public/index.html +277 -0
  64. data/doc/demo/public/robots.txt +1 -0
  65. data/doc/demo/public/stylesheets/scaffold.css +74 -0
  66. data/doc/demo/script/about +3 -0
  67. data/doc/demo/script/breakpointer +3 -0
  68. data/doc/demo/script/console +3 -0
  69. data/doc/demo/script/destroy +3 -0
  70. data/doc/demo/script/ferret_server +10 -0
  71. data/doc/demo/script/generate +3 -0
  72. data/doc/demo/script/performance/benchmarker +3 -0
  73. data/doc/demo/script/performance/profiler +3 -0
  74. data/doc/demo/script/plugin +3 -0
  75. data/doc/demo/script/process/inspector +3 -0
  76. data/doc/demo/script/process/reaper +3 -0
  77. data/doc/demo/script/process/spawner +3 -0
  78. data/doc/demo/script/process/spinner +3 -0
  79. data/doc/demo/script/runner +3 -0
  80. data/doc/demo/script/server +3 -0
  81. data/doc/demo/test/fixtures/comments.yml +12 -0
  82. data/doc/demo/test/fixtures/contents.yml +13 -0
  83. data/doc/demo/test/fixtures/remote_contents.yml +9 -0
  84. data/doc/demo/test/fixtures/shared_index1s.yml +7 -0
  85. data/doc/demo/test/fixtures/shared_index2s.yml +7 -0
  86. data/doc/demo/test/functional/admin/backend_controller_test.rb +35 -0
  87. data/doc/demo/test/functional/contents_controller_test.rb +81 -0
  88. data/doc/demo/test/functional/searches_controller_test.rb +71 -0
  89. data/doc/demo/test/smoke/drb_smoke_test.rb +321 -0
  90. data/doc/demo/test/smoke/process_stats.rb +21 -0
  91. data/doc/demo/test/test_helper.rb +30 -0
  92. data/doc/demo/test/unit/comment_test.rb +217 -0
  93. data/doc/demo/test/unit/content_test.rb +705 -0
  94. data/doc/demo/test/unit/ferret_result_test.rb +24 -0
  95. data/doc/demo/test/unit/multi_index_test.rb +329 -0
  96. data/doc/demo/test/unit/remote_index_test.rb +23 -0
  97. data/doc/demo/test/unit/shared_index1_test.rb +108 -0
  98. data/doc/demo/test/unit/shared_index2_test.rb +13 -0
  99. data/doc/demo/test/unit/sort_test.rb +21 -0
  100. data/doc/demo/test/unit/special_content_test.rb +25 -0
  101. data/doc/demo/vendor/plugins/will_paginate/LICENSE +18 -0
  102. data/doc/demo/vendor/plugins/will_paginate/README +108 -0
  103. data/doc/demo/vendor/plugins/will_paginate/Rakefile +23 -0
  104. data/doc/demo/vendor/plugins/will_paginate/init.rb +21 -0
  105. data/doc/demo/vendor/plugins/will_paginate/lib/will_paginate/collection.rb +45 -0
  106. data/doc/demo/vendor/plugins/will_paginate/lib/will_paginate/core_ext.rb +44 -0
  107. data/doc/demo/vendor/plugins/will_paginate/lib/will_paginate/finder.rb +159 -0
  108. data/doc/demo/vendor/plugins/will_paginate/lib/will_paginate/view_helpers.rb +95 -0
  109. data/doc/demo/vendor/plugins/will_paginate/test/array_pagination_test.rb +23 -0
  110. data/doc/demo/vendor/plugins/will_paginate/test/boot.rb +27 -0
  111. data/doc/demo/vendor/plugins/will_paginate/test/console +10 -0
  112. data/doc/demo/vendor/plugins/will_paginate/test/finder_test.rb +219 -0
  113. data/doc/demo/vendor/plugins/will_paginate/test/fixtures/admin.rb +3 -0
  114. data/doc/demo/vendor/plugins/will_paginate/test/fixtures/companies.yml +24 -0
  115. data/doc/demo/vendor/plugins/will_paginate/test/fixtures/company.rb +23 -0
  116. data/doc/demo/vendor/plugins/will_paginate/test/fixtures/developer.rb +11 -0
  117. data/doc/demo/vendor/plugins/will_paginate/test/fixtures/developers_projects.yml +13 -0
  118. data/doc/demo/vendor/plugins/will_paginate/test/fixtures/project.rb +4 -0
  119. data/doc/demo/vendor/plugins/will_paginate/test/fixtures/projects.yml +7 -0
  120. data/doc/demo/vendor/plugins/will_paginate/test/fixtures/replies.yml +20 -0
  121. data/doc/demo/vendor/plugins/will_paginate/test/fixtures/reply.rb +5 -0
  122. data/doc/demo/vendor/plugins/will_paginate/test/fixtures/schema.sql +44 -0
  123. data/doc/demo/vendor/plugins/will_paginate/test/fixtures/topic.rb +19 -0
  124. data/doc/demo/vendor/plugins/will_paginate/test/fixtures/topics.yml +30 -0
  125. data/doc/demo/vendor/plugins/will_paginate/test/fixtures/user.rb +2 -0
  126. data/doc/demo/vendor/plugins/will_paginate/test/fixtures/users.yml +35 -0
  127. data/doc/demo/vendor/plugins/will_paginate/test/helper.rb +42 -0
  128. data/doc/demo/vendor/plugins/will_paginate/test/lib/activerecord_test_connector.rb +64 -0
  129. data/doc/demo/vendor/plugins/will_paginate/test/lib/load_fixtures.rb +10 -0
  130. data/doc/demo/vendor/plugins/will_paginate/test/pagination_test.rb +136 -0
  131. data/doc/monit-example +22 -0
  132. data/init.rb +24 -0
  133. data/install.rb +18 -0
  134. data/lib/act_methods.rb +147 -0
  135. data/lib/acts_as_ferret.rb +593 -0
  136. data/lib/ar_mysql_auto_reconnect_patch.rb +41 -0
  137. data/lib/blank_slate.rb +54 -0
  138. data/lib/bulk_indexer.rb +56 -0
  139. data/lib/class_methods.rb +279 -0
  140. data/lib/ferret_extensions.rb +192 -0
  141. data/lib/ferret_find_methods.rb +142 -0
  142. data/lib/ferret_result.rb +58 -0
  143. data/lib/ferret_server.rb +238 -0
  144. data/lib/index.rb +99 -0
  145. data/lib/instance_methods.rb +172 -0
  146. data/lib/local_index.rb +202 -0
  147. data/lib/more_like_this.rb +217 -0
  148. data/lib/multi_index.rb +133 -0
  149. data/lib/rdig_adapter.rb +149 -0
  150. data/lib/remote_functions.rb +43 -0
  151. data/lib/remote_index.rb +54 -0
  152. data/lib/remote_multi_index.rb +20 -0
  153. data/lib/search_results.rb +50 -0
  154. data/lib/server_manager.rb +71 -0
  155. data/lib/unix_daemon.rb +86 -0
  156. data/lib/without_ar.rb +52 -0
  157. data/recipes/aaf_recipes.rb +116 -0
  158. data/script/ferret_daemon +94 -0
  159. data/script/ferret_server +12 -0
  160. data/script/ferret_service +178 -0
  161. data/tasks/ferret.rake +39 -0
  162. metadata +246 -0
@@ -0,0 +1,39 @@
1
+ namespace :ferret do
2
+
3
+ # Rebuild index task. Declare the indexes to be rebuilt with the INDEXES
4
+ # environment variable:
5
+ #
6
+ # INDEXES="my_model shared" rake ferret:rebuild
7
+ desc "Rebuild a Ferret index. Specify what model to rebuild with the INDEXES environment variable."
8
+ task :rebuild => :environment do
9
+
10
+ # TODO (JL): presumably commented out support for indexes defined in config/aaf.rb (suvh as shared indexes)
11
+ # This should be done so that both models with 'acts_as_ferret' and shared indexes are hendled.
12
+
13
+ # indexes = ENV['INDEXES'].split
14
+ # indexes.each do |index_name|
15
+ # start = 1.minute.ago
16
+ # ActsAsFerret::rebuild_index index_name
17
+ # idx = ActsAsFerret::get_index index_name
18
+ # # update records that have changed since the rebuild started
19
+ # idx.index_definition[:registered_models].each do |m|
20
+ # m.records_modified_since(start).each do |object|
21
+ # object.ferret_update
22
+ # end
23
+ # end
24
+ # end
25
+
26
+ models = ENV['INDEXES'].split.map(&:constantize)
27
+
28
+ start = 1.minute.ago
29
+ models.each { |m| m.rebuild_index }
30
+
31
+ # update records that have changed since the rebuild started
32
+ models.each do |m|
33
+ m.records_modified_since(start).each do |object|
34
+ object.ferret_update
35
+ end
36
+ end
37
+
38
+ end
39
+ end
metadata ADDED
@@ -0,0 +1,246 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: watson-acts_as_ferret
3
+ version: !ruby/object:Gem::Version
4
+ hash: 75
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 4
9
+ - 8
10
+ - 2
11
+ version: 0.4.8.2
12
+ platform: ruby
13
+ authors:
14
+ - Thomas Watson
15
+ autorequire:
16
+ bindir: bin
17
+ cert_chain: []
18
+
19
+ date: 2011-02-23 00:00:00 +01:00
20
+ default_executable: aaf_install
21
+ dependencies:
22
+ - !ruby/object:Gem::Dependency
23
+ name: jk-ferret
24
+ prerelease: false
25
+ requirement: &id001 !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ hash: 35
31
+ segments:
32
+ - 0
33
+ - 11
34
+ - 8
35
+ version: 0.11.8
36
+ type: :runtime
37
+ version_requirements: *id001
38
+ description: Rails plugin that adds powerful full text search capabilities to ActiveRecord models. This is a fork of the original acts_as_ferret plugin by Jens Kraemer with some minor custom ajustments.
39
+ email: w@tson.dk
40
+ executables:
41
+ - aaf_install
42
+ extensions: []
43
+
44
+ extra_rdoc_files:
45
+ - LICENSE
46
+ - README
47
+ files:
48
+ - bin/aaf_install
49
+ - config/ferret_server.yml
50
+ - doc/demo/app/controllers/admin/backend_controller.rb
51
+ - doc/demo/app/controllers/admin_area_controller.rb
52
+ - doc/demo/app/controllers/application.rb
53
+ - doc/demo/app/controllers/contents_controller.rb
54
+ - doc/demo/app/controllers/searches_controller.rb
55
+ - doc/demo/app/helpers/admin/backend_helper.rb
56
+ - doc/demo/app/helpers/application_helper.rb
57
+ - doc/demo/app/helpers/content_helper.rb
58
+ - doc/demo/app/helpers/search_helper.rb
59
+ - doc/demo/app/models/comment.rb
60
+ - doc/demo/app/models/content.rb
61
+ - doc/demo/app/models/content_base.rb
62
+ - doc/demo/app/models/search.rb
63
+ - doc/demo/app/models/shared_index1.rb
64
+ - doc/demo/app/models/shared_index2.rb
65
+ - doc/demo/app/models/special_content.rb
66
+ - doc/demo/app/models/stats.rb
67
+ - doc/demo/app/views/admin/backend/search.rhtml
68
+ - doc/demo/app/views/contents/_form.rhtml
69
+ - doc/demo/app/views/contents/edit.rhtml
70
+ - doc/demo/app/views/contents/index.rhtml
71
+ - doc/demo/app/views/contents/new.rhtml
72
+ - doc/demo/app/views/contents/show.rhtml
73
+ - doc/demo/app/views/layouts/application.html.erb
74
+ - doc/demo/app/views/searches/_content.html.erb
75
+ - doc/demo/app/views/searches/search.html.erb
76
+ - doc/demo/config/boot.rb
77
+ - doc/demo/config/database.yml
78
+ - doc/demo/config/environment.rb
79
+ - doc/demo/config/environments/development.rb
80
+ - doc/demo/config/environments/production.rb
81
+ - doc/demo/config/environments/test.rb
82
+ - doc/demo/config/ferret_server.yml
83
+ - doc/demo/config/lighttpd.conf
84
+ - doc/demo/config/routes.rb
85
+ - doc/demo/db/development_structure.sql
86
+ - doc/demo/db/migrate/001_initial_migration.rb
87
+ - doc/demo/db/migrate/002_add_type_to_contents.rb
88
+ - doc/demo/db/migrate/003_create_shared_index1s.rb
89
+ - doc/demo/db/migrate/004_create_shared_index2s.rb
90
+ - doc/demo/db/migrate/005_special_field.rb
91
+ - doc/demo/db/migrate/006_create_stats.rb
92
+ - doc/demo/db/schema.sql
93
+ - doc/demo/db/schema.sqlite
94
+ - doc/demo/doc/howto.txt
95
+ - doc/demo/doc/README_FOR_APP
96
+ - doc/demo/public/404.html
97
+ - doc/demo/public/500.html
98
+ - doc/demo/public/dispatch.cgi
99
+ - doc/demo/public/dispatch.fcgi
100
+ - doc/demo/public/dispatch.rb
101
+ - doc/demo/public/favicon.ico
102
+ - doc/demo/public/images/rails.png
103
+ - doc/demo/public/index.html
104
+ - doc/demo/public/robots.txt
105
+ - doc/demo/public/stylesheets/scaffold.css
106
+ - doc/demo/Rakefile
107
+ - doc/demo/README
108
+ - doc/demo/README_DEMO
109
+ - doc/demo/script/about
110
+ - doc/demo/script/breakpointer
111
+ - doc/demo/script/console
112
+ - doc/demo/script/destroy
113
+ - doc/demo/script/ferret_server
114
+ - doc/demo/script/generate
115
+ - doc/demo/script/performance/benchmarker
116
+ - doc/demo/script/performance/profiler
117
+ - doc/demo/script/plugin
118
+ - doc/demo/script/process/inspector
119
+ - doc/demo/script/process/reaper
120
+ - doc/demo/script/process/spawner
121
+ - doc/demo/script/process/spinner
122
+ - doc/demo/script/runner
123
+ - doc/demo/script/server
124
+ - doc/demo/test/fixtures/comments.yml
125
+ - doc/demo/test/fixtures/contents.yml
126
+ - doc/demo/test/fixtures/remote_contents.yml
127
+ - doc/demo/test/fixtures/shared_index1s.yml
128
+ - doc/demo/test/fixtures/shared_index2s.yml
129
+ - doc/demo/test/functional/admin/backend_controller_test.rb
130
+ - doc/demo/test/functional/contents_controller_test.rb
131
+ - doc/demo/test/functional/searches_controller_test.rb
132
+ - doc/demo/test/smoke/drb_smoke_test.rb
133
+ - doc/demo/test/smoke/process_stats.rb
134
+ - doc/demo/test/test_helper.rb
135
+ - doc/demo/test/unit/comment_test.rb
136
+ - doc/demo/test/unit/content_test.rb
137
+ - doc/demo/test/unit/ferret_result_test.rb
138
+ - doc/demo/test/unit/multi_index_test.rb
139
+ - doc/demo/test/unit/remote_index_test.rb
140
+ - doc/demo/test/unit/shared_index1_test.rb
141
+ - doc/demo/test/unit/shared_index2_test.rb
142
+ - doc/demo/test/unit/sort_test.rb
143
+ - doc/demo/test/unit/special_content_test.rb
144
+ - doc/demo/vendor/plugins/will_paginate/init.rb
145
+ - doc/demo/vendor/plugins/will_paginate/lib/will_paginate/collection.rb
146
+ - doc/demo/vendor/plugins/will_paginate/lib/will_paginate/core_ext.rb
147
+ - doc/demo/vendor/plugins/will_paginate/lib/will_paginate/finder.rb
148
+ - doc/demo/vendor/plugins/will_paginate/lib/will_paginate/view_helpers.rb
149
+ - doc/demo/vendor/plugins/will_paginate/LICENSE
150
+ - doc/demo/vendor/plugins/will_paginate/Rakefile
151
+ - doc/demo/vendor/plugins/will_paginate/README
152
+ - doc/demo/vendor/plugins/will_paginate/test/array_pagination_test.rb
153
+ - doc/demo/vendor/plugins/will_paginate/test/boot.rb
154
+ - doc/demo/vendor/plugins/will_paginate/test/console
155
+ - doc/demo/vendor/plugins/will_paginate/test/finder_test.rb
156
+ - doc/demo/vendor/plugins/will_paginate/test/fixtures/admin.rb
157
+ - doc/demo/vendor/plugins/will_paginate/test/fixtures/companies.yml
158
+ - doc/demo/vendor/plugins/will_paginate/test/fixtures/company.rb
159
+ - doc/demo/vendor/plugins/will_paginate/test/fixtures/developer.rb
160
+ - doc/demo/vendor/plugins/will_paginate/test/fixtures/developers_projects.yml
161
+ - doc/demo/vendor/plugins/will_paginate/test/fixtures/project.rb
162
+ - doc/demo/vendor/plugins/will_paginate/test/fixtures/projects.yml
163
+ - doc/demo/vendor/plugins/will_paginate/test/fixtures/replies.yml
164
+ - doc/demo/vendor/plugins/will_paginate/test/fixtures/reply.rb
165
+ - doc/demo/vendor/plugins/will_paginate/test/fixtures/schema.sql
166
+ - doc/demo/vendor/plugins/will_paginate/test/fixtures/topic.rb
167
+ - doc/demo/vendor/plugins/will_paginate/test/fixtures/topics.yml
168
+ - doc/demo/vendor/plugins/will_paginate/test/fixtures/user.rb
169
+ - doc/demo/vendor/plugins/will_paginate/test/fixtures/users.yml
170
+ - doc/demo/vendor/plugins/will_paginate/test/helper.rb
171
+ - doc/demo/vendor/plugins/will_paginate/test/lib/activerecord_test_connector.rb
172
+ - doc/demo/vendor/plugins/will_paginate/test/lib/load_fixtures.rb
173
+ - doc/demo/vendor/plugins/will_paginate/test/pagination_test.rb
174
+ - doc/monit-example
175
+ - doc/README.win32
176
+ - recipes/aaf_recipes.rb
177
+ - script/ferret_daemon
178
+ - script/ferret_server
179
+ - script/ferret_service
180
+ - tasks/ferret.rake
181
+ - lib/act_methods.rb
182
+ - lib/acts_as_ferret.rb
183
+ - lib/ar_mysql_auto_reconnect_patch.rb
184
+ - lib/blank_slate.rb
185
+ - lib/bulk_indexer.rb
186
+ - lib/class_methods.rb
187
+ - lib/ferret_extensions.rb
188
+ - lib/ferret_find_methods.rb
189
+ - lib/ferret_result.rb
190
+ - lib/ferret_server.rb
191
+ - lib/index.rb
192
+ - lib/instance_methods.rb
193
+ - lib/local_index.rb
194
+ - lib/more_like_this.rb
195
+ - lib/multi_index.rb
196
+ - lib/rdig_adapter.rb
197
+ - lib/remote_functions.rb
198
+ - lib/remote_index.rb
199
+ - lib/remote_multi_index.rb
200
+ - lib/search_results.rb
201
+ - lib/server_manager.rb
202
+ - lib/unix_daemon.rb
203
+ - lib/without_ar.rb
204
+ - acts_as_ferret.gemspec
205
+ - init.rb
206
+ - install.rb
207
+ - README
208
+ - LICENSE
209
+ has_rdoc: true
210
+ homepage: http://github.com/watson/acts_as_ferret
211
+ licenses: []
212
+
213
+ post_install_message:
214
+ rdoc_options:
215
+ - --charset=UTF-8
216
+ require_paths:
217
+ - lib
218
+ required_ruby_version: !ruby/object:Gem::Requirement
219
+ none: false
220
+ requirements:
221
+ - - ">="
222
+ - !ruby/object:Gem::Version
223
+ hash: 59
224
+ segments:
225
+ - 1
226
+ - 8
227
+ - 6
228
+ version: 1.8.6
229
+ required_rubygems_version: !ruby/object:Gem::Requirement
230
+ none: false
231
+ requirements:
232
+ - - ">="
233
+ - !ruby/object:Gem::Version
234
+ hash: 3
235
+ segments:
236
+ - 0
237
+ version: "0"
238
+ requirements: []
239
+
240
+ rubyforge_project:
241
+ rubygems_version: 1.3.7
242
+ signing_key:
243
+ specification_version: 3
244
+ summary: acts_as_ferret - Ferret based full text search for any ActiveRecord model
245
+ test_files: []
246
+