chewy 6.0.0 → 7.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. checksums.yaml +4 -4
  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/dependabot.yml +42 -0
  7. data/.github/workflows/ruby.yml +60 -0
  8. data/.rubocop.yml +16 -8
  9. data/.rubocop_todo.yml +110 -22
  10. data/CHANGELOG.md +396 -105
  11. data/CODE_OF_CONDUCT.md +14 -0
  12. data/CONTRIBUTING.md +63 -0
  13. data/Gemfile +4 -10
  14. data/Guardfile +3 -1
  15. data/README.md +497 -275
  16. data/chewy.gemspec +5 -20
  17. data/gemfiles/base.gemfile +12 -0
  18. data/gemfiles/rails.6.1.activerecord.gemfile +10 -15
  19. data/gemfiles/rails.7.0.activerecord.gemfile +14 -0
  20. data/gemfiles/rails.7.1.activerecord.gemfile +14 -0
  21. data/lib/chewy/config.rb +60 -52
  22. data/lib/chewy/elastic_client.rb +31 -0
  23. data/lib/chewy/errors.rb +7 -10
  24. data/lib/chewy/fields/base.rb +79 -13
  25. data/lib/chewy/fields/root.rb +4 -14
  26. data/lib/chewy/index/actions.rb +54 -37
  27. data/lib/chewy/{type → index}/adapter/active_record.rb +30 -6
  28. data/lib/chewy/{type → index}/adapter/base.rb +2 -3
  29. data/lib/chewy/{type → index}/adapter/object.rb +27 -31
  30. data/lib/chewy/{type → index}/adapter/orm.rb +17 -18
  31. data/lib/chewy/index/aliases.rb +14 -5
  32. data/lib/chewy/index/crutch.rb +40 -0
  33. data/lib/chewy/index/import/bulk_builder.rb +311 -0
  34. data/lib/chewy/{type → index}/import/bulk_request.rb +6 -7
  35. data/lib/chewy/{type → index}/import/journal_builder.rb +11 -12
  36. data/lib/chewy/{type → index}/import/routine.rb +18 -17
  37. data/lib/chewy/{type → index}/import.rb +76 -32
  38. data/lib/chewy/{type → index}/mapping.rb +29 -34
  39. data/lib/chewy/index/observe/active_record_methods.rb +87 -0
  40. data/lib/chewy/index/observe/callback.rb +34 -0
  41. data/lib/chewy/index/observe.rb +17 -0
  42. data/lib/chewy/index/specification.rb +1 -0
  43. data/lib/chewy/{type → index}/syncer.rb +59 -59
  44. data/lib/chewy/{type → index}/witchcraft.rb +11 -7
  45. data/lib/chewy/{type → index}/wrapper.rb +2 -2
  46. data/lib/chewy/index.rb +67 -94
  47. data/lib/chewy/journal.rb +25 -14
  48. data/lib/chewy/log_subscriber.rb +5 -1
  49. data/lib/chewy/minitest/helpers.rb +86 -13
  50. data/lib/chewy/minitest/search_index_receiver.rb +24 -26
  51. data/lib/chewy/railtie.rb +6 -20
  52. data/lib/chewy/rake_helper.rb +169 -113
  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 +55 -44
  56. data/lib/chewy/rspec.rb +2 -0
  57. data/lib/chewy/runtime/version.rb +1 -1
  58. data/lib/chewy/runtime.rb +1 -1
  59. data/lib/chewy/search/loader.rb +19 -41
  60. data/lib/chewy/search/parameters/collapse.rb +16 -0
  61. data/lib/chewy/search/parameters/concerns/query_storage.rb +2 -2
  62. data/lib/chewy/search/parameters/ignore_unavailable.rb +27 -0
  63. data/lib/chewy/search/parameters/indices.rb +13 -58
  64. data/lib/chewy/search/parameters/knn.rb +16 -0
  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/storage.rb +1 -1
  68. data/lib/chewy/search/parameters/track_total_hits.rb +16 -0
  69. data/lib/chewy/search/parameters.rb +6 -4
  70. data/lib/chewy/search/query_proxy.rb +9 -2
  71. data/lib/chewy/search/request.rb +169 -134
  72. data/lib/chewy/search/response.rb +5 -5
  73. data/lib/chewy/search/scoping.rb +7 -8
  74. data/lib/chewy/search/scrolling.rb +13 -13
  75. data/lib/chewy/search.rb +9 -19
  76. data/lib/chewy/stash.rb +19 -30
  77. data/lib/chewy/strategy/active_job.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 +168 -0
  81. data/lib/chewy/strategy/delayed_sidekiq/worker.rb +76 -0
  82. data/lib/chewy/strategy/delayed_sidekiq.rb +30 -0
  83. data/lib/chewy/strategy/lazy_sidekiq.rb +64 -0
  84. data/lib/chewy/strategy/sidekiq.rb +2 -1
  85. data/lib/chewy/strategy.rb +6 -19
  86. data/lib/chewy/version.rb +1 -1
  87. data/lib/chewy.rb +39 -86
  88. data/lib/generators/chewy/install_generator.rb +1 -1
  89. data/lib/tasks/chewy.rake +36 -32
  90. data/migration_guide.md +46 -8
  91. data/spec/chewy/config_spec.rb +16 -41
  92. data/spec/chewy/elastic_client_spec.rb +26 -0
  93. data/spec/chewy/fields/base_spec.rb +432 -147
  94. data/spec/chewy/fields/root_spec.rb +20 -28
  95. data/spec/chewy/fields/time_fields_spec.rb +5 -5
  96. data/spec/chewy/index/actions_spec.rb +368 -59
  97. data/spec/chewy/{type → index}/adapter/active_record_spec.rb +156 -40
  98. data/spec/chewy/{type → index}/adapter/object_spec.rb +21 -6
  99. data/spec/chewy/index/aliases_spec.rb +3 -3
  100. data/spec/chewy/index/import/bulk_builder_spec.rb +494 -0
  101. data/spec/chewy/{type → index}/import/bulk_request_spec.rb +5 -12
  102. data/spec/chewy/{type → index}/import/journal_builder_spec.rb +9 -19
  103. data/spec/chewy/{type → index}/import/routine_spec.rb +19 -19
  104. data/spec/chewy/{type → index}/import_spec.rb +164 -98
  105. data/spec/chewy/index/mapping_spec.rb +135 -0
  106. data/spec/chewy/index/observe/active_record_methods_spec.rb +68 -0
  107. data/spec/chewy/index/observe/callback_spec.rb +139 -0
  108. data/spec/chewy/index/observe_spec.rb +143 -0
  109. data/spec/chewy/index/settings_spec.rb +3 -1
  110. data/spec/chewy/index/specification_spec.rb +20 -30
  111. data/spec/chewy/{type → index}/syncer_spec.rb +14 -19
  112. data/spec/chewy/{type → index}/witchcraft_spec.rb +20 -22
  113. data/spec/chewy/index/wrapper_spec.rb +100 -0
  114. data/spec/chewy/index_spec.rb +60 -105
  115. data/spec/chewy/journal_spec.rb +25 -74
  116. data/spec/chewy/minitest/helpers_spec.rb +123 -15
  117. data/spec/chewy/minitest/search_index_receiver_spec.rb +28 -30
  118. data/spec/chewy/multi_search_spec.rb +4 -5
  119. data/spec/chewy/rake_helper_spec.rb +315 -55
  120. data/spec/chewy/rspec/build_query_spec.rb +34 -0
  121. data/spec/chewy/rspec/helpers_spec.rb +61 -0
  122. data/spec/chewy/rspec/update_index_spec.rb +74 -71
  123. data/spec/chewy/runtime_spec.rb +2 -2
  124. data/spec/chewy/search/loader_spec.rb +19 -53
  125. data/spec/chewy/search/pagination/kaminari_examples.rb +4 -6
  126. data/spec/chewy/search/pagination/kaminari_spec.rb +2 -2
  127. data/spec/chewy/search/parameters/collapse_spec.rb +5 -0
  128. data/spec/chewy/search/parameters/ignore_unavailable_spec.rb +67 -0
  129. data/spec/chewy/search/parameters/indices_spec.rb +26 -117
  130. data/spec/chewy/search/parameters/knn_spec.rb +5 -0
  131. data/spec/chewy/search/parameters/order_spec.rb +18 -11
  132. data/spec/chewy/search/parameters/query_storage_examples.rb +67 -21
  133. data/spec/chewy/search/parameters/search_after_spec.rb +4 -1
  134. data/spec/chewy/search/parameters/source_spec.rb +8 -2
  135. data/spec/chewy/search/parameters/track_total_hits_spec.rb +5 -0
  136. data/spec/chewy/search/parameters_spec.rb +18 -4
  137. data/spec/chewy/search/query_proxy_spec.rb +68 -17
  138. data/spec/chewy/search/request_spec.rb +292 -110
  139. data/spec/chewy/search/response_spec.rb +12 -12
  140. data/spec/chewy/search/scrolling_spec.rb +10 -17
  141. data/spec/chewy/search_spec.rb +40 -34
  142. data/spec/chewy/stash_spec.rb +9 -21
  143. data/spec/chewy/strategy/active_job_spec.rb +16 -16
  144. data/spec/chewy/strategy/atomic_no_refresh_spec.rb +60 -0
  145. data/spec/chewy/strategy/atomic_spec.rb +9 -10
  146. data/spec/chewy/strategy/delayed_sidekiq_spec.rb +208 -0
  147. data/spec/chewy/strategy/lazy_sidekiq_spec.rb +214 -0
  148. data/spec/chewy/strategy/sidekiq_spec.rb +12 -12
  149. data/spec/chewy/strategy_spec.rb +19 -15
  150. data/spec/chewy_spec.rb +24 -107
  151. data/spec/spec_helper.rb +3 -22
  152. data/spec/support/active_record.rb +25 -7
  153. metadata +78 -339
  154. data/.circleci/config.yml +0 -240
  155. data/Appraisals +0 -81
  156. data/gemfiles/rails.5.2.activerecord.gemfile +0 -17
  157. data/gemfiles/rails.5.2.mongoid.6.4.gemfile +0 -17
  158. data/gemfiles/rails.6.0.activerecord.gemfile +0 -17
  159. data/gemfiles/sequel.4.45.gemfile +0 -11
  160. data/lib/chewy/backports/deep_dup.rb +0 -46
  161. data/lib/chewy/backports/duplicable.rb +0 -91
  162. data/lib/chewy/search/pagination/will_paginate.rb +0 -43
  163. data/lib/chewy/search/parameters/types.rb +0 -20
  164. data/lib/chewy/strategy/resque.rb +0 -27
  165. data/lib/chewy/strategy/shoryuken.rb +0 -40
  166. data/lib/chewy/type/actions.rb +0 -43
  167. data/lib/chewy/type/adapter/mongoid.rb +0 -67
  168. data/lib/chewy/type/adapter/sequel.rb +0 -93
  169. data/lib/chewy/type/crutch.rb +0 -32
  170. data/lib/chewy/type/import/bulk_builder.rb +0 -122
  171. data/lib/chewy/type/observe.rb +0 -82
  172. data/lib/chewy/type.rb +0 -120
  173. data/lib/sequel/plugins/chewy_observe.rb +0 -63
  174. data/spec/chewy/search/pagination/will_paginate_examples.rb +0 -63
  175. data/spec/chewy/search/pagination/will_paginate_spec.rb +0 -23
  176. data/spec/chewy/search/parameters/types_spec.rb +0 -5
  177. data/spec/chewy/strategy/resque_spec.rb +0 -46
  178. data/spec/chewy/strategy/shoryuken_spec.rb +0 -70
  179. data/spec/chewy/type/actions_spec.rb +0 -50
  180. data/spec/chewy/type/adapter/mongoid_spec.rb +0 -372
  181. data/spec/chewy/type/adapter/sequel_spec.rb +0 -472
  182. data/spec/chewy/type/import/bulk_builder_spec.rb +0 -194
  183. data/spec/chewy/type/mapping_spec.rb +0 -175
  184. data/spec/chewy/type/observe_spec.rb +0 -137
  185. data/spec/chewy/type/wrapper_spec.rb +0 -100
  186. data/spec/chewy/type_spec.rb +0 -55
  187. data/spec/support/mongoid.rb +0 -93
  188. data/spec/support/sequel.rb +0 -80
