chewy 0.10.1 → 7.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (243) hide show
  1. checksums.yaml +5 -5
  2. data/.github/CODEOWNERS +1 -0
  3. data/.github/ISSUE_TEMPLATE/bug_report.md +39 -0
  4. data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  5. data/.github/PULL_REQUEST_TEMPLATE.md +16 -0
  6. data/.github/workflows/ruby.yml +74 -0
  7. data/.rubocop.yml +28 -23
  8. data/.rubocop_todo.yml +110 -22
  9. data/CHANGELOG.md +480 -298
  10. data/CODE_OF_CONDUCT.md +14 -0
  11. data/CONTRIBUTING.md +63 -0
  12. data/Gemfile +3 -5
  13. data/Guardfile +3 -1
  14. data/LICENSE.txt +1 -1
  15. data/README.md +571 -333
  16. data/chewy.gemspec +12 -15
  17. data/gemfiles/rails.5.2.activerecord.gemfile +11 -0
  18. data/gemfiles/rails.6.0.activerecord.gemfile +11 -0
  19. data/gemfiles/rails.6.1.activerecord.gemfile +13 -0
  20. data/gemfiles/rails.7.0.activerecord.gemfile +13 -0
  21. data/lib/chewy/config.rb +48 -77
  22. data/lib/chewy/errors.rb +4 -10
  23. data/lib/chewy/fields/base.rb +88 -16
  24. data/lib/chewy/fields/root.rb +15 -21
  25. data/lib/chewy/index/actions.rb +67 -38
  26. data/lib/chewy/{type → index}/adapter/active_record.rb +18 -4
  27. data/lib/chewy/{type → index}/adapter/base.rb +11 -12
  28. data/lib/chewy/{type → index}/adapter/object.rb +28 -32
  29. data/lib/chewy/{type → index}/adapter/orm.rb +26 -24
  30. data/lib/chewy/index/aliases.rb +14 -5
  31. data/lib/chewy/index/crutch.rb +40 -0
  32. data/lib/chewy/index/import/bulk_builder.rb +311 -0
  33. data/lib/chewy/{type → index}/import/bulk_request.rb +10 -9
  34. data/lib/chewy/{type → index}/import/journal_builder.rb +11 -12
  35. data/lib/chewy/{type → index}/import/routine.rb +19 -18
  36. data/lib/chewy/{type → index}/import.rb +82 -36
  37. data/lib/chewy/{type → index}/mapping.rb +63 -62
  38. data/lib/chewy/index/observe/active_record_methods.rb +87 -0
  39. data/lib/chewy/index/observe/callback.rb +34 -0
  40. data/lib/chewy/index/observe.rb +17 -0
  41. data/lib/chewy/index/settings.rb +2 -0
  42. data/lib/chewy/index/specification.rb +13 -10
  43. data/lib/chewy/{type → index}/syncer.rb +62 -63
  44. data/lib/chewy/{type → index}/witchcraft.rb +15 -9
  45. data/lib/chewy/{type → index}/wrapper.rb +16 -6
  46. data/lib/chewy/index.rb +68 -93
  47. data/lib/chewy/journal.rb +25 -14
  48. data/lib/chewy/minitest/helpers.rb +91 -18
  49. data/lib/chewy/minitest/search_index_receiver.rb +29 -33
  50. data/lib/chewy/multi_search.rb +62 -0
  51. data/lib/chewy/railtie.rb +8 -24
  52. data/lib/chewy/rake_helper.rb +141 -112
  53. data/lib/chewy/rspec/build_query.rb +12 -0
  54. data/lib/chewy/rspec/helpers.rb +55 -0
  55. data/lib/chewy/rspec/update_index.rb +58 -49
  56. data/lib/chewy/rspec.rb +2 -0
  57. data/lib/chewy/runtime.rb +1 -1
  58. data/lib/chewy/search/loader.rb +19 -41
  59. data/lib/chewy/search/parameters/allow_partial_search_results.rb +27 -0
  60. data/lib/chewy/search/parameters/collapse.rb +16 -0
  61. data/lib/chewy/search/parameters/concerns/query_storage.rb +6 -5
  62. data/lib/chewy/search/parameters/ignore_unavailable.rb +27 -0
  63. data/lib/chewy/search/parameters/indices.rb +78 -0
  64. data/lib/chewy/search/parameters/none.rb +1 -3
  65. data/lib/chewy/search/parameters/order.rb +6 -19
  66. data/lib/chewy/search/parameters/source.rb +5 -1
  67. data/lib/chewy/search/parameters/track_total_hits.rb +16 -0
  68. data/lib/chewy/search/parameters.rb +28 -8
  69. data/lib/chewy/search/query_proxy.rb +9 -2
  70. data/lib/chewy/search/request.rb +207 -157
  71. data/lib/chewy/search/response.rb +5 -5
  72. data/lib/chewy/search/scoping.rb +7 -8
  73. data/lib/chewy/search/scrolling.rb +14 -13
  74. data/lib/chewy/search.rb +7 -26
  75. data/lib/chewy/stash.rb +27 -29
  76. data/lib/chewy/strategy/active_job.rb +2 -2
  77. data/lib/chewy/strategy/atomic.rb +1 -1
  78. data/lib/chewy/strategy/atomic_no_refresh.rb +18 -0
  79. data/lib/chewy/strategy/base.rb +10 -0
  80. data/lib/chewy/strategy/delayed_sidekiq/scheduler.rb +148 -0
  81. data/lib/chewy/strategy/delayed_sidekiq/worker.rb +52 -0
  82. data/lib/chewy/strategy/delayed_sidekiq.rb +17 -0
  83. data/lib/chewy/strategy/lazy_sidekiq.rb +64 -0
  84. data/lib/chewy/strategy/sidekiq.rb +3 -2
  85. data/lib/chewy/strategy.rb +6 -19
  86. data/lib/chewy/version.rb +1 -1
  87. data/lib/chewy.rb +37 -80
  88. data/lib/generators/chewy/install_generator.rb +1 -1
  89. data/lib/tasks/chewy.rake +26 -32
  90. data/migration_guide.md +56 -0
  91. data/spec/chewy/config_spec.rb +27 -57
  92. data/spec/chewy/fields/base_spec.rb +457 -174
  93. data/spec/chewy/fields/root_spec.rb +24 -32
  94. data/spec/chewy/fields/time_fields_spec.rb +5 -5
  95. data/spec/chewy/index/actions_spec.rb +425 -60
  96. data/spec/chewy/{type → index}/adapter/active_record_spec.rb +110 -44
  97. data/spec/chewy/{type → index}/adapter/object_spec.rb +21 -6
  98. data/spec/chewy/index/aliases_spec.rb +3 -3
  99. data/spec/chewy/index/import/bulk_builder_spec.rb +494 -0
  100. data/spec/chewy/{type → index}/import/bulk_request_spec.rb +5 -12
  101. data/spec/chewy/{type → index}/import/journal_builder_spec.rb +22 -30
  102. data/spec/chewy/{type → index}/import/routine_spec.rb +19 -19
  103. data/spec/chewy/{type → index}/import_spec.rb +154 -95
  104. data/spec/chewy/index/mapping_spec.rb +135 -0
  105. data/spec/chewy/index/observe/active_record_methods_spec.rb +68 -0
  106. data/spec/chewy/index/observe/callback_spec.rb +139 -0
  107. data/spec/chewy/index/observe_spec.rb +143 -0
  108. data/spec/chewy/index/settings_spec.rb +3 -1
  109. data/spec/chewy/index/specification_spec.rb +32 -33
  110. data/spec/chewy/{type → index}/syncer_spec.rb +14 -19
  111. data/spec/chewy/{type → index}/witchcraft_spec.rb +34 -21
  112. data/spec/chewy/index/wrapper_spec.rb +100 -0
  113. data/spec/chewy/index_spec.rb +99 -114
  114. data/spec/chewy/journal_spec.rb +56 -101
  115. data/spec/chewy/minitest/helpers_spec.rb +122 -14
  116. data/spec/chewy/minitest/search_index_receiver_spec.rb +24 -26
  117. data/spec/chewy/multi_search_spec.rb +84 -0
  118. data/spec/chewy/rake_helper_spec.rb +325 -101
  119. data/spec/chewy/rspec/build_query_spec.rb +34 -0
  120. data/spec/chewy/rspec/helpers_spec.rb +61 -0
  121. data/spec/chewy/rspec/update_index_spec.rb +106 -102
  122. data/spec/chewy/runtime_spec.rb +2 -2
  123. data/spec/chewy/search/loader_spec.rb +19 -53
  124. data/spec/chewy/search/pagination/kaminari_examples.rb +3 -5
  125. data/spec/chewy/search/pagination/kaminari_spec.rb +1 -1
  126. data/spec/chewy/search/parameters/collapse_spec.rb +5 -0
  127. data/spec/chewy/search/parameters/ignore_unavailable_spec.rb +67 -0
  128. data/spec/chewy/search/parameters/indices_spec.rb +99 -0
  129. data/spec/chewy/search/parameters/none_spec.rb +1 -1
  130. data/spec/chewy/search/parameters/order_spec.rb +18 -11
  131. data/spec/chewy/search/parameters/query_storage_examples.rb +67 -21
  132. data/spec/chewy/search/parameters/search_after_spec.rb +4 -1
  133. data/spec/chewy/search/parameters/source_spec.rb +8 -2
  134. data/spec/chewy/search/parameters/track_total_hits_spec.rb +5 -0
  135. data/spec/chewy/search/parameters_spec.rb +39 -8
  136. data/spec/chewy/search/query_proxy_spec.rb +68 -17
  137. data/spec/chewy/search/request_spec.rb +360 -149
  138. data/spec/chewy/search/response_spec.rb +35 -25
  139. data/spec/chewy/search/scrolling_spec.rb +28 -26
  140. data/spec/chewy/search_spec.rb +73 -53
  141. data/spec/chewy/stash_spec.rb +16 -26
  142. data/spec/chewy/strategy/active_job_spec.rb +23 -10
  143. data/spec/chewy/strategy/atomic_no_refresh_spec.rb +60 -0
  144. data/spec/chewy/strategy/atomic_spec.rb +9 -10
  145. data/spec/chewy/strategy/delayed_sidekiq_spec.rb +190 -0
  146. data/spec/chewy/strategy/lazy_sidekiq_spec.rb +214 -0
  147. data/spec/chewy/strategy/sidekiq_spec.rb +14 -10
  148. data/spec/chewy/strategy_spec.rb +19 -15
  149. data/spec/chewy_spec.rb +17 -110
  150. data/spec/spec_helper.rb +7 -22
  151. data/spec/support/active_record.rb +43 -5
  152. metadata +123 -198
  153. data/.travis.yml +0 -53
  154. data/Appraisals +0 -79
  155. data/LEGACY_DSL.md +0 -497
  156. data/gemfiles/rails.4.0.activerecord.gemfile +0 -14
  157. data/gemfiles/rails.4.1.activerecord.gemfile +0 -14
  158. data/gemfiles/rails.4.2.activerecord.gemfile +0 -15
  159. data/gemfiles/rails.4.2.mongoid.5.1.gemfile +0 -15
  160. data/gemfiles/rails.5.0.activerecord.gemfile +0 -15
  161. data/gemfiles/rails.5.0.mongoid.6.0.gemfile +0 -15
  162. data/gemfiles/rails.5.1.activerecord.gemfile +0 -15
  163. data/gemfiles/rails.5.1.mongoid.6.1.gemfile +0 -15
  164. data/gemfiles/sequel.4.45.gemfile +0 -11
  165. data/lib/chewy/backports/deep_dup.rb +0 -46
  166. data/lib/chewy/backports/duplicable.rb +0 -91
  167. data/lib/chewy/query/compose.rb +0 -68
  168. data/lib/chewy/query/criteria.rb +0 -191
  169. data/lib/chewy/query/filters.rb +0 -227
  170. data/lib/chewy/query/loading.rb +0 -111
  171. data/lib/chewy/query/nodes/and.rb +0 -25
  172. data/lib/chewy/query/nodes/base.rb +0 -17
  173. data/lib/chewy/query/nodes/bool.rb +0 -34
  174. data/lib/chewy/query/nodes/equal.rb +0 -34
  175. data/lib/chewy/query/nodes/exists.rb +0 -20
  176. data/lib/chewy/query/nodes/expr.rb +0 -28
  177. data/lib/chewy/query/nodes/field.rb +0 -110
  178. data/lib/chewy/query/nodes/has_child.rb +0 -15
  179. data/lib/chewy/query/nodes/has_parent.rb +0 -15
  180. data/lib/chewy/query/nodes/has_relation.rb +0 -59
  181. data/lib/chewy/query/nodes/match_all.rb +0 -11
  182. data/lib/chewy/query/nodes/missing.rb +0 -20
  183. data/lib/chewy/query/nodes/not.rb +0 -25
  184. data/lib/chewy/query/nodes/or.rb +0 -25
  185. data/lib/chewy/query/nodes/prefix.rb +0 -19
  186. data/lib/chewy/query/nodes/query.rb +0 -20
  187. data/lib/chewy/query/nodes/range.rb +0 -63
  188. data/lib/chewy/query/nodes/raw.rb +0 -15
  189. data/lib/chewy/query/nodes/regexp.rb +0 -35
  190. data/lib/chewy/query/nodes/script.rb +0 -20
  191. data/lib/chewy/query/pagination.rb +0 -25
  192. data/lib/chewy/query.rb +0 -1098
  193. data/lib/chewy/search/pagination/will_paginate.rb +0 -43
  194. data/lib/chewy/search/parameters/types.rb +0 -20
  195. data/lib/chewy/strategy/resque.rb +0 -27
  196. data/lib/chewy/strategy/shoryuken.rb +0 -40
  197. data/lib/chewy/type/actions.rb +0 -43
  198. data/lib/chewy/type/adapter/mongoid.rb +0 -69
  199. data/lib/chewy/type/adapter/sequel.rb +0 -95
  200. data/lib/chewy/type/crutch.rb +0 -32
  201. data/lib/chewy/type/import/bulk_builder.rb +0 -122
  202. data/lib/chewy/type/observe.rb +0 -78
  203. data/lib/chewy/type.rb +0 -117
  204. data/lib/sequel/plugins/chewy_observe.rb +0 -78
  205. data/spec/chewy/query/criteria_spec.rb +0 -700
  206. data/spec/chewy/query/filters_spec.rb +0 -201
  207. data/spec/chewy/query/loading_spec.rb +0 -124
  208. data/spec/chewy/query/nodes/and_spec.rb +0 -12
  209. data/spec/chewy/query/nodes/bool_spec.rb +0 -14
  210. data/spec/chewy/query/nodes/equal_spec.rb +0 -32
  211. data/spec/chewy/query/nodes/exists_spec.rb +0 -18
  212. data/spec/chewy/query/nodes/has_child_spec.rb +0 -59
  213. data/spec/chewy/query/nodes/has_parent_spec.rb +0 -59
  214. data/spec/chewy/query/nodes/match_all_spec.rb +0 -11
  215. data/spec/chewy/query/nodes/missing_spec.rb +0 -16
  216. data/spec/chewy/query/nodes/not_spec.rb +0 -13
  217. data/spec/chewy/query/nodes/or_spec.rb +0 -12
  218. data/spec/chewy/query/nodes/prefix_spec.rb +0 -16
  219. data/spec/chewy/query/nodes/query_spec.rb +0 -12
  220. data/spec/chewy/query/nodes/range_spec.rb +0 -32
  221. data/spec/chewy/query/nodes/raw_spec.rb +0 -11
  222. data/spec/chewy/query/nodes/regexp_spec.rb +0 -43
  223. data/spec/chewy/query/nodes/script_spec.rb +0 -15
  224. data/spec/chewy/query/pagination/kaminari_spec.rb +0 -5
  225. data/spec/chewy/query/pagination/will_paginate_spec.rb +0 -5
  226. data/spec/chewy/query/pagination_spec.rb +0 -39
  227. data/spec/chewy/query_spec.rb +0 -636
  228. data/spec/chewy/search/pagination/will_paginate_examples.rb +0 -63
  229. data/spec/chewy/search/pagination/will_paginate_spec.rb +0 -23
  230. data/spec/chewy/search/parameters/indices_boost_spec.rb +0 -83
  231. data/spec/chewy/search/parameters/types_spec.rb +0 -5
  232. data/spec/chewy/strategy/resque_spec.rb +0 -46
  233. data/spec/chewy/strategy/shoryuken_spec.rb +0 -64
  234. data/spec/chewy/type/actions_spec.rb +0 -50
  235. data/spec/chewy/type/adapter/mongoid_spec.rb +0 -372
  236. data/spec/chewy/type/adapter/sequel_spec.rb +0 -472
  237. data/spec/chewy/type/import/bulk_builder_spec.rb +0 -279
  238. data/spec/chewy/type/mapping_spec.rb +0 -142
  239. data/spec/chewy/type/observe_spec.rb +0 -137
  240. data/spec/chewy/type/wrapper_spec.rb +0 -98
  241. data/spec/chewy/type_spec.rb +0 -55
  242. data/spec/support/mongoid.rb +0 -93
  243. data/spec/support/sequel.rb +0 -80
