chewy 6.0.0 → 7.5.1
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.
- checksums.yaml +4 -4
- data/.github/CODEOWNERS +1 -0
- data/.github/ISSUE_TEMPLATE/bug_report.md +39 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +16 -0
- data/.github/dependabot.yml +42 -0
- data/.github/workflows/ruby.yml +48 -0
- data/.rubocop.yml +16 -8
- data/.rubocop_todo.yml +110 -22
- data/CHANGELOG.md +385 -105
- data/CODE_OF_CONDUCT.md +14 -0
- data/CONTRIBUTING.md +63 -0
- data/Gemfile +4 -10
- data/Guardfile +3 -1
- data/README.md +494 -275
- data/chewy.gemspec +5 -20
- data/gemfiles/base.gemfile +12 -0
- data/gemfiles/rails.6.1.activerecord.gemfile +10 -15
- data/gemfiles/rails.7.0.activerecord.gemfile +14 -0
- data/gemfiles/rails.7.1.activerecord.gemfile +14 -0
- data/lib/chewy/config.rb +58 -50
- data/lib/chewy/elastic_client.rb +31 -0
- data/lib/chewy/errors.rb +7 -10
- data/lib/chewy/fields/base.rb +79 -13
- data/lib/chewy/fields/root.rb +4 -14
- data/lib/chewy/index/actions.rb +54 -37
- data/lib/chewy/{type → index}/adapter/active_record.rb +30 -6
- data/lib/chewy/{type → index}/adapter/base.rb +2 -3
- data/lib/chewy/{type → index}/adapter/object.rb +27 -31
- data/lib/chewy/{type → index}/adapter/orm.rb +17 -18
- data/lib/chewy/index/aliases.rb +14 -5
- data/lib/chewy/index/crutch.rb +40 -0
- data/lib/chewy/index/import/bulk_builder.rb +311 -0
- data/lib/chewy/{type → index}/import/bulk_request.rb +6 -7
- data/lib/chewy/{type → index}/import/journal_builder.rb +11 -12
- data/lib/chewy/{type → index}/import/routine.rb +18 -17
- data/lib/chewy/{type → index}/import.rb +76 -32
- data/lib/chewy/{type → index}/mapping.rb +29 -34
- data/lib/chewy/index/observe/active_record_methods.rb +87 -0
- data/lib/chewy/index/observe/callback.rb +34 -0
- data/lib/chewy/index/observe.rb +17 -0
- data/lib/chewy/index/specification.rb +1 -0
- data/lib/chewy/{type → index}/syncer.rb +59 -59
- data/lib/chewy/{type → index}/witchcraft.rb +11 -7
- data/lib/chewy/{type → index}/wrapper.rb +2 -2
- data/lib/chewy/index.rb +67 -94
- data/lib/chewy/journal.rb +25 -14
- data/lib/chewy/log_subscriber.rb +5 -1
- data/lib/chewy/minitest/helpers.rb +86 -13
- data/lib/chewy/minitest/search_index_receiver.rb +24 -26
- data/lib/chewy/railtie.rb +6 -20
- data/lib/chewy/rake_helper.rb +169 -113
- data/lib/chewy/rspec/build_query.rb +12 -0
- data/lib/chewy/rspec/helpers.rb +55 -0
- data/lib/chewy/rspec/update_index.rb +55 -44
- data/lib/chewy/rspec.rb +2 -0
- data/lib/chewy/runtime/version.rb +1 -1
- data/lib/chewy/runtime.rb +1 -1
- data/lib/chewy/search/loader.rb +19 -41
- data/lib/chewy/search/parameters/collapse.rb +16 -0
- data/lib/chewy/search/parameters/concerns/query_storage.rb +2 -2
- data/lib/chewy/search/parameters/ignore_unavailable.rb +27 -0
- data/lib/chewy/search/parameters/indices.rb +13 -58
- data/lib/chewy/search/parameters/knn.rb +16 -0
- data/lib/chewy/search/parameters/order.rb +6 -19
- data/lib/chewy/search/parameters/source.rb +5 -1
- data/lib/chewy/search/parameters/storage.rb +1 -1
- data/lib/chewy/search/parameters/track_total_hits.rb +16 -0
- data/lib/chewy/search/parameters.rb +6 -4
- data/lib/chewy/search/query_proxy.rb +9 -2
- data/lib/chewy/search/request.rb +169 -134
- data/lib/chewy/search/response.rb +5 -5
- data/lib/chewy/search/scoping.rb +7 -8
- data/lib/chewy/search/scrolling.rb +13 -13
- data/lib/chewy/search.rb +9 -19
- data/lib/chewy/stash.rb +19 -30
- data/lib/chewy/strategy/active_job.rb +1 -1
- data/lib/chewy/strategy/atomic_no_refresh.rb +18 -0
- data/lib/chewy/strategy/base.rb +10 -0
- data/lib/chewy/strategy/delayed_sidekiq/scheduler.rb +151 -0
- data/lib/chewy/strategy/delayed_sidekiq/worker.rb +52 -0
- data/lib/chewy/strategy/delayed_sidekiq.rb +30 -0
- data/lib/chewy/strategy/lazy_sidekiq.rb +64 -0
- data/lib/chewy/strategy/sidekiq.rb +2 -1
- data/lib/chewy/strategy.rb +6 -19
- data/lib/chewy/version.rb +1 -1
- data/lib/chewy.rb +39 -86
- data/lib/generators/chewy/install_generator.rb +1 -1
- data/lib/tasks/chewy.rake +36 -32
- data/migration_guide.md +46 -8
- data/spec/chewy/config_spec.rb +14 -39
- data/spec/chewy/elastic_client_spec.rb +26 -0
- data/spec/chewy/fields/base_spec.rb +432 -147
- data/spec/chewy/fields/root_spec.rb +20 -28
- data/spec/chewy/fields/time_fields_spec.rb +5 -5
- data/spec/chewy/index/actions_spec.rb +368 -59
- data/spec/chewy/{type → index}/adapter/active_record_spec.rb +156 -40
- data/spec/chewy/{type → index}/adapter/object_spec.rb +21 -6
- data/spec/chewy/index/aliases_spec.rb +3 -3
- data/spec/chewy/index/import/bulk_builder_spec.rb +494 -0
- data/spec/chewy/{type → index}/import/bulk_request_spec.rb +5 -12
- data/spec/chewy/{type → index}/import/journal_builder_spec.rb +9 -19
- data/spec/chewy/{type → index}/import/routine_spec.rb +19 -19
- data/spec/chewy/{type → index}/import_spec.rb +164 -98
- data/spec/chewy/index/mapping_spec.rb +135 -0
- data/spec/chewy/index/observe/active_record_methods_spec.rb +68 -0
- data/spec/chewy/index/observe/callback_spec.rb +139 -0
- data/spec/chewy/index/observe_spec.rb +143 -0
- data/spec/chewy/index/settings_spec.rb +3 -1
- data/spec/chewy/index/specification_spec.rb +20 -30
- data/spec/chewy/{type → index}/syncer_spec.rb +14 -19
- data/spec/chewy/{type → index}/witchcraft_spec.rb +20 -22
- data/spec/chewy/index/wrapper_spec.rb +100 -0
- data/spec/chewy/index_spec.rb +60 -105
- data/spec/chewy/journal_spec.rb +25 -74
- data/spec/chewy/minitest/helpers_spec.rb +123 -15
- data/spec/chewy/minitest/search_index_receiver_spec.rb +28 -30
- data/spec/chewy/multi_search_spec.rb +4 -5
- data/spec/chewy/rake_helper_spec.rb +315 -55
- data/spec/chewy/rspec/build_query_spec.rb +34 -0
- data/spec/chewy/rspec/helpers_spec.rb +61 -0
- data/spec/chewy/rspec/update_index_spec.rb +74 -71
- data/spec/chewy/runtime_spec.rb +2 -2
- data/spec/chewy/search/loader_spec.rb +19 -53
- data/spec/chewy/search/pagination/kaminari_examples.rb +4 -6
- data/spec/chewy/search/pagination/kaminari_spec.rb +2 -2
- data/spec/chewy/search/parameters/collapse_spec.rb +5 -0
- data/spec/chewy/search/parameters/ignore_unavailable_spec.rb +67 -0
- data/spec/chewy/search/parameters/indices_spec.rb +26 -117
- data/spec/chewy/search/parameters/knn_spec.rb +5 -0
- data/spec/chewy/search/parameters/order_spec.rb +18 -11
- data/spec/chewy/search/parameters/query_storage_examples.rb +67 -21
- data/spec/chewy/search/parameters/search_after_spec.rb +4 -1
- data/spec/chewy/search/parameters/source_spec.rb +8 -2
- data/spec/chewy/search/parameters/track_total_hits_spec.rb +5 -0
- data/spec/chewy/search/parameters_spec.rb +18 -4
- data/spec/chewy/search/query_proxy_spec.rb +68 -17
- data/spec/chewy/search/request_spec.rb +292 -110
- data/spec/chewy/search/response_spec.rb +12 -12
- data/spec/chewy/search/scrolling_spec.rb +10 -17
- data/spec/chewy/search_spec.rb +40 -34
- data/spec/chewy/stash_spec.rb +9 -21
- data/spec/chewy/strategy/active_job_spec.rb +16 -16
- data/spec/chewy/strategy/atomic_no_refresh_spec.rb +60 -0
- data/spec/chewy/strategy/atomic_spec.rb +9 -10
- data/spec/chewy/strategy/delayed_sidekiq_spec.rb +202 -0
- data/spec/chewy/strategy/lazy_sidekiq_spec.rb +214 -0
- data/spec/chewy/strategy/sidekiq_spec.rb +12 -12
- data/spec/chewy/strategy_spec.rb +19 -15
- data/spec/chewy_spec.rb +24 -107
- data/spec/spec_helper.rb +3 -22
- data/spec/support/active_record.rb +25 -7
- metadata +78 -339
- data/.circleci/config.yml +0 -240
- data/Appraisals +0 -81
- data/gemfiles/rails.5.2.activerecord.gemfile +0 -17
- data/gemfiles/rails.5.2.mongoid.6.4.gemfile +0 -17
- data/gemfiles/rails.6.0.activerecord.gemfile +0 -17
- data/gemfiles/sequel.4.45.gemfile +0 -11
- data/lib/chewy/backports/deep_dup.rb +0 -46
- data/lib/chewy/backports/duplicable.rb +0 -91
- data/lib/chewy/search/pagination/will_paginate.rb +0 -43
- data/lib/chewy/search/parameters/types.rb +0 -20
- data/lib/chewy/strategy/resque.rb +0 -27
- data/lib/chewy/strategy/shoryuken.rb +0 -40
- data/lib/chewy/type/actions.rb +0 -43
- data/lib/chewy/type/adapter/mongoid.rb +0 -67
- data/lib/chewy/type/adapter/sequel.rb +0 -93
- data/lib/chewy/type/crutch.rb +0 -32
- data/lib/chewy/type/import/bulk_builder.rb +0 -122
- data/lib/chewy/type/observe.rb +0 -82
- data/lib/chewy/type.rb +0 -120
- data/lib/sequel/plugins/chewy_observe.rb +0 -63
- data/spec/chewy/search/pagination/will_paginate_examples.rb +0 -63
- data/spec/chewy/search/pagination/will_paginate_spec.rb +0 -23
- data/spec/chewy/search/parameters/types_spec.rb +0 -5
- data/spec/chewy/strategy/resque_spec.rb +0 -46
- data/spec/chewy/strategy/shoryuken_spec.rb +0 -70
- data/spec/chewy/type/actions_spec.rb +0 -50
- data/spec/chewy/type/adapter/mongoid_spec.rb +0 -372
- data/spec/chewy/type/adapter/sequel_spec.rb +0 -472
- data/spec/chewy/type/import/bulk_builder_spec.rb +0 -194
- data/spec/chewy/type/mapping_spec.rb +0 -175
- data/spec/chewy/type/observe_spec.rb +0 -137
- data/spec/chewy/type/wrapper_spec.rb +0 -100
- data/spec/chewy/type_spec.rb +0 -55
- data/spec/support/mongoid.rb +0 -93
- 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::
|
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
|
-
|
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 =
|
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
|
-
|
31
|
+
index_class.define_singleton_method :bulk, bulk_mock
|
32
32
|
|
33
|
-
Chewy.strategy(strategy)
|
34
|
-
yield
|
35
|
-
end
|
33
|
+
Chewy.strategy(strategy, &block)
|
36
34
|
|
37
|
-
|
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
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
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::
|
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::
|
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::
|
14
|
-
# @param
|
15
|
-
def catch(bulk_params,
|
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(
|
20
|
+
mutation_for(index).deletes << update[:delete][:_id]
|
19
21
|
elsif update[:index]
|
20
|
-
mutation_for(
|
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::
|
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
|
-
|
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::
|
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
|
-
|
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
|
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,
|
56
|
-
indexes_for(
|
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
|
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,
|
64
|
-
deletes_for(
|
61
|
+
def deleted?(obj, index)
|
62
|
+
deletes_for(index).include? obj.id
|
65
63
|
end
|
66
64
|
|
67
|
-
# @return [Array<Chewy::
|
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
|
75
|
-
# @param
|
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(
|
78
|
-
@mutations[
|
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
|
-
|
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(
|
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
|
-
|
61
|
-
|
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
|
|