@@ -6,7 +6,7 @@ module Chewy
6
6
  extend ActiveSupport::Concern
7
7
 
8
8
  # Assert that an index *changes* during a block.
9
- # @param index [Chewy::Type] the index / type to watch, eg EntitiesIndex::Entity.
9
+ # @param index [Chewy::Index] the index to watch, eg EntitiesIndex.
10
10
  # @param strategy [Symbol] the Chewy strategy to use around the block. See Chewy docs.
11
11
  # @param bypass_actual_index [true, false]
12
12
  # True to preempt the http call to Elastic, false otherwise.
@@ -14,11 +14,11 @@ module Chewy
14
14
  #
15
15
  # @return [SearchIndexReceiver] for optional further assertions on the nature of the index changes.
16
16
  #
17
- def assert_indexes(index, strategy: :atomic, bypass_actual_index: true)
18
- type = Chewy.derive_type index
17
+ def assert_indexes(index, strategy: :atomic, bypass_actual_index: true, &block)
18
+ index_class = Chewy.derive_name index
19
19
  receiver = SearchIndexReceiver.new
20
20
 
21
- bulk_method = type.method :bulk
21
+ bulk_method = index_class.method :bulk
22
22
  # Manually mocking #bulk because we need to properly capture `self`
23
23
  bulk_mock = lambda do |*bulk_args|