data/CHANGELOG.md CHANGED
@@ -1,276 +1,462 @@
1
- # master
1
+ # Changelog
2
2
 
3
- # Version 0.10.1
3
+ ## master (unreleased)
4
4
 
5
- ## Changes
5
+ ### New Features
6
6
 
7
- * Improved parallel worker titles (#558)
7
+ ### Changes
8
8
 
9
- ## Bugfixes
9
+ ### Bugs Fixed
10
10
 
11
- * Fixed request strategy initial debug message (#557)
11
+ ## 7.3.2 (2023-04-20)
12
12
 
13
- * Fixed will objects paginated array initialization when pagination was not used (#556)
13
+ ### New Features
14
14
 
15
- * Fixed fields symbol/string value (#555)
15
+ ### Changes
16
16
 
17
- * Fixed root field value proc (#554)
17
+ ### Bugs Fixed
18
18
 
19
- # Version 0.10.0
19
+ * [#861](https://github.com/toptal/chewy/pull/861): Fix bug in mock_elasticsearch_response_sources ([@lafeber](https://github.com/lafeber))
20
20
 
21
- ## Breaking changes
21
+ ## 7.3.1 (2023-04-20)
22
22
 
23
- * Changed behavior of `Chewy::Index.index_name`, it doesn't cache the values anymore.
23
+ ### Bugs Fixed
24
24
 
25
- * Journal interfaces, related code and rake tasks were completely refactored and are not compatible with the previous version.
25
+ * [#874](https://github.com/toptal/chewy/pull/874): Fix `chewy:journal:clean` task for ruby 3.x. ([@muk-ai](https://github.com/muk-ai))
26
+ * [#882](https://github.com/toptal/chewy/pull/882): Fix memory leak during `chewy:reset` for ruby 3.2 ([@konalegi](https://github.com/konalegi))
26
27
 
27
- ## Changes
28
+ ## 7.3.0 (2023-04-03)
28
29
 
29
- * Less noisy strategies logging (@Borzik, #543)
30
+ ### New Features
30
31
 
31
- * Parallel import and the corresponding rake tasks.
32
+ * [#869](https://github.com/toptal/chewy/pull/869): New strategy - `delayed_sidekiq`. Allow passing `strategy: :delayed_sidekiq` option to `SomeIndex.import([1, ...], strategy: :delayed_sidekiq)`. The strategy is compatible with `update_fields` option as well. ([@skcc321][])
33
+ * [#879](https://github.com/toptal/chewy/pull/879): Configure CI to check for ruby 3.2 compatibility. ([@konalegi][])
32
34
 
33
- * `:shoryuken` async strategy (@josephchoe, #532)
35
+ ### Changes
34
36
 
35
- * Deprecate `Chewy::Index.build_index_name`.
37
+ ### Bugs Fixed
36
38
 
37
- * Rename `Chewy::Index.default_prefix` to `Chewy::Index.prefix`. The old one is deprecated.
39
+ * [#856](https://github.com/toptal/chewy/pull/856): Fix return value of subscribed_task_stats used in rake tasks. ([@fabiormoura][])
38
40
 
39
- * Add `Chewy::Type.derivable_name` for consistency.
41
+ ## 7.2.7 (2022-11-15)
40
42
 
41
- * Rename `Chewy::Index.derivable_index_name` to `Chewy::Index.derivable_name`.
42
- `Chewy::Index.derivable_index_name` and `Chewy::Type.derivable_index_name` are deprecated.
43
+ ### New Features
43
44
 
44
- * Use normal YAML loading, for the config, we don't need the safe one.
45
+ * [#857](https://github.com/toptal/chewy/pull/857): Allow passing `wait_for_completion`, `request_per_second` and `scroll_size` options to `chewy:journal:clean` rake task and `delete_all` query builder method. ([@konalegi][])([@barthez][])
45
46
 
46
- * `default_root_options` option (@barthez, #526)
47
+ ### Changes
47
48
 
48
- * Partial indexing ability: it is possible to update only specified fields.
49
+ ### Bugs Fixed
49
50
 
50
- * New cool `rake chewy:deploy` task.
51
+ * [#863](https://github.com/toptal/chewy/pull/863): Fix `crutches` call doesn't respect `update_fields` option. ([@skcc321][])
51
52
 
52
- * Selective reset (resets only if necessary): `rake chewy:upgrade`.
53
+ ## 7.2.6 (2022-06-13)
53
54
 
54
- * Consistency checks and synchronization: `rake chewy:sync`.
55
+ ### New Features
55
56
 
56
- * Brand new request DSL. Supports ElasticSearch 2 and 5, better usability, architecture and docs.
57
+ * [#841](https://github.com/toptal/chewy/pull/841): Add the [`collapse`](https://www.elastic.co/guide/en/elasticsearch/reference/current/collapse-search-results.html) option to the request. ([@jkostolansky][])
57
58
 
58
- * Add Kaminari 1.0 support.
59
+ ### Bugs Fixed
59
60
 
60
- * `skip_index_creation_on_import` option (@sergey-kintsel, #483)
61
+ * [#842](https://github.com/toptal/chewy/issues/842): Fix `ignore_blank` handling. ([@rabotyaga][])
62
+ * [#848](https://github.com/toptal/chewy/issues/848): Fix invalid journal pagination. ([@konalegi][])
61
63
 
62
- * Ability to use procs for settings (@parallel588, #481)
64
+ ## 7.2.5 (2022-03-04)
63
65
 
64
- * Bulk indexing optimizations with new additional options (@eproulx-petalmd, #467)
66
+ ### New Features
65
67
 
66
- * Configurable sidekiq options (@averell23, #438)
68
+ * [#827](https://github.com/toptal/chewy/pull/827): Add `:lazy_sidekiq` strategy, that defers not only importing but also `update_index` callback evaluation for created and updated objects. ([@sl4vr][])
69
+ * [#827](https://github.com/toptal/chewy/pull/827): Add `:atomic_no_refresh` strategy. Like `:atomic`, but `refresh=false` parameter is set. ([@barthez][])
70
+ * [#827](https://github.com/toptal/chewy/pull/827): Add `:no_refresh` chain call to `update_index` matcher to ensure import was called with `refresh=false`. ([@barthez][])
67
71
 
68
- # Version 0.9.0
72
+ ### Bugs Fixed
69
73
 
70
- ## Changes
74
+ * [#835](https://github.com/toptal/chewy/pull/835): Support keyword arguments in named scopes. ([@milk1000cc][])
71
75
 
72
- * Add `preference` param to Query (@menglewis, #443)
76
+ ## 7.2.4 (2022-02-03)
73
77
 
74
- * Add the `track_scores` option to the query; `_score` to be computed and tracked even when there are no `_score` in sort. (@dmitry, #417)
78
+ ### New Features
75
79
 
76
- * Confugurable `Chewy.indices_path` (@robacarp, #414, #433, #439)
80
+ * [#760](https://github.com/toptal/chewy/pull/760): Replace parent-child mapping with a [join field](https://www.elastic.co/guide/en/elasticsearch/reference/current/removal-of-types.html#parent-child-mapping-types) ([@mrzasa][])
77
81
 
78
- * [Journaling](https://github.com/toptal/chewy/#journaling) implementation (@sergey-kintsel, #409, #425, #428, #432, #434, #463)
82
+ ### Bugs Fixed
79
83
 
80
- * Minitest helpers (@robacarp, #396)
84
+ * [#825](https://github.com/toptal/chewy/issues/825): Fix mismatch argument names at update_mapping rake task ([@AgeevAndrew][])
85
+ * [#832](https://github.com/toptal/chewy/issues/832): Fix "cannot load such file -- `i18n/core_ext/hash`" ([@chrisandreae][])
81
86
 
82
- * `Chewy::Query#unlimited` to fetch all the documents (@sergey-kintsel, #393)
87
+ ## 7.2.3 (2021-10-29)
83
88
 
84
- * `Chewy::Query#exists?` (@sergey-kintsel, #386)
89
+ ### New Features
85
90
 
86
- * Import otimizations (#381, #376)
91
+ * [#801](https://github.com/toptal/chewy/pull/801): Add the [`track_total_hits`](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-your-data.html#track-total-hits) option to the query. ([@milk1000cc][])
92
+ * [#810](https://github.com/toptal/chewy/pull/810): Use `unsafe_load` when loading config to support Psych 4.
93
+ * [#819](https://github.com/toptal/chewy/pull/819): Add the [`ignore_unavailable`](https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-index.html#multi-index) option to the request. ([@kolauren][])
87
94
 
88
- * Additional import optimization technique - [raw import](https://github.com/toptal/chewy/#raw-import) (@DNNX, #375)
95
+ ### Changes
89
96
 
90
- * `weight` scoring dunction was added to the search DSL (@sevab, #380)
97
+ * [#817](https://github.com/toptal/chewy/pull/817): Show warning message during rake chewy:reset or chewy:upgrade if journaling is disabled. ([@konalegi][])
91
98
 
92
- * Rake tasks support multiple indexes and exceptions: `rake chewy:reset[users,projects]`, `rake chewy:update[-projects]`
99
+ ### Bugs Fixed
93
100
 
94
- * Witchcraft™ supports dynamically generated procs with variables from closure.
101
+ * [#816](https://github.com/toptal/chewy/pull/816): Move query [`preference`](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/search-search.html#search-preference) from body to query parameters. ([@afg419][])
95
102
 
96
- * Added `Query#preference` for specifying shard replicas to query against. (@menglewis)
103
+ ## 7.2.2 (2021-05-24)
97
104
 
98
- ## Bugfixes
105
+ ### Changes
99
106
 
100
- * `.script_fields` method in the Index class (@dmitry, #415)
107
+ * [#800](https://github.com/toptal/chewy/pull/800): Revert [#787](https://github.com/toptal/chewy/pull/787) progressbar feature to avoid performance degradation in parallel import ([@rabotyaga][])
101
108
 
102
- * Fix routing_missing_exception on delete with parent missing (@guigs, #398)
109
+ * [#795](https://github.com/toptal/chewy/issues/795): **(Breaking)** Change the Chewy::Search::Parameters::Order implementation to use Array ([@jiajiawang][]):
110
+ * To allow multiple sorting options that may have the same key name. For example script based sorting whose key will always be `_script`.
111
+ * Behaviour change of chained `order` calls.
112
+ * e.g. `.order(_script: {a: 1}).order(_script: {b: 2})`
113
+ * Before `{:sort=>[{"_script"=>{:b=>2}}]}`
114
+ * After `{:sort=>[{"_script"=>{:a=>1}},{"_script"=>{:b=>2}}]}`
103
115
 
104
- * Sequesl custom primary keys handling fix (@okliv, #385)
116
+ * [#654](https://github.com/toptal/chewy/issues/654): Add helpers and matchers for testing ([@Vitalina-Vakulchyk][]):
117
+ * `mock_elasticsearch_response` helpers both Rspec and Minitest - to mock elasticsearch response
118
+ * `mock_elasticsearch_response_sources` helpers both Rspec and Minitest - to mock elasticsearch response sources
119
+ * `assert_elasticsearch_query` helper for Minitest - to compare request and expected query (returns `true`/`false`)
120
+ * `build_query` matcher for Rspec - to compare request and expected query (returns `true`/`false`)
105
121
 
106
- * Bulk import fixes (@0x0badc0de, #374)
122
+ ## 7.2.1 (2021-05-11)
107
123
 
108
- # Version 0.8.4
124
+ ### New Features
109
125
 
110
- ## Changes
126
+ * [#469](https://github.com/toptal/chewy/issues/469): Add ability to output the progressbar with `ENV['PROGRESS']` during `reset` rake tasks ([@Vitalina-Vakulchyk][]):
127
+ * for `rake chewy:reset` and `rake chewy:parallel:reset`
128
+ * progressbar is hidden by default, set `ENV['PROGRESS']` to `true` to display it
111
129
 
112
- * Brand new import `:bulk_size` option, set desired ElasticSearch bulk size in bytes
130
+ ### Bugs Fixed
113
131
 
114
- * Witchcraft™ technology
132
+ * [#796](https://github.com/toptal/chewy/pull/796): Fix clear scroll: pass `scroll_id` in body, as passing in path parameters is deprecated and can overflow `http.max_initial_line_length` ([@rabotyaga][])
115
133
 
116
- * Configurable per-type default import options (@barthez, #341)
134
+ ## 7.0.1 (2021-05-03)
117
135
 
118
- * Various codebase optimizations (@DNNX, @pyromaniac)
136
+ ### Changes
119
137
 
120
- * `update_index` Rspec matcher messages improvements
138
+ * [#792](https://github.com/toptal/chewy/pull/792): Skip ES version memoization for search requests ([@rabotyaga][])
139
+ * See the Migration Guide for details
121
140
 
122
- * `:all` rake tasks deprecation
141
+ ## 7.2.0 (2021-04-19)
123
142
 
124
- * Scoped notification subscriptions in rake tasks (@0x0badc0de, #335)
143
+ ### New Features
125
144
 
126
- * Async strategies workers accept options (@dnd, #321)
145
+ * [#778](https://github.com/toptal/chewy/pull/778): Add `ignore_blank` option to `field` method ([@Vitalina-Vakulchyk][]):
146
+ * `true` by default for the `geo_point` type
147
+ * `false` by default for other types
127
148
 
128
- * Prefix is configurable per-index (@mikeyhogarth, #314)
149
+ ### Changes
129
150
 
130
- * Ability to pass proc for transport configuration (@feymartynov, @reidab, #302, #339)
151
+ * [#783](https://github.com/toptal/chewy/pull/783): **(Breaking)** Remove `Chewy::Type`, simplify DSL ([@rabotyaga][])
152
+ * Remove the `Chewy::Type` class
153
+ * e.g. remove `CitiesIndex::City` / `CitiesIndex.city`
154
+ * `CitiesIndex::City.import! ...` becomes `CitiesIndex.import! ...`
155
+ * Simplify index DSL:
156
+ * `define_type` block -> `index_scope` clause
157
+ * it can be omitted completely, if you don't need to specify the scope or options, e.g. `name`
158
+ * Remove type names from string representations:
159
+ * in `update_index` ActiveRecord helper and RSpec matcher, e.g.
160
+ * `update_index('cities#city')` -> `update_index('cities')`
161
+ * `update_index(UsersIndex::User)` -> `update_index(UsersIndex)`
162
+ * in rake tasks (e.g. `rake chewy:update[cities#city]` -> `rake chewy:update[cities]`)
163
+ * in rake tasks output (e.g. `Imported CitiesIndex::City in 1s, stats: index 3` -> `Imported CitiesIndex in 1s, stats: index 3`)
164
+ * Use index name instead of type name in loader additional scope
165
+ * e.g. `CitiesIndex.filter(...).load(city: {scope: City.where(...)})` -> `CitiesIndex.filter(...).load(cities: {scope: City.where(...)})`
166
+ * [#692](https://github.com/toptal/chewy/issues/692): Add `.update_mapping` to Index class ([@Vitalina-Vakulchyk][]):
167
+ * Wrapped Elasticsearch gem `.put_mapping` with `.update_mapping` in Index class
168
+ * Add `rake chewy:update_mapping` task
169
+ * [#594](https://github.com/toptal/chewy/issues/594): Add `.reindex` to Index class ([@Vitalina-Vakulchyk][]):
170
+ * Wrapped Elasticsearch gem `.reindex` with `.reindex` in Index class
171
+ * Add `rake chewy:reindex` task
172
+ * [#679](https://github.com/toptal/chewy/issues/679): Wrapped `Elasticsearch::API::Indices::Actions#clear_cache` with `.clear_cache` in Index class ([@Vitalina-Vakulchyk][])
173
+ * [#495](https://github.com/toptal/chewy/issues/495): Ability to change Rails console strategy with `Chewy.console_strategy` ([@Vitalina-Vakulchyk][])
174
+ * [#778](https://github.com/toptal/chewy/pull/778): **(Breaking)** Drop support for Ruby 2.5 ([@Vitalina-Vakulchyk][])
175
+ * [#776](https://github.com/toptal/chewy/pull/776): **(Breaking)** Removal of unnecessary features and integrations ([@Vitalina-Vakulchyk][]):
176
+ * `aws-sdk-sqs` / `shoryuken`
177
+ * `mongoid`
178
+ * `sequel`
179
+ * `will_paginate`
180
+ * `resque`
181
+ * [#769](https://github.com/toptal/chewy/pull/769): **(Breaking)** Removal of deprecated methods and rake tasks ([@Vitalina-Vakulchyk][]):
182
+ * `Chewy::Index.index_params` is removed, use `Chewy::Index.specification_hash` instead
183
+ * `Chewy::Index.derivable_index_name` is removed, use `Chewy::Index.derivable_name` instead
184
+ * `Chewy::Index.default_prefix` is removed, use `Chewy::Index.prefix` instead
185
+ * `Chewy::Index.build_index_name` is removed, use `Chewy::Index.index_name` instead
186
+ * `Chewy::RakeHelper.reset_index` is removed, use `Chewy::RakeHelper.reset` instead
187
+ * `Chewy::RakeHelper.reset_all` is removed, use `Chewy::RakeHelper.reset` instead
188
+ * `Chewy::RakeHelper.update_index` is removed, use `Chewy::RakeHelper.update` instead
189
+ * `Chewy::RakeHelper.update_all` is removed, use `Chewy::RakeHelper.update` instead
190
+ * `rake chewy:apply_changes_from` is removed, use `rake chewy:journal:apply` instead
191
+ * `rake chewy:clean_journal` is removed, use `rake chewy:journal:clean` instead
131
192
 
132
- * ElasticSearch 2 support (@sergeygaychuk, #297)
193
+ ## 7.1.0 (2021-03-03)
133
194
 
134
- * Accessing types with methods is deprecated. Use `MyIndex::MyType` constant reference instead of `MyIndex.my_type` method.
195
+ ### Changes
135
196
 
136
- * Sequel adapter improvements (@mrbrdo, #294)
197
+ * [#766](https://github.com/toptal/chewy/pull/766): **(Breaking)** Drop support for Elasticsearch 6.x ([@rabotyaga][])
198
+ * [#765](https://github.com/toptal/chewy/pull/765): Fix ruby 2.7 warnings in rake tasks ([@aglushkov][])
137
199
 
138
- ## Bugfixes
200
+ ### Bugs Fixed
139
201
 
140
- * Mongoid atomic strategy fix (#325)
202
+ * [#722](https://github.com/toptal/chewy/issues/722): Remove alias_method_chain, use Module#prepend instead ([@dalthon][])
141
203
 
142
- * Method missing fix (@jesjos, #324)
204
+ ## 7.0.0 (2021-02-22)
143
205
 
144
- * Hash fields composition fix (@eproulx-petalmd, #319)
206
+ ### New Features
145
207
 
146
- * Better errors handling in strategies (@barthez, #306)
208
+ * [#763](https://github.com/toptal/chewy/pull/763): Added support for Elasticsearch 7 ([@rabotyaga][])
147
209
 
148
- * Assets strategies silencer fix for Rails 5 API mode (@clupprich, #303)
210
+ ### Changes
149
211
 
150
- # Version 0.8.3
212
+ * [#757](https://github.com/toptal/chewy/pull/757): **(Breaking)** Fix `Chewy::Index.index` & `Chewy::Index.aliases` to correctly report indexes and aliases ([@mpeychich][], [@dalthon][])
213
+ * [#761](https://github.com/toptal/chewy/pull/761): Avoid fetching scope data to check if it is blank ([@dalthon][])
151
214
 
152
- ## Breaking changes:
215
+ ## 6.0.0 (2021-02-11)
153
216
 
154
- * `Chewy.atomic` and `Chewy.urgent_update=` methods was removed from the codebase, use `Chewy.strategy` block instead.
217
+ ### Changes
155
218
 
156
- * `delete_from_index?` hook is removed from the codebase.
219
+ * [#743](https://github.com/toptal/chewy/pull/743): **(Breaking)** Elasticsearch 6.x support added. See the [migration guide](migration_guide.md) & ES [breaking changes](https://www.elastic.co/guide/en/elasticsearch/reference/6.8/breaking-changes-6.0.html). Removed legacy DSL support. Removed support for ES < 5. ([@mrzasa][], [@konalegi][], [@rabotyaga][])
220
+ * [#751](https://github.com/toptal/chewy/pull/751): Add [Multi Search API](https://www.elastic.co/guide/en/elasticsearch/reference/6.8/search-multi-search.html) support. ([@mpeychich][], [@dalthon][])
221
+ * [#755](https://github.com/toptal/chewy/pull/755): `attribute_highlights` returns an array of highlights. ([@musaffa][], [@dalthon][])
222
+ * [#753](https://github.com/toptal/chewy/pull/753): Add support for direct_import parameter to skip objects reloading. ([@TikiTDO][], [@dalthon][])
223
+ * [#739](https://github.com/toptal/chewy/pull/739): Remove explicit `main` branch dependencies on `rspec-*` gems after `rspec-mocks` 3.10.2 is released. ([@rabotyaga][])
157
224
 
158
- ## Changes
225
+ ### Bugs Fixed
159
226
 
160
- * Sequel support completely reworked to use common ORM implementations + better sequel specs covarage.
227
+ * [#695](https://github.com/toptal/chewy/pull/695): Clear the scroll by id after completing `scroll_batches`. ([@socialchorus][])
228
+ * [#749](https://github.com/toptal/chewy/pull/749): Avoid importing everything when given an empty relation. ([@JF-Lalonde][], [@dalthon][])
229
+ * [#736](https://github.com/toptal/chewy/pull/736): Fix nil children when using witchcraft. ([@taylor-au][])
161
230
 
162
- ## Bugfixes
231
+ ## 5.2.0 (2021-01-28)
163
232
 
164
- * Sequel objects transactional destruction fix
233
+ ### Changes
165
234
 
166
- * Correct Rspec mocking framework checking (@mainameiz)
235
+ * [#734](https://github.com/toptal/chewy/pull/734): Add support for Ruby 3. ([@lowang][])
236
+ * [#735](https://github.com/toptal/chewy/pull/735): Correct deprecation warning for Elasticsearch 5.6 to 6: empty query for`_delete_by_query`, delete by alias, `index_already_exists_exception` renaming. ([@bhacaz][])
237
+ * [#733](https://github.com/toptal/chewy/pull/733): Update gemspec dependencies for Rails. Update CI gemfiles and matrix to tests against current LTS Rails versions. ([@bhacaz][])
238
+ * Tweak some wording and formatting; add a note about compatibility; update copyright; remove broken logo; update the CI badge. ([@bbatsov][])
239
+ * [#714](https://github.com/toptal/chewy/pull/714): Update instructions for AWS ElasticSearch. ([@olancheg][])
240
+ * [#728](https://github.com/toptal/chewy/pull/728): Fix more ruby 2.7 keyword params deprecation warnings. ([@aglushkov][])
241
+ * [#715](https://github.com/toptal/chewy/pull/715): Fixed all deprecation warnings in Ruby 2.7. ([@gseddon][])
242
+ * [#718](https://github.com/toptal/chewy/pull/718): Added Ruby 2.7 to CircleCI config. ([@mrzasa][])
243
+ * [#707](https://github.com/toptal/chewy/pull/707): Allow configuration of Active Job queue name. ([@mrzasa][])
244
+ * [#711](https://github.com/toptal/chewy/pull/711): Setup CI on CircleCI. ([@mrzasa][])
245
+ * [#710](https://github.com/toptal/chewy/pull/710): Fix deprecation warning for constructing new `BigDecimal`. ([@AlexVPopov][])
246
+
247
+ ## 5.1.0 (2019-09-24)
167
248
 
168
- * Atomic strategy is now compatible with custom ids proc.
249
+ ### Changes
250
+
251
+ * [#657](https://github.com/toptal/chewy/pull/657): **(Breaking)** Add support for multiple indices in request. ([@pyromaniac][])
252
+ * [#647](https://github.com/toptal/chewy/pull/647): **(Breaking)** Support `search_type`, `request_cache`, and `allow_partial_search_results` as query string parameters. ([@mattzollinhofer][])
253
+ * [#606](https://github.com/toptal/chewy/pull/606): Speed up imports when `bulk_size` is specified. ([@yahooguntu][])
254
+ * [#682](https://github.com/toptal/chewy/pull/682): Insert `RequestStrategy` middleware before `ActionDispatch::ShowExceptions`. ([@dck][])
169
255
 
170
- * Safe unsubscribe on import (@marshall-lee)
256
+ ## 5.0.0 (2018-02-13)
171
257
 
172
- * Correct custom assets path silencer (@davekaro)
258
+ ### Changes
173
259
 
174
- # Version 0.8.2
260
+ * **(Breaking)** Align the gem version with the most recent ElasticSearch version we support.
261
+ * **(Breaking)** `Chewy.default_field_type` is `text` now.
262
+ * **(Breaking)** `Chewy::Stash` was split onto two indexes - `Chewy::Stash::Specification` and `Chewy::Stash::Journal`.
263
+ * **(Breaking)** Data for journal and specification is stored in binary fields base64-encoded to bypass the limits of other fields.
264
+ * **(Breaking)** [#626](https://github.com/toptal/chewy/pull/626): Don't underscore suggested index name. ([@dm1try][])
265
+ * [#598](https://github.com/toptal/chewy/pull/598): `pipeline` import option support. ([@eManPrague][])
266
+ * [#625](https://github.com/toptal/chewy/pull/625): Proper Rails check. ([@nattfodd][])
267
+ * [#623](https://github.com/toptal/chewy/pull/623): Bypass strategy performance improvements. ([@DNNX][])
268
+ * [#620](https://github.com/toptal/chewy/pull/620): Avoid index update calls for empty data. ([@robertasg][])
269
+ * Do not underscore suggested index name on `Chewy::Index.index_name` call.
270
+ * It is possible now to call `root` method several times inside a single type definition, the options will be merged. Also, the block isn't required anymore.
271
+ * [#565](https://github.com/toptal/chewy/pull/565): Fixed some Sequel deprecation warnings. ([@arturtr][])
272
+ * [#577](https://github.com/toptal/chewy/pull/577): Fixed some Sequel deprecation warnings. ([@matchbookmac][])
175
273
 
176
- ## Changes
274
+ ### Bugs Fixed
177
275
 
178
- * ActiveJob strategy by @mkcode
276
+ * [#593](https://github.com/toptal/chewy/pull/593): Fixed index settings logic error. ([@yahooguntu][])
277
+ * [#567](https://github.com/toptal/chewy/pull/567): Missed check in higlight method. ([@heartfulbird][])
179
278
 
180
- * Async strategies tweak (@AndreySavelyev)
279
+ -----------------------------------------------------------------------------------
181
280
 
182
- * GeoPoint readme (@joonty)
281
+ ## 0.10.1
183
282
 
184
- * Multiple grammar fixes and code improvements (@biow0lf)
283
+ ### Changes
185
284
 
186
- * Named aggregations by @caldwecr
285
+ * [#558](https://github.com/toptal/chewy/pull/558): Improved parallel worker titles
187
286
 
188
- * Sequel adapter by @jirutka
287
+ ### Bugs Fixed
189
288
 
190
- * Rake helper methods extracted (@caldwecr, @jirutka)
289
+ * [#557](https://github.com/toptal/chewy/pull/557): Fixed request strategy initial debug message
290
+ * [#556](https://github.com/toptal/chewy/pull/556): Fixed will objects paginated array initialization when pagination was not used
291
+ * [#555](https://github.com/toptal/chewy/pull/555): Fixed fields symbol/string value
292
+ * [#554](https://github.com/toptal/chewy/pull/554): Fixed root field value proc
191
293
 
192
- * Multiple grammar fixes (@henrebotha)
294
+ ## 0.10.0
193
295
 
194
- * Ability to pass a proc to `update_index` to define updating index dynamically (@SeTeM)
296
+ ### Breaking changes
195
297
 
298
+ * Changed behavior of `Chewy::Index.index_name`, it doesn't cache the values anymore.
299
+ * Journal interfaces, related code and rake tasks were completely refactored and are not compatible with the previous version.
196
300
 
197
- ## Bugfixes
301
+ ### Changes
198
302
 
199
- * Fixed transport logger and tracer configuration
303
+ * [#543](https://github.com/toptal/chewy/pull/543): Less noisy strategies logging ([@Borzik][])
304
+ * Parallel import and the corresponding rake tasks.
305
+ * [#532](https://github.com/toptal/chewy/pull/532): `:shoryuken` async strategy ([@josephchoe][])
306
+ * Deprecate `Chewy::Index.build_index_name`.
307
+ * Rename `Chewy::Index.default_prefix` to `Chewy::Index.prefix`. The old one is deprecated.
308
+ * Add `Chewy::Type.derivable_name` for consistency.
309
+ * Rename `Chewy::Index.derivable_index_name` to `Chewy::Index.derivable_name`.
310
+ `Chewy::Index.derivable_index_name` and `Chewy::Type.derivable_index_name` are deprecated.
311
+ * Use normal YAML loading, for the config, we don't need the safe one.
312
+ * [#526](https://github.com/toptal/chewy/pull/526): `default_root_options` option ([@barthez][])
313
+ * Partial indexing ability: it is possible to update only specified fields.
314
+ * New cool `rake chewy:deploy` task.
315
+ * Selective reset (resets only if necessary): `rake chewy:upgrade`.
316
+ * Consistency checks and synchronization: `rake chewy:sync`.
317
+ * Brand new request DSL. Supports ElasticSearch 2 and 5, better usability, architecture and docs.
318
+ * Add Kaminari 1.0 support.
319
+ * [#483](https://github.com/toptal/chewy/pull/483): `skip_index_creation_on_import` option ([@sergey-kintsel][])
320
+ * [#481](https://github.com/toptal/chewy/pull/481): Ability to use procs for settings ([@parallel588][])
321
+ * [#467](https://github.com/toptal/chewy/pull/467): Bulk indexing optimizations with new additional options ([@eproulx-petalmd][])
322
+ * [#438](https://github.com/toptal/chewy/pull/438): Configurable sidekiq options ([@averell23][])
323
+
324
+ ## 0.9.0
325
+
326
+ ### Changes
327
+
328
+ * [#443](https://github.com/toptal/chewy/pull/443): Add `preference` param to Query ([@menglewis][])
329
+ * [#417](https://github.com/toptal/chewy/pull/417): Add the `track_scores` option to the query; `_score` to be computed and tracked even when there are no `_score` in sort. ([@dmitry][])
330
+ * [#414](https://github.com/toptal/chewy/pull/414), [#433](https://github.com/toptal/chewy/pull/433), [#439](https://github.com/toptal/chewy/pull/439): Confugurable `Chewy.indices_path` ([@robacarp][])
331
+ * [#409](https://github.com/toptal/chewy/pull/409), [#425](https://github.com/toptal/chewy/pull/425), [#428](https://github.com/toptal/chewy/pull/428), [#432](https://github.com/toptal/chewy/pull/432), [#434](https://github.com/toptal/chewy/pull/434), [#463](https://github.com/toptal/chewy/pull/463): [Journaling](https://github.com/toptal/chewy/#journaling) implementation ([@sergey-kintsel][])
332
+ * [#396](https://github.com/toptal/chewy/pull/396): Minitest helpers ([@robacarp][])
333
+ * [#393](https://github.com/toptal/chewy/pull/393): `Chewy::Query#unlimited` to fetch all the documents ([@sergey-kintsel][])
334
+ * [#386](https://github.com/toptal/chewy/pull/386): `Chewy::Query#exists?` ([@sergey-kintsel][])
335
+ * [#381](https://github.com/toptal/chewy/pull/381), [#376](https://github.com/toptal/chewy/pull/376): Import otimizations
336
+ * [#375](https://github.com/toptal/chewy/pull/375): Additional import optimization technique - [raw import](https://github.com/toptal/chewy/#raw-import) ([@DNNX][])
337
+ * [#380](https://github.com/toptal/chewy/pull/380): `weight` scoring dunction was added to the search DSL ([@sevab][])
338
+ * Rake tasks support multiple indexes and exceptions: `rake chewy:reset[users,projects]`, `rake chewy:update[-projects]`
339
+ * Witchcraft™ supports dynamically generated procs with variables from closure.
340
+ * Added `Query#preference` for specifying shard replicas to query against. ([@menglewis][])
200
341
 
201
- # Version 0.8.1
342
+ ### Bugs Fixed
202
343
 
203
- ## Bugfixes
344
+ * [#415](https://github.com/toptal/chewy/pull/415): `.script_fields` method in the Index class ([@dmitry][])
345
+ * [#398](https://github.com/toptal/chewy/pull/398): Fix routing_missing_exception on delete with parent missing ([@guigs][])
346
+ * [#385](https://github.com/toptal/chewy/pull/385): Sequel custom primary keys handling fix ([@okliv][])
347
+ * [#374](https://github.com/toptal/chewy/pull/374): Bulk import fixes ([@0x0badc0de][])
204
348
 
205
- * Added support of elasticsearch-ruby 1.0.10
349
+ ## 0.8.4
206
350
 
207
- # Version 0.8.0
351
+ ### Changes
208
352
 
209
- ## Breaking changes:
353
+ * Brand new import `:bulk_size` option, set desired ElasticSearch bulk size in bytes
354
+ * Witchcraft™ technology
355
+ * [#341](https://github.com/toptal/chewy/pull/341): Configurable per-type default import options ([@barthez][])
356
+ * Various codebase optimizations ([@DNNX][], [@pyromaniac][])
357
+ * `update_index` Rspec matcher messages improvements
358
+ * `:all` rake tasks deprecation
359
+ * [#335](https://github.com/toptal/chewy/pull/335): Scoped notification subscriptions in rake tasks ([@0x0badc0de][])
360
+ * [#321](https://github.com/toptal/chewy/pull/321): Async strategies workers accept options ([@dnd][])
361
+ * [#314](https://github.com/toptal/chewy/pull/314): Prefix is configurable per-index ([@mikeyhogarth][])
362
+ * [#302](https://github.com/toptal/chewy/pull/302), [#339](https://github.com/toptal/chewy/pull/339): Ability to pass proc for transport configuration ([@feymartynov][], [@reidab][])
363
+ * [#297](https://github.com/toptal/chewy/pull/297): ElasticSearch 2 support ([@sergeygaychuk][])
364
+ * Accessing types with methods is deprecated. Use `MyIndex::MyType` constant reference instead of `MyIndex.my_type` method.
365
+ * [#294](https://github.com/toptal/chewy/pull/294): Sequel adapter improvements ([@mrbrdo][])
210
366
 
211
- * `:atomic` and `:urgent` strategies are using `import!` method raising exceptions
367
+ ### Bugs Fixed
212
368
 
213
- ## Changes
369
+ * [#325](https://github.com/toptal/chewy/pull/325): Mongoid atomic strategy fix
370
+ * [#324](https://github.com/toptal/chewy/pull/324): Method missing fix ([@jesjos][])
371
+ * [#319](https://github.com/toptal/chewy/pull/319): Hash fields composition fix ([@eproulx-petalmd][])
372
+ * [#306](https://github.com/toptal/chewy/pull/306): Better errors handling in strategies ([@barthez][])
373
+ * [#303](https://github.com/toptal/chewy/pull/303): Assets strategies silencer fix for Rails 5 API mode ([@clupprich][])
214
374
 
215
- * Crutches™ technology
375
+ ## 0.8.3
216
376
 
217
- * Added `.script_fields` chainable method to query (@ka8725)
377
+ ### Breaking changes:
218
378
 
219
- * `update_index` matcher mocha support (@lardawge)
379
+ * `Chewy.atomic` and `Chewy.urgent_update=` methods was removed from the codebase, use `Chewy.strategy` block instead.
380
+ * `delete_from_index?` hook is removed from the codebase.
220
381
 
221
- * `:resque` async strategy
382
+ ### Changes
222
383
 
223
- * `:sidekiq` async strategy (inspired by @sharkzp)
384
+ * Sequel support completely reworked to use common ORM implementations + better sequel specs covarage.
224
385
 
225
- * Added `Query#search_type` for `search_type` request option setup (@marshall-lee)
386
+ ### Bugs Fixed
226
387
 
227
- ## Bugfixes
388
+ * Sequel objects transactional destruction fix
389
+ * Correct Rspec mocking framework checking ([@mainameiz][])
390
+ * Atomic strategy is now compatible with custom ids proc.
391
+ * Safe unsubscribe on import ([@marshall-lee][])
392
+ * Correct custom assets path silencer ([@davekaro][])
228
393
 
229
- * Rails 4.2 migrations are not raising UndefinedUpdateStrategy anymore on data updates
394
+ ## 0.8.2
230
395
 
231
- * Mongoid random failing specs fixes (@marshall-lee)
396
+ ### Changes
232
397
 
233
- # Version 0.7.0
398
+ * ActiveJob strategy by [@mkcode][]
399
+ * Async strategies tweak ([@AndreySavelyev][])
400
+ * GeoPoint readme ([@joonty][])
401
+ * Multiple grammar fixes and code improvements ([@biow0lf][])
402
+ * Named aggregations by [@caldwecr][]
403
+ * Sequel adapter by [@jirutka][]
404
+ * Rake helper methods extracted ([@caldwecr][], [@jirutka][])
405
+ * Multiple grammar fixes ([@henrebotha][])
406
+ * Ability to pass a proc to `update_index` to define updating index dynamically ([@SeTeM][])
234
407
 
235
- ## Breaking changes:
408
+ ### Bugs Fixed
236
409
 
237
- * `Chewy.use_after_commit_callbacks = false` returns previous RDBMS behavior
238
- in tests
410
+ * Fixed transport logger and tracer configuration
239
411
 
240
- * ActiveRecord import is now called after_commit instead of after_save and after_destroy
412
+ ## 0.8.1
241
413
 
242
- * Import now respects default scope and removes unmatched documents
414
+ ### Bugs Fixed
243
415
 
244
- * `delete_from_index?` method is deprecated, use
416
+ * Added support of elasticsearch-ruby 1.0.10
417
+
418
+ ## 0.8.0
419
+
420
+ ### Breaking changes:
245
421
 
422
+ * `:atomic` and `:urgent` strategies are using `import!` method raising exceptions
423
+
424
+ ### Changes
425
+
426
+ * Crutches™ technology
427
+ * Added `.script_fields` chainable method to query ([@ka8725][])
428
+ * `update_index` matcher mocha support ([@lardawge][])
429
+ * `:resque` async strategy
430
+ * `:sidekiq` async strategy (inspired by [@sharkzp][])
431
+ * Added `Query#search_type` for `search_type` request option setup ([@marshall-lee][])
432
+
433
+ ### Bugs Fixed
434
+
435
+ * Rails 4.2 migrations are not raising UndefinedUpdateStrategy anymore on data updates
436
+ * Mongoid random failing specs fixes ([@marshall-lee][])
437
+
438
+ ## 0.7.0
439
+
440
+ ### Breaking changes:
441
+
442
+ * `Chewy.use_after_commit_callbacks = false` returns previous RDBMS behavior in tests
443
+ * ActiveRecord import is now called after_commit instead of after_save and after_destroy
444
+ * Import now respects default scope and removes unmatched documents
445
+ * `delete_from_index?` method is deprecated, use
246
446
  ```ruby
247
447
  define_type User, delete_if: ->{ removed? } do
248
448
  ...
249
449
  end
250
450
  ```
251
-
252
451
  * `Chewy.request_strategy` to configure action controller's request wrapping strategy
253
-
254
452
  * `Chewy.root_strategy` to configure the first strategy in stack
255
-
256
453
  * Default strategy for controller actions is `:atomic`
257
-
258
454
  * Default strategy for activerecord migrations is `:bypass`
259
-
260
455
  * Default strategy for sandbox console is `:bypass`
261
-
262
456
  * Default strategy for rails console is `:urgent`
263
-
264
457
  * `Chewy.configuration` was renamed to `Chewy.settings`
265
-
266
- * Reworked index update strategies implementation. `Chewy.atomic`
267
- and `Chewy.urgent_update` are now deprecated in favour of the new
268
- `Chewy.strategy` API.
269
-
270
- * Loading objects for object-sourced types using `wrap` method is
271
- deprecated, `load_one` method should be used instead. Or method name
272
- might be passed to `define_type`:
273
-
458
+ * Reworked index update strategies implementation. `Chewy.atomic` and `Chewy.urgent_update` are now deprecated in favour of the new `Chewy.strategy` API.
459
+ * Loading objects for object-sourced types using `wrap` method is deprecated, `load_one` method should be used instead. Or method name might be passed to `define_type`:
274
460
  ```ruby
275
461
  class GeoData
276
462
  def self.get_data(elasticsearch_document)
@@ -284,14 +470,11 @@
284
470
  end
285
471
  ```
286
472
 
287
- ## Changes
288
-
289
- * Multiple enhancements by @DNNX
290
-
291
- * Added `script_fields` to search criteria (@ka8725)
473
+ ### Changes
292
474
 
475
+ * Multiple enhancements by [@DNNX][]
476
+ * Added `script_fields` to search criteria ([@ka8725][])
293
477
  * ORM adapters now completely relies on the default scope. This means every scope or objects passed to import are merged with default scope so basically there is no need to define `delete_if` block. Default scope strongly restricts objects which may land in the current index.
294
-
295
478
  ```ruby
296
479
  define_type Country.where("rating > 30") do
297
480
 
@@ -304,11 +487,7 @@
304
487
  CountriesIndex::Country.import(Country.where("rating < 50").to_a)
305
488
  CountriesIndex::Country.import(Country.where("rating < 50").pluck(:id))
306
489
  ```
307
-
308
- * Object adapter supports custom initial import and load methods, so it
309
- could be configured to be used with procs or any class responding to `call`
310
- method.
311
-
490
+ * Object adapter supports custom initial import and load methods, so it could be configured to be used with procs or any class responding to `call` method.
312
491
  ```ruby
313
492
  class GeoData
314
493
  def self.call
@@ -321,9 +500,7 @@
321
500
  ...
322
501
  end
323
502
  ```
324
-
325
503
  * Nested fields value procs additional arguments: parent objects.
326
-
327
504
  ```ruby
328
505
  define_type Country do
329
506
  field :name
@@ -332,177 +509,133 @@
332
509
  end
333
510
  end
334
511
  ```
335
-
336
512
  * Implemented basic named scopes
337
513
 
338
- ## Bugfixes
339
-
340
- * `script_score` allow options (@joeljunstrom)
341
-
342
- * Chewy indexes eaged loading fixes (@leemhenson)
514
+ ### Bugs Fixed
343
515
 
516
+ * `script_score` allow options ([@joeljunstrom][])
517
+ * Chewy indexes eaged loading fixes ([@leemhenson][])
344
518
  * `Chewy::Index.import nil` imports nothing instead of initial data
345
519
 
346
- # Version 0.6.2
347
-
348
- ## Changes
520
+ ## 0.6.2
349
521
 
350
- * document root id custom value option (@baronworks)
522
+ ### Changes
351
523
 
352
- ## Bugfixes
524
+ * document root id custom value option ([@baronworks][])
353
525
 
354
- * Removed decay function defaults (@Linuus)
526
+ ### Bugs Fixed
355
527
 
528
+ * Removed decay function defaults ([@Linuus][])
356
529
  * Correct config file handling in case of empty file
357
530
 
358
- # Version 0.6.1
359
-
360
- ## Changes
531
+ ## 0.6.1
361
532
 
362
- * `min_score` query option support (@jshirley)
533
+ ### Changes
363
534
 
535
+ * `min_score` query option support ([@jshirley][])
364
536
  * `Chewy::Query#find` method for finding documents by id
365
537
 
366
- # Version 0.6.0
538
+ ## 0.6.0
367
539
 
368
- ## Changes
369
-
370
- * Mongoid support YaY! (@fabiotomio, @leemhenson)
540
+ ### Changes
371
541
 
542
+ * Mongoid support YaY! ([@fabiotomio][], [@leemhenson][])
372
543
  * `urgent: true` option for `update_index` is deprecated and will be removed soon, use `Chewy.atomic` instead
544
+ * `timeout` and `timed_out` support ([@MarkMurphy][])
545
+ * will_paginate support ([@josecoelho][])
373
546
 
374
- * `timeout` and `timed_out` support (@MarkMurphy)
375
-
376
- * will_paginate support (@josecoelho)
377
-
378
- ## Bugfixes
547
+ ### Bugs Fixed
379
548
 
380
- * All the query chainable methods delegated to indexes and types (partially @Linuus)
549
+ * All the query chainable methods delegated to indexes and types (partially [@Linuus][])
381
550
 
382
- # Version 0.5.2
551
+ ## 0.5.2
383
552
 
384
- ## Breaking changes:
553
+ ### Breaking changes:
385
554
 
386
555
  * `Chewy::Type::Base` removed in favour of using `Chewy::Type` as a base class for all types
387
556
 
388
- ## Changes
557
+ ### Changes
389
558
 
390
559
  * `Chewy.massacre` aliased to `Chewy.delete_all` method deletes all the indexes with current prefix
391
560
 
392
- ## Bugfixes:
393
-
394
- * Advanced type classes resolving (@inbeom)
561
+ ### Bugs Fixed:
395
562
 
563
+ * Advanced type classes resolving ([@inbeom][])
396
564
  * `import` ignores nil
397
565
 
398
- # Version 0.5.1
399
-
400
- ## Changes:
401
-
402
- * `chewy.yml` Rails generator (@jirikolarik)
566
+ ## 0.5.1
403
567
 
404
- * Parent-child mappings feature support (@inbeom)
568
+ ### Changes:
405
569
 
570
+ * `chewy.yml` Rails generator ([@jirikolarik][])
571
+ * Parent-child mappings feature support ([@inbeom][])
406
572
  * `Chewy::Index.total_count` and `Chewy::Type::Base.total_count`
573
+ * `Chewy::Type::Base.reset` method. Deletes all the type documents and performs import ([@jondavidford][])
574
+ * Added `Chewy::Query#delete_all` scope method using delete by query ES feature ([@jondavidford][])
575
+ * Rspec 3 `update_index` matcher support ([@jimmybaker][])
576
+ * Implemented function scoring ([@averell23][])
407
577
 
408
- * `Chewy::Type::Base.reset` method. Deletes all the type documents and performs import (@jondavidford)
409
-
410
- * Added `Chewy::Query#delete_all` scope method using delete by query ES feature (@jondavidford)
411
-
412
- * Rspec 3 `update_index` matcher support (@jimmybaker)
578
+ ### Bugs Fixed:
413
579
 
414
- * Implemented function scoring (@averell23)
580
+ * Indexed eager-loading fix ([@leemhenson][])
581
+ * Field type deriving nested type support fix ([@rschellhorn][])
415
582
 
416
- ## Bugfixes:
583
+ ## 0.5.0
417
584
 
418
- * Indexed eager-loading fix (@leemhenson)
419
-
420
- * Field type deriving nested type support fix (@rschellhorn)
421
-
422
- # Version 0.5.0
423
-
424
- ## Breaking changes:
585
+ ### Breaking changes:
425
586
 
426
587
  * 404 exception (IndexMissingException) while query is swallowed and treated like an empty result set.
427
-
428
588
  * `load` and `preload` for queries became lazy. Might be partially incompatible.
429
-
430
589
  * Changed mapping behavior: multi-fields are defined in conformity with ElasticSearch documentation (http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/_multi_fields.html#_multi_fields)
431
590
 
432
- ## Changes:
433
-
434
- * `suggest` query options support (@rschellhorn).
591
+ ### Changes:
435
592
 
593
+ * `suggest` query options support ([@rschellhorn][]).
436
594
  * Added hash data support. How it is possible to pass hashes to import.
437
-
438
595
  * `rake chewy:reset` and `rake chewy:update` paramless acts as `rake chewy:reset:all` and `rake chewy:update:all` respectively
439
-
440
596
  * Added `delete_from_index?` API method for custom deleted objects marking.
441
-
442
597
  * Added `post_filter` API, working the same way as filters.
443
-
444
598
  * Added chainable `strategy` query method.
445
-
446
599
  * Aliasing is performed in index create request for ElasticSearch >= 1.1.
447
-
448
600
  * `preload` scope method loads ORM/ODM objects in background.
449
-
450
601
  * `load` method `:only` and `:except` options to specify load types.
451
-
452
602
  * `highlight` and `rescore` query options support.
453
-
454
603
  * config/chewy.yml ERB support.
455
604
 
456
- ## Bugfixes:
605
+ ### Bugs Fixed:
457
606
 
458
607
  * Fixed `missing` and `exists` filters DSL constructors.
459
-
460
608
  * Reworked index data composing.
461
-
462
- * Support for Kaminari new PaginatableArray behavior (@leemhenson)
463
-
609
+ * Support for Kaminari new PaginatableArray behavior ([@leemhenson][])
464
610
  * Correct waiting for status. After index creation, bulk import, and deletion.
611
+ * [#23](https://github.com/toptal/chewy/pull/23): Fix "wrong constant name" with namespace models
465
612
 
466
- * Fix #23 "wrong constant name" with namespace models
467
-
468
- # Version 0.4.0
613
+ ## 0.4.0
469
614
 
470
615
  * Changed `update_index` matcher behavior. Now it compare array attributes position-independently.
471
-
472
- * Search aggregations API support (@arion).
473
-
616
+ * Search aggregations API support ([@arion][]).
474
617
  * Chewy::Query#facets called without params performs the request and returns facets.
475
-
476
618
  * Added `Type.template` DSL method for root objects dynamic templates definition. See [mapping.rb](lib/chewy/type/mapping.rb) for more details.
477
-
478
- * ActiveRecord adapter custom `primary_key` support (@matthee).
479
-
619
+ * ActiveRecord adapter custom `primary_key` support ([@matthee][]).
480
620
  * Urgent update now clears association cache in ActiveRecord to ensure latest changes are imported.
481
-
482
621
  * `import` now creates index before performing.
483
-
484
622
  * `Chewy.configuration[:wait_for_status]` option. Can be set to `red`, `yellow` or `green`. If set - chewy will wait for cluster status before creating, deleting index and import. Useful for specs.
485
623
 
486
- # Version 0.3.0
624
+ ## 0.3.0
487
625
 
488
626
  * Added `Chewy.configuration[:index]` config to setup common indexes options.
489
-
490
627
  * `Chewy.client_options` replaced with `Chewy.configuration`
491
-
492
628
  * Using source filtering instead of fields filter (http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-source-filtering.html).
493
629
 
494
- # Version 0.2.3
630
+ ## 0.2.3
495
631
 
496
632
  * `.import!` indexes method, raises import errors.
497
-
498
633
  * `.import!` types method, raises import errors. Useful for specs.
499
634
 
500
- # Version 0.2.2
501
-
502
- * Support for `none` scope (@undr).
503
-
504
- * Auto-resolved analyzers and analyzers repository (@webgago):
635
+ ## 0.2.2
505
636
 
637
+ * Support for `none` scope ([@undr][]).
638
+ * Auto-resolved analyzers and analyzers repository ([@webgago][]):
506
639
  ```ruby
507
640
  # Setting up analyzers repository:
508
641
  Chewy.analyzer :title_analyzer, type: 'custom', filter: %w(lowercase icu_folding title_nysiis)
@@ -513,69 +646,42 @@
513
646
  settings analysis: {analyzer: ['title_analyzer', {one_more_analyzer: {type: 'custom', tokenizer: 'lowercase'}}]}
514
647
  end
515
648
  ```
516
-
517
649
  `title_analyzer` here will be automatically resolved and passed to index mapping
518
650
 
519
- # Version 0.2.0
651
+ ## 0.2.0
520
652
 
521
653
  * Reworked import error handling. Now all the import errors from ElasticSearch are handled properly, also import method returns true of false depending on the import process success.
522
-
523
654
  * `Chewy::Index.import` now takes types hash as argument within options hash:
524
655
 
525
656
  `PlacesIndex.import city: City.enabled, country: Country.enabled, refresh: false`
526
-
527
657
  * Old indexes cleanup after reset.
528
-
529
658
  * Added index prefixes.
530
-
531
659
  * `define_type` now takes options for adapter.
532
-
533
660
  * `chewy:reset` and `chewy:reset:all` rake tasks are now trying to reset index with zero downtime if it is possible.
534
-
535
661
  * Added `chewy:update:all` rake task.
536
-
537
662
  * Methods `.create`, `.create!`, `.delete`, `.delete`, `reset!` are now supports index name suffix passing as the first argument. See [actions.rb](lib/chewy/index/actions.rb) for more details.
538
-
539
663
  * Method `reset` renamed to `reset!`.
540
-
541
664
  * Added common loading scope for AR adapter. Also removed scope proc argument, now it executes just in main load scope context.
542
-
543
665
  `CitiesIndex.all.load(scope: {city: City.include(:country)})`
544
666
  `CitiesIndex.all.load(scope: {city: -> { include(:country) }})`
545
667
  `CitiesIndex.all.load(scope: ->{ include(:country) })`
546
668
 
547
- # Version 0.1.0
669
+ ## 0.1.0
548
670
 
549
671
  * Added filters simplified DSL. See [filters.rb](lib/chewy/query/filters.rb) for more details.
550
-
551
672
  * Queries and filters join system reworked. See [query.rb](lib/chewy/query.rb) for more details.
552
-
553
673
  * Added query `merge` method
554
-
555
- * `update_index` matcher now wraps expected block in `Chewy.atomic` by default.
556
- This behaviour can be prevented with `atomic: false` option passing
557
-
674
+ * `update_index` matcher now wraps expected block in `Chewy.atomic` by default. This behaviour can be prevented with `atomic: false` option passing
558
675
  ```ruby
559
676
  expect { user.save! }.to update_index('users#user', atomic: false)
560
677
  ```
561
-
562
678
  * Renamed `Chewy.observing_enabled` to `Chewy.urgent_update` with `false` as default
563
-
564
- * `update_elasticsearch` renamed to `update_index`, added `update_index`
565
- `:urgent` option
566
-
567
- * Added import ActiveSupport::Notifications instrumentation
568
- `ActiveSupport::Notifications.subscribe('import_objects.chewy') { |*args| }`
569
-
570
- * Added `types!` and `only!` query chain methods, which purges previously
571
- chained types and fields
572
-
679
+ * `update_elasticsearch` renamed to `update_index`, added `update_index` `:urgent` option
680
+ * Added import ActiveSupport::Notifications instrumentation `ActiveSupport::Notifications.subscribe('import_objects.chewy') { |*args| }`
681
+ * Added `types!` and `only!` query chain methods, which purges previously chained types and fields
573
682
  * `types` chain method now uses types filter
574
-
575
683
  * Added `types` query chain method
576
-
577
684
  * Changed types access API:
578
-
579
685
  ```ruby
580
686
  UsersIndex::User # => UsersIndex::User
581
687
  UsersIndex::types_hash['user'] # => UsersIndex::User
@@ -583,37 +689,113 @@
583
689
  UsersIndex.types # => [UsersIndex::User]
584
690
  UsersIndex.type_names # => ['user']
585
691
  ```
586
-
587
692
  * `update_elasticsearch` method name as the second argument
588
693
 
589
694
  ```ruby
590
695
  update_elasticsearch('users#user', :self)
591
696
  update_elasticsearch('users#user', :users)
592
697
  ```
593
-
594
- * Changed index handle methods, removed `index_` prefix. I.e. was
595
- `UsersIndex.index_create`, became `UsersIndex.create`
596
-
597
- * Ability to pass value proc for source object context if arity == 0
598
- `field :full_name, value: ->{ first_name + last_name }` instead of
599
- `field :full_name, value: ->(u){ u.first_name + u.last_name }`
600
-
698
+ * Changed index handle methods, removed `index_` prefix. I.e. was `UsersIndex.index_create`, became `UsersIndex.create`
699
+ * Ability to pass value proc for source object context if arity == 0 `field :full_name, value: ->{ first_name + last_name }` instead of `field :full_name, value: ->(u){ u.first_name + u.last_name }`
601
700
  * Added `.only` chain to `update_index` matcher
602
-
603
- * Added ability to pass ActiveRecord::Relation as a scope for load
604
- `CitiesIndex.all.load(scope: {city: City.include(:country)})`
605
-
701
+ * Added ability to pass ActiveRecord::Relation as a scope for load `CitiesIndex.all.load(scope: {city: City.include(:country)})`
606
702
  * Added method `all` to index for query DSL consistency
607
-
608
703
  * Implemented isolated adapters to simplify adding new ORMs
704
+ * Query DLS chainable methods delegated to index class (no longer need to call MyIndex.search.query, just MyIndex.query)
609
705
 
610
- * Query DLS chainable methods delegated to index class
611
- (no longer need to call MyIndex.search.query, just MyIndex.query)
612
-
613
- # Version 0.0.1
706
+ ## 0.0.1
614
707
 
615
708
  * Query DSL
616
-
617
709
  * Basic index handling
618
-
619
710
  * Initial version
711
+
712
+ [@0x0badc0de]: https://github.com/0x0badc0de
713
+ [@AgeevAndrew]: https://github.com/AgeevAndrew
714
+ [@aglushkov]: https://github.com/aglushkov
715
+ [@AlexVPopov]: https://github.com/AlexVPopov
716
+ [@AndreySavelyev]: https://github.com/AndreySavelyev
717
+ [@afg419]: https://github.com/afg419
718
+ [@arion]: https://github.com/arion
719
+ [@arturtr]: https://github.com/arturtr
720
+ [@averell23]: https://github.com/averell23
721
+ [@baronworks]: https://github.com/baronworks
722
+ [@barthez]: https://github.com/barthez
723
+ [@bbatsov]: https://github.com/bbatsov
724
+ [@bhacaz]: https://github.com/bhacaz
725
+ [@biow0lf]: https://github.com/biow0lf
726
+ [@Borzik]: https://github.com/Borzik
727
+ [@caldwecr]: https://github.com/caldwecr
728
+ [@chrisandreae]: https://github.com/chrisandreae
729
+ [@clupprich]: https://github.com/clupprich
730
+ [@dalthon]: https://github.com/dalthon
731
+ [@davekaro]: https://github.com/davekaro
732
+ [@dck]: https://github.com/dck
733
+ [@dm1try]: https://github.com/dm1try
734
+ [@dmitry]: https://github.com/dmitry
735
+ [@dnd]: https://github.com/dnd
736
+ [@DNNX]: https://github.com/DNNX
737
+ [@eManPrague]: https://github.com/eManPrague
738
+ [@eproulx-petalmd]: https://github.com/eproulx-petalmd
739
+ [@fabiotomio]: https://github.com/fabiotomio
740
+ [@feymartynov]: https://github.com/feymartynov
741
+ [@gseddon]: https://github.com/gseddon
742
+ [@guigs]: https://github.com/guigs
743
+ [@heartfulbird]: https://github.com/heartfulbird
744
+ [@henrebotha]: https://github.com/henrebotha
745
+ [@inbeom]: https://github.com/inbeom
746
+ [@jesjos]: https://github.com/jesjos
747
+ [@JF-Lalonde]: https://github.com/JF-Lalonde
748
+ [@jiajiawang]: https://github.com/jiajiawang
749
+ [@jimmybaker]: https://github.com/jimmybaker
750
+ [@jirikolarik]: https://github.com/jirikolarik
751
+ [@jirutka]: https://github.com/jirutka
752
+ [@jkostolansky]: https://github.com/jkostolansky
753
+ [@joeljunstrom]: https://github.com/joeljunstrom
754
+ [@jondavidford]: https://github.com/jondavidford
755
+ [@joonty]: https://github.com/joonty
756
+ [@josecoelho]: https://github.com/josecoelho
757
+ [@josephchoe]: https://github.com/josephchoe
758
+ [@jshirley]: https://github.com/jshirley
759
+ [@ka8725]: https://github.com/ka8725
760
+ [@kolauren]: https://github.com/kolauren
761
+ [@konalegi]: https://github.com/konalegi
762
+ [@lardawge]: https://github.com/lardawge
763
+ [@leemhenson]: https://github.com/leemhenson
764
+ [@Linuus]: https://github.com/Linuus
765
+ [@lowang]: https://github.com/lowang
766
+ [@mainameiz]: https://github.com/mainameiz
767
+ [@MarkMurphy]: https://github.com/MarkMurphy
768
+ [@marshall]: https://github.com/marshall
769
+ [@matchbookmac]: https://github.com/matchbookmac
770
+ [@matthee]: https://github.com/matthee
771
+ [@mattzollinhofer]: https://github.com/mattzollinhofer
772
+ [@menglewis]: https://github.com/menglewis
773
+ [@mikeyhogarth]: https://github.com/mikeyhogarth
774
+ [@milk1000cc]: https://github.com/milk1000cc
775
+ [@mkcode]: https://github.com/mkcode
776
+ [@mpeychich]: https://github.com/mpeychich
777
+ [@mrbrdo]: https://github.com/mrbrdo
778
+ [@mrzasa]: https://github.com/mrzasa
779
+ [@musaffa]: https://github.com/musaffa
780
+ [@nattfodd]: https://github.com/nattfodd
781
+ [@okliv]: https://github.com/okliv
782
+ [@olancheg]: https://github.com/olancheg
783
+ [@parallel588]: https://github.com/parallel588
784
+ [@pyromaniac]: https://github.com/pyromaniac
785
+ [@rabotyaga]: https://github.com/rabotyaga
786
+ [@reidab]: https://github.com/reidab
787
+ [@robacarp]: https://github.com/robacarp
788
+ [@robertasg]: https://github.com/robertasg
789
+ [@rschellhorn]: https://github.com/rschellhorn
790
+ [@sergey-kintsel]: https://github.com/sergey-kintsel
791
+ [@sergeygaychuk]: https://github.com/sergeygaychuk
792
+ [@SeTeM]: https://github.com/SeTeM
793
+ [@sevab]: https://github.com/sevab
794
+ [@sharkzp]: https://github.com/sharkzp
795
+ [@socialchorus]: https://github.com/socialchorus
796
+ [@taylor-au]: https://github.com/taylor-au
797
+ [@TikiTDO]: https://github.com/TikiTDO
798
+ [@undr]: https://github.com/undr
799
+ [@Vitalina-Vakulchyk]: https://github.com/Vitalina-Vakulchyk
800
+ [@webgago]: https://github.com/webgago
801
+ [@yahooguntu]: https://github.com/yahooguntu