24
24
  receiver.catch bulk_args, self
@@ -28,13 +28,11 @@ module Chewy
28
28
  {}
29
29
  end
30
30
 
31
- type.define_singleton_method :bulk, bulk_mock
31
+ index_class.define_singleton_method :bulk, bulk_mock
32
32
 
33
- Chewy.strategy(strategy) do
34
- yield
35
- end
33
+ Chewy.strategy(strategy, &block)
36
34
 
37
- type.define_singleton_method :bulk, bulk_method
35
+ index_class.define_singleton_method :bulk, bulk_method
38
36
 
39
37
  assert_includes receiver.updated_indexes, index, "Expected #{index} to be updated but it wasn't"
40
38
 
@@ -44,10 +42,85 @@ module Chewy
44
42
  # Run indexing for the database changes during the block provided.
45
43
  # By default, indexing is run at the end of the block.
46
44
  # @param strategy [Symbol] the Chewy index update strategy see Chewy docs.
47
- def run_indexing(strategy: :atomic)
48
- Chewy.strategy strategy do
49
- yield
50
- end
45
+ #
46
+ def run_indexing(strategy: :atomic, &block)
47
+ Chewy.strategy strategy, &block
48
+ end
49
+
50
+ # Mock Elasticsearch response
51
+ # Simple usage - just pass index, expected raw response
52
+ # and block with the query.
53
+ #
54
+ # @param index [Chewy::Index] the index to watch, eg EntitiesIndex.
55
+ # @param raw_response [Hash] hash with response.
56
+ #
57
+ def mock_elasticsearch_response(index, raw_response)
58
+ mocked_request = Chewy::Search::Request.new(index)
59
+
60
+ original_new = Chewy::Search::Request.method(:new)
61
+
62
+ Chewy::Search::Request.define_singleton_method(:new) { |*_args| mocked_request }
63
+
64
+ original_perform = mocked_request.method(:perform)
65
+ mocked_request.define_singleton_method(:perform) { raw_response }
66
+
67
+ yield
68
+ ensure
69
+ mocked_request.define_singleton_method(:perform, original_perform)
70
+ Chewy::Search::Request.define_singleton_method(:new, original_new)
71
+ end
72
+
73
+ # Mock Elasticsearch response with defined sources
74
+ # Simple usage - just pass index, expected sources
75
+ # and block with the query.
76
+ #
77
+ # @param index [Chewy::Index] the index to watch, eg EntitiesIndex.
78
+ # @param hits [Hash] hash with sources.
79
+ #
80
+ def mock_elasticsearch_response_sources(index, hits, &block)
81
+ raw_response = {
82
+ 'took' => 4,
83
+ 'timed_out' => false,
84
+ '_shards' => {
85
+ 'total' => 1,
86
+ 'successful' => 1,
87
+ 'skipped' => 0,
88
+ 'failed' => 0
89
+ },
90
+ 'hits' => {
91
+ 'total' => {
92
+ 'value' => hits.count,
93
+ 'relation' => 'eq'
94
+ },
95
+ 'max_score' => 1.0,
96
+ 'hits' => hits.each_with_index.map do |hit, i|
97
+ {
98
+ '_index' => index.index_name,
99
+ '_type' => '_doc',
100
+ '_id' => hit[:id] || (i + 1).to_s,
101
+ '_score' => 3.14,
102
+ '_source' => hit
103
+ }
104
+ end
105
+ }
106
+ }
107
+
108
+ mock_elasticsearch_response(index, raw_response, &block)
109
+ end
110
+
111
+ # Check the assertion that actual Elasticsearch query is rendered
112
+ # to the expected query
113
+ #
114
+ # @param query [::Query] the actual Elasticsearch query.
115
+ # @param expected_query [Hash] expected query.
116
+ #
117
+ # @return [Boolean]
118
+ # True - in the case when actual Elasticsearch query is rendered to the expected query.
119
+ # False - in the opposite case.
120
+ #
121
+ def assert_elasticsearch_query(query, expected_query)
122
+ actual_query = query.render
123
+ assert_equal expected_query, actual_query, "got #{actual_query.inspect} instead of expected query."
51
124
  end
52
125
 
53
126
  module ClassMethods
@@ -1,80 +1,78 @@
1
1
  # Test helper class to provide minitest hooks for Chewy::Index testing.
2
2
  #
3
3
  # @note Intended to be used in conjunction with a test helper which mocks over the #bulk
4
- # method on a {Chewy::Type} class. (See SearchTestHelper)
4
+ # method on a {Chewy::Index} class. (See {Chewy::Minitest::Helpers})
5
5
  #
6
- # The class will capture the data from the *param on the Chewy::Type.bulk method and
6
+ # The class will capture the data from the *param on the Chewy::Index.bulk method and
7
7
  # aggregate the data for test analysis.
8
8
  class SearchIndexReceiver
9
+ MUTATION_FOR_CLASS = Struct.new(:indexes, :deletes, keyword_init: true)
10
+
9
11
  def initialize
10
12
  @mutations = {}
11
13
  end
12
14
 
13
- # @param bulk_params [Hash] the bulk_params that should be sent to the Chewy::Type.bulk method.
14
- # @param type [Chewy::Type] the type executing this query.
15
- def catch(bulk_params, type)
15
+ # @param bulk_params [Hash] the bulk_params that should be sent to the Chewy::Index.bulk method.
16
+ # @param index [Chewy::Index] the index executing this query.
17
+ def catch(bulk_params, index)
16
18
  Array.wrap(bulk_params).map { |y| y[:body] }.flatten.each do |update|
17
19
  if update[:delete]
18
- mutation_for(type).deletes << update[:delete][:_id]
20
+ mutation_for(index).deletes << update[:delete][:_id]
19
21
  elsif update[:index]
20
- mutation_for(type).indexes << update[:index]
22
+ mutation_for(index).indexes << update[:index]
21
23
  end
22
24
  end
23
25
  end
24
26
 
25
- # @param index [Chewy::Index] return only index requests to the specified {Chewy::Type} index.
27
+ # @param index [Chewy::Index] return only index requests to the specified {Chewy::Index} index.
26
28
  # @return [Hash] the index changes captured by the mock.
27
29
  def indexes_for(index = nil)
28
30
  if index
29
31
  mutation_for(index).indexes
30
32
  else
31
- Hash[
32
- @mutations.map { |a, b| [a, b.indexes] }
33
- ]
33
+ @mutations.transform_values(&:indexes)
34
34
  end
35
35
  end
36
36
  alias_method :indexes, :indexes_for
37
37
 
38
- # @param index [Chewy::Index] return only delete requests to the specified {Chewy::Type} index.
38
+ # @param index [Chewy::Index] return only delete requests to the specified {Chewy::Index} index.
39
39
  # @return [Hash] the index deletes captured by the mock.
40
40
  def deletes_for(index = nil)
41
41
  if index
42
42
  mutation_for(index).deletes
43
43
  else
44
- Hash[
45
- @mutations.map { |a, b| [a, b.deletes] }
46
- ]
44
+ @mutations.transform_values(&:deletes)
47
45
  end
48
46
  end
49
47
  alias_method :deletes, :deletes_for
50
48
 
51
49
  # Check to see if a given object has been indexed.
52
50
  # @param obj [#id] obj the object to look for.
53
- # @param type [Chewy::Type] what type the object should be indexed as.
51
+ # @param index [Chewy::Index] what index the object should be indexed in.
54
52
  # @return [true, false] if the object was indexed.
55
- def indexed?(obj, type)
56
- indexes_for(type).map { |i| i[:_id] }.include? obj.id
53
+ def indexed?(obj, index)
54
+ indexes_for(index).map { |i| i[:_id] }.include? obj.id
57
55
  end
58
56
 
59
57
  # Check to see if a given object has been deleted.
60
58
  # @param obj [#id] obj the object to look for.
61
- # @param type [Chewy::Type] what type the object should have been deleted from.
59
+ # @param index [Chewy::Index] what index the object should have been deleted from.
62
60
  # @return [true, false] if the object was deleted.
63
- def deleted?(obj, type)
64
- deletes_for(type).include? obj.id
61
+ def deleted?(obj, index)
62
+ deletes_for(index).include? obj.id
65
63
  end
66
64
 
67
- # @return [Array<Chewy::Type>] a list of types indexes changed.
65
+ # @return [Array<Chewy::Index>] a list of indexes changed.
68
66
  def updated_indexes
69
67
  @mutations.keys
70
68
  end
71
69
 
72
70
  private
73
71
 
74
- # Get the mutation object for a given type.
75
- # @param type [Chewy::Type] the index type to fetch.
72
+ # Get the mutation object for a given index.
73
+ # @param index [Chewy::Index] the index to fetch.
76
74
  # @return [#indexes, #deletes] an object with a list of indexes and a list of deletes.
77
- def mutation_for(type)
78
- @mutations[type] ||= OpenStruct.new(indexes: [], deletes: [])
75
+ def mutation_for(index)
76
+ @mutations[index] ||= MUTATION_FOR_CLASS.new(indexes: [], deletes: [])
79
77
  end
80
78
  end
data/lib/chewy/railtie.rb CHANGED
@@ -14,7 +14,9 @@ module Chewy
14
14
  if Rails.application.config.respond_to?(:assets) && env['PATH_INFO'].start_with?(Rails.application.config.assets.prefix)
15
15
  @app.call(env)
16
16
  else
17
- Chewy.logger.info("Chewy request strategy is `#{Chewy.request_strategy}`") if Chewy.logger && @request_strategy != Chewy.request_strategy
17
+ if Chewy.logger && @request_strategy != Chewy.request_strategy
18
+ Chewy.logger.info("Chewy request strategy is `#{Chewy.request_strategy}`")
19
+ end
18
20
  @request_strategy = Chewy.request_strategy
19
21
  Chewy.strategy(Chewy.request_strategy) { @app.call(env) }
20
22
  end
@@ -22,17 +24,6 @@ module Chewy
22
24
  end
23
25
 
24
26
  module MigrationStrategy
25
- extend ActiveSupport::Concern
26
- included do
27
- alias_method_chain :migrate, :chewy
28
- end
29
-
30
- def migrate_with_chewy(*args)
31
- Chewy.strategy(:bypass) { migrate_without_chewy(*args) }
32
- end
33
- end
34
-
35
- module Rails5MigrationStrategy
36
27
  def migrate(*args)
37
28
  Chewy.strategy(:bypass) { super }
38
29
  end
@@ -46,7 +37,7 @@ module Chewy
46
37
  if app.sandbox?
47
38
  Chewy.strategy(:bypass)
48
39
  else
49
- Chewy.strategy(:urgent)
40
+ Chewy.strategy(Chewy.console_strategy)
50
41
  end
51
42
  puts "Chewy console strategy is `#{Chewy.strategy.current.name}`"
52
43
  end
@@ -57,13 +48,8 @@ module Chewy
57
48
 
58
49
  initializer 'chewy.migration_strategy' do
59
50
  ActiveSupport.on_load(:active_record) do
60
- if Rails::VERSION::MAJOR >= 5
61
- ActiveRecord::Migration.prepend(Rails5MigrationStrategy)
62
- ActiveRecord::Migrator.prepend(Rails5MigrationStrategy) if defined? ActiveRecord::Migrator
63
- else
64
- ActiveRecord::Migration.send(:include, MigrationStrategy)
65
- ActiveRecord::Migrator.send(:include, MigrationStrategy) if defined? ActiveRecord::Migrator
66
- end
51
+ ActiveRecord::Migration.prepend(MigrationStrategy)
52
+ ActiveRecord::Migrator.prepend(MigrationStrategy) if defined? ActiveRecord::Migrator
67
53
  end
68
54
  end
69
55