workarea-core 3.5.13 → 3.5.18
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/app/controllers/workarea/impersonation.rb +2 -1
- data/app/mailers/workarea/application_mailer.rb +4 -1
- data/app/middleware/workarea/application_middleware.rb +5 -2
- data/app/models/workarea/checkout.rb +7 -7
- data/app/models/workarea/data_file/csv.rb +9 -1
- data/app/models/workarea/inquiry.rb +2 -1
- data/app/models/workarea/inventory/sku.rb +2 -2
- data/app/models/workarea/metrics/user.rb +24 -8
- data/app/models/workarea/order.rb +10 -0
- data/app/models/workarea/payment.rb +1 -6
- data/app/models/workarea/search/storefront/category_query.rb +1 -1
- data/app/queries/workarea/search/admin_search.rb +4 -0
- data/app/queries/workarea/search/admin_sorting.rb +1 -1
- data/app/services/workarea/index_release_schedule_previews.rb +37 -0
- data/app/workers/workarea/index_release_schedule_change.rb +32 -0
- data/app/workers/workarea/publish_release.rb +1 -0
- data/config/initializers/00_configuration.rb +3 -2
- data/config/locales/en.yml +2 -0
- data/lib/generators/workarea/install/install_generator.rb +13 -0
- data/lib/generators/workarea/install/templates/initializer.rb.erb +1 -13
- data/lib/tasks/cache.rake +3 -33
- data/lib/tasks/help.rake +4 -43
- data/lib/tasks/insights.rake +3 -35
- data/lib/tasks/migrate.rake +3 -96
- data/lib/tasks/search.rake +6 -68
- data/lib/tasks/services.rake +4 -54
- data/lib/workarea/configuration.rb +11 -2
- data/lib/workarea/configuration/administrable_options.rb +1 -5
- data/lib/workarea/core.rb +1 -0
- data/lib/workarea/core/engine.rb +4 -0
- data/lib/workarea/ext/jbuilder/jbuilder_cache.rb +29 -0
- data/lib/workarea/tasks/cache.rb +43 -0
- data/lib/workarea/tasks/help.rb +55 -0
- data/lib/workarea/tasks/insights.rb +47 -0
- data/lib/workarea/tasks/migrate.rb +106 -0
- data/lib/workarea/tasks/search.rb +105 -0
- data/lib/workarea/tasks/services.rb +71 -0
- data/lib/workarea/version.rb +1 -1
- data/test/generators/workarea/install_generator_test.rb +6 -2
- data/test/mailers/workarea/application_mailer_test.rb +10 -0
- data/test/models/workarea/checkout_test.rb +57 -0
- data/test/models/workarea/data_file/import_test.rb +40 -0
- data/test/models/workarea/search/storefront/category_query_test.rb +11 -0
- data/test/queries/workarea/search/admin_search_test.rb +10 -0
- data/test/services/workarea/index_release_schedule_previews_test.rb +28 -0
- data/test/workers/workarea/{reindex_release_test.rb → index_release_schedule_change_test.rb} +30 -4
- data/test/workers/workarea/publish_release_test.rb +24 -0
- data/workarea-core.gemspec +2 -2
- metadata +17 -8
- data/app/workers/workarea/reindex_release.rb +0 -42
@@ -132,6 +132,46 @@ module Workarea
|
|
132
132
|
refute(import.error?)
|
133
133
|
assert(import.successful?)
|
134
134
|
end
|
135
|
+
|
136
|
+
def test_csv_embedded_changes_for_release
|
137
|
+
release = create_release
|
138
|
+
product = create_product(
|
139
|
+
name: 'Foo',
|
140
|
+
variants: [{ sku: '1', name: 'Bar' }, { sku: '2', name: 'Baz' }]
|
141
|
+
)
|
142
|
+
product.name = 'Foo Changed'
|
143
|
+
product.variants.first.name = 'Bar Changed'
|
144
|
+
|
145
|
+
import = create_import(
|
146
|
+
model_type: product.class.name,
|
147
|
+
file: create_tempfile(Csv.new.serialize(product), extension: 'csv'),
|
148
|
+
file_type: 'csv',
|
149
|
+
release_id: release.id
|
150
|
+
)
|
151
|
+
|
152
|
+
assert_equal('csv', import.file_type)
|
153
|
+
assert_nothing_raised { import.process! }
|
154
|
+
|
155
|
+
product.reload
|
156
|
+
assert_equal('Foo', product.name)
|
157
|
+
assert_equal('Bar', product.variants.first.name)
|
158
|
+
assert_equal('Baz', product.variants.second.name)
|
159
|
+
|
160
|
+
Release.with_current(release) do
|
161
|
+
product.reload
|
162
|
+
assert_equal('Foo Changed', product.name)
|
163
|
+
assert_equal('Bar Changed', product.variants.first.name)
|
164
|
+
assert_equal('Baz', product.variants.second.name)
|
165
|
+
end
|
166
|
+
|
167
|
+
import.reload
|
168
|
+
assert_equal(2, import.total)
|
169
|
+
assert_equal(2, import.succeeded)
|
170
|
+
assert_equal(0, import.failed)
|
171
|
+
assert(import.complete?)
|
172
|
+
refute(import.error?)
|
173
|
+
assert(import.successful?)
|
174
|
+
end
|
135
175
|
end
|
136
176
|
end
|
137
177
|
end
|
@@ -75,6 +75,17 @@ module Workarea
|
|
75
75
|
assert_equal([@category.id.to_s], CategoryQuery.find_by_product(@product))
|
76
76
|
end
|
77
77
|
end
|
78
|
+
|
79
|
+
def test_deleted_releases
|
80
|
+
release = create_release
|
81
|
+
release.as_current do
|
82
|
+
@category.product_rules.first.update!(value: 'bar')
|
83
|
+
end
|
84
|
+
|
85
|
+
release.destroy
|
86
|
+
CategoryQuery.new(@category).update
|
87
|
+
assert_equal([@category.id.to_s], CategoryQuery.find_by_product(@product))
|
88
|
+
end
|
78
89
|
end
|
79
90
|
end
|
80
91
|
end
|
@@ -81,6 +81,16 @@ module Workarea
|
|
81
81
|
assert_equal(results.reverse, search.results)
|
82
82
|
end
|
83
83
|
|
84
|
+
def test_default_sort_by_score
|
85
|
+
# Unlike other admin searches (primarily indexes), we want searching to
|
86
|
+
# default sort by score. Testing scores directly is unreliable so just
|
87
|
+
# do a simple check here.
|
88
|
+
assert_equal(
|
89
|
+
[{ _score: :desc }, { updated_at: :desc }],
|
90
|
+
AdminSearch.new.default_admin_sort
|
91
|
+
)
|
92
|
+
end
|
93
|
+
|
84
94
|
def test_selected_sorting
|
85
95
|
results = [
|
86
96
|
create_product(name: 'A', variants: []),
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Workarea
|
4
|
+
class IndexReleaseSchedulePreviewsTest < TestCase
|
5
|
+
def test_affected_releases
|
6
|
+
release = create_release
|
7
|
+
results = IndexReleaseSchedulePreviews.new(release: release).affected_releases
|
8
|
+
assert_equal([release], results)
|
9
|
+
|
10
|
+
a = create_release(publish_at: 1.week.from_now)
|
11
|
+
b = create_release(publish_at: 2.weeks.from_now)
|
12
|
+
c = create_release(publish_at: 4.weeks.from_now)
|
13
|
+
assert_equal([a, b, c], IndexReleaseSchedulePreviews.new.affected_releases)
|
14
|
+
|
15
|
+
results = IndexReleaseSchedulePreviews
|
16
|
+
.new(starts_at: 3.days.from_now, ends_at: 17.days.from_now)
|
17
|
+
.affected_releases
|
18
|
+
|
19
|
+
assert_equal([a, b], results)
|
20
|
+
|
21
|
+
results = IndexReleaseSchedulePreviews
|
22
|
+
.new(release: release, starts_at: 3.days.from_now, ends_at: 10.days.from_now)
|
23
|
+
.affected_releases
|
24
|
+
|
25
|
+
assert_equal([a, release], results)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/test/workers/workarea/{reindex_release_test.rb → index_release_schedule_change_test.rb}
RENAMED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
module Workarea
|
4
|
-
class
|
4
|
+
class IndexReleaseScheduleChangeTest < TestCase
|
5
5
|
include TestCase::SearchIndexing
|
6
6
|
|
7
7
|
setup :set_product
|
@@ -26,7 +26,9 @@ module Workarea
|
|
26
26
|
previous_publish_at = b.publish_at
|
27
27
|
b.set(publish_at: 5.weeks.from_now)
|
28
28
|
|
29
|
-
Sidekiq::Callbacks.enable(IndexProduct)
|
29
|
+
Sidekiq::Callbacks.enable(IndexProduct) do
|
30
|
+
IndexReleaseScheduleChange.new.perform(b.id, previous_publish_at, b.publish_at)
|
31
|
+
end
|
30
32
|
|
31
33
|
a.as_current { assert_empty(Search::ProductSearch.new(q: 'bar').results.pluck(:model)) }
|
32
34
|
b.as_current { assert_equal([@product], Search::ProductSearch.new(q: 'bar').results.pluck(:model)) }
|
@@ -49,7 +51,9 @@ module Workarea
|
|
49
51
|
previous_publish_at = b.publish_at
|
50
52
|
b.set(publish_at: nil)
|
51
53
|
|
52
|
-
Sidekiq::Callbacks.enable(IndexProduct)
|
54
|
+
Sidekiq::Callbacks.enable(IndexProduct) do
|
55
|
+
IndexReleaseScheduleChange.new.perform(b.id, previous_publish_at, nil)
|
56
|
+
end
|
53
57
|
|
54
58
|
a.as_current { assert_empty(Search::ProductSearch.new(q: 'bar').results.pluck(:model)) }
|
55
59
|
b.as_current { assert_equal([@product], Search::ProductSearch.new(q: 'bar').results.pluck(:model)) }
|
@@ -71,11 +75,33 @@ module Workarea
|
|
71
75
|
# Changing publish_at via `update` causes the release to publish due to Sidekiq inline
|
72
76
|
b.set(publish_at: 2.weeks.from_now)
|
73
77
|
|
74
|
-
Sidekiq::Callbacks.enable(IndexProduct)
|
78
|
+
Sidekiq::Callbacks.enable(IndexProduct) do
|
79
|
+
IndexReleaseScheduleChange.new.perform(b.id, nil, b.publish_at)
|
80
|
+
end
|
75
81
|
|
76
82
|
a.as_current { assert_empty(Search::ProductSearch.new(q: 'bar').results.pluck(:model)) }
|
77
83
|
b.as_current { assert_equal([@product], Search::ProductSearch.new(q: 'bar').results.pluck(:model)) }
|
78
84
|
c.as_current { assert_equal([@product], Search::ProductSearch.new(q: 'bar').results.pluck(:model)) }
|
79
85
|
end
|
86
|
+
|
87
|
+
def test_destroyed
|
88
|
+
a = create_release(name: 'A', publish_at: 1.week.from_now)
|
89
|
+
b = create_release(name: 'B', publish_at: 2.weeks.from_now)
|
90
|
+
c = create_release(name: 'C', publish_at: 4.weeks.from_now)
|
91
|
+
|
92
|
+
b.as_current { @product.update!(name: 'Bar') }
|
93
|
+
IndexProduct.perform(@product)
|
94
|
+
|
95
|
+
a.as_current { assert_empty(Search::ProductSearch.new(q: 'bar').results.pluck(:model)) }
|
96
|
+
b.as_current { assert_equal([@product], Search::ProductSearch.new(q: 'bar').results.pluck(:model)) }
|
97
|
+
c.as_current { assert_equal([@product], Search::ProductSearch.new(q: 'bar').results.pluck(:model)) }
|
98
|
+
|
99
|
+
Sidekiq::Callbacks.enable(IndexReleaseScheduleChange, IndexProduct) do
|
100
|
+
b.destroy
|
101
|
+
end
|
102
|
+
|
103
|
+
a.as_current { assert_empty(Search::ProductSearch.new(q: 'bar').results.pluck(:model)) }
|
104
|
+
c.as_current { assert_empty(Search::ProductSearch.new(q: 'bar').results.pluck(:model)) }
|
105
|
+
end
|
80
106
|
end
|
81
107
|
end
|
@@ -2,6 +2,8 @@ require 'test_helper'
|
|
2
2
|
|
3
3
|
module Workarea
|
4
4
|
class PublishReleaseTest < TestCase
|
5
|
+
include TestCase::SearchIndexing
|
6
|
+
|
5
7
|
def test_publishes_the_release
|
6
8
|
release = create_release
|
7
9
|
PublishRelease.new.perform(release.id)
|
@@ -16,5 +18,27 @@ module Workarea
|
|
16
18
|
assert_equal(1, Mongoid::AuditLog::Entry.count)
|
17
19
|
assert(Mongoid::AuditLog::Entry.first.modifier.system?)
|
18
20
|
end
|
21
|
+
|
22
|
+
def test_reindexes_release_schedule
|
23
|
+
product = create_product(name: 'Foo')
|
24
|
+
|
25
|
+
a = create_release(publish_at: 1.week.from_now)
|
26
|
+
b = create_release(publish_at: 2.weeks.from_now)
|
27
|
+
c = create_release(publish_at: 4.weeks.from_now)
|
28
|
+
|
29
|
+
b.as_current { product.update!(name: 'Bar') }
|
30
|
+
IndexProduct.perform(product)
|
31
|
+
|
32
|
+
assert_empty(Search::ProductSearch.new(q: 'bar').results.pluck(:model))
|
33
|
+
a.as_current { assert_empty(Search::ProductSearch.new(q: 'bar').results.pluck(:model)) }
|
34
|
+
b.as_current { assert_equal([product], Search::ProductSearch.new(q: 'bar').results.pluck(:model)) }
|
35
|
+
c.as_current { assert_equal([product], Search::ProductSearch.new(q: 'bar').results.pluck(:model)) }
|
36
|
+
|
37
|
+
Sidekiq::Callbacks.enable(IndexProduct) { PublishRelease.new.perform(b.id) }
|
38
|
+
|
39
|
+
assert_equal([product], Search::ProductSearch.new(q: 'bar').results.pluck(:model))
|
40
|
+
a.as_current { assert_equal([product], Search::ProductSearch.new(q: 'bar').results.pluck(:model)) }
|
41
|
+
c.as_current { assert_equal([product], Search::ProductSearch.new(q: 'bar').results.pluck(:model)) }
|
42
|
+
end
|
19
43
|
end
|
20
44
|
end
|
data/workarea-core.gemspec
CHANGED
@@ -91,10 +91,10 @@ Gem::Specification.new do |s|
|
|
91
91
|
s.add_dependency 'loofah', '~> 2.3.1'
|
92
92
|
s.add_dependency 'referer-parser', '~> 0.3.0'
|
93
93
|
s.add_dependency 'serviceworker-rails', '~> 0.5.5'
|
94
|
-
s.add_dependency 'chartkick', '~> 3.
|
94
|
+
s.add_dependency 'chartkick', '~> 3.4.0'
|
95
95
|
s.add_dependency 'browser', '~> 2.6.1'
|
96
96
|
s.add_dependency 'puma', '>= 4.3.1'
|
97
|
-
s.add_dependency 'rack', '>= 2.
|
97
|
+
s.add_dependency 'rack' , '>= 2.1.4'
|
98
98
|
|
99
99
|
# HACK for vendoring active_shipping
|
100
100
|
s.add_dependency 'active_utils', '~> 3.3.1'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: workarea-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.5.
|
4
|
+
version: 3.5.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Crouse
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-09-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -1100,14 +1100,14 @@ dependencies:
|
|
1100
1100
|
requirements:
|
1101
1101
|
- - "~>"
|
1102
1102
|
- !ruby/object:Gem::Version
|
1103
|
-
version: 3.
|
1103
|
+
version: 3.4.0
|
1104
1104
|
type: :runtime
|
1105
1105
|
prerelease: false
|
1106
1106
|
version_requirements: !ruby/object:Gem::Requirement
|
1107
1107
|
requirements:
|
1108
1108
|
- - "~>"
|
1109
1109
|
- !ruby/object:Gem::Version
|
1110
|
-
version: 3.
|
1110
|
+
version: 3.4.0
|
1111
1111
|
- !ruby/object:Gem::Dependency
|
1112
1112
|
name: browser
|
1113
1113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -1142,14 +1142,14 @@ dependencies:
|
|
1142
1142
|
requirements:
|
1143
1143
|
- - ">="
|
1144
1144
|
- !ruby/object:Gem::Version
|
1145
|
-
version: 2.
|
1145
|
+
version: 2.1.4
|
1146
1146
|
type: :runtime
|
1147
1147
|
prerelease: false
|
1148
1148
|
version_requirements: !ruby/object:Gem::Requirement
|
1149
1149
|
requirements:
|
1150
1150
|
- - ">="
|
1151
1151
|
- !ruby/object:Gem::Version
|
1152
|
-
version: 2.
|
1152
|
+
version: 2.1.4
|
1153
1153
|
- !ruby/object:Gem::Dependency
|
1154
1154
|
name: active_utils
|
1155
1155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -1734,6 +1734,7 @@ files:
|
|
1734
1734
|
- app/services/workarea/direct_upload/product_image.rb
|
1735
1735
|
- app/services/workarea/export_report.rb
|
1736
1736
|
- app/services/workarea/hash_update.rb
|
1737
|
+
- app/services/workarea/index_release_schedule_previews.rb
|
1737
1738
|
- app/services/workarea/inventory_adjustment.rb
|
1738
1739
|
- app/services/workarea/login.rb
|
1739
1740
|
- app/services/workarea/new_discount.rb
|
@@ -1771,6 +1772,7 @@ files:
|
|
1771
1772
|
- app/workers/workarea/index_product.rb
|
1772
1773
|
- app/workers/workarea/index_product_children.rb
|
1773
1774
|
- app/workers/workarea/index_product_rule.rb
|
1775
|
+
- app/workers/workarea/index_release_schedule_change.rb
|
1774
1776
|
- app/workers/workarea/index_search_customizations.rb
|
1775
1777
|
- app/workers/workarea/index_skus.rb
|
1776
1778
|
- app/workers/workarea/keep_product_index_fresh.rb
|
@@ -1785,7 +1787,6 @@ files:
|
|
1785
1787
|
- app/workers/workarea/publish_bulk_action.rb
|
1786
1788
|
- app/workers/workarea/publish_release.rb
|
1787
1789
|
- app/workers/workarea/redirect_navigable_slugs.rb
|
1788
|
-
- app/workers/workarea/reindex_release.rb
|
1789
1790
|
- app/workers/workarea/save_metrics.rb
|
1790
1791
|
- app/workers/workarea/save_order_cancellation_metrics.rb
|
1791
1792
|
- app/workers/workarea/save_order_metrics.rb
|
@@ -1945,6 +1946,7 @@ files:
|
|
1945
1946
|
- lib/workarea/ext/freedom_patches/string.rb
|
1946
1947
|
- lib/workarea/ext/freedom_patches/uri.rb
|
1947
1948
|
- lib/workarea/ext/jbuilder/jbuilder_append_partials.rb
|
1949
|
+
- lib/workarea/ext/jbuilder/jbuilder_cache.rb
|
1948
1950
|
- lib/workarea/ext/mongoid/audit_log_entry.decorator
|
1949
1951
|
- lib/workarea/ext/mongoid/each_by.rb
|
1950
1952
|
- lib/workarea/ext/mongoid/embedded_children.rb
|
@@ -1988,6 +1990,12 @@ files:
|
|
1988
1990
|
- lib/workarea/string_id.rb
|
1989
1991
|
- lib/workarea/svg_asset_finder.rb
|
1990
1992
|
- lib/workarea/swappable_list.rb
|
1993
|
+
- lib/workarea/tasks/cache.rb
|
1994
|
+
- lib/workarea/tasks/help.rb
|
1995
|
+
- lib/workarea/tasks/insights.rb
|
1996
|
+
- lib/workarea/tasks/migrate.rb
|
1997
|
+
- lib/workarea/tasks/search.rb
|
1998
|
+
- lib/workarea/tasks/services.rb
|
1991
1999
|
- lib/workarea/url_token.rb
|
1992
2000
|
- lib/workarea/validators/email_validator.rb
|
1993
2001
|
- lib/workarea/validators/ip_address_validator.rb
|
@@ -2442,6 +2450,7 @@ files:
|
|
2442
2450
|
- test/services/workarea/direct_upload_test.rb
|
2443
2451
|
- test/services/workarea/export_report_test.rb
|
2444
2452
|
- test/services/workarea/hash_update_test.rb
|
2453
|
+
- test/services/workarea/index_release_schedule_previews_test.rb
|
2445
2454
|
- test/services/workarea/inventory_adjustment_test.rb
|
2446
2455
|
- test/services/workarea/login_test.rb
|
2447
2456
|
- test/services/workarea/order_merge_test.rb
|
@@ -2474,6 +2483,7 @@ files:
|
|
2474
2483
|
- test/workers/workarea/index_payment_transactions_test.rb
|
2475
2484
|
- test/workers/workarea/index_product_rule_test.rb
|
2476
2485
|
- test/workers/workarea/index_product_test.rb
|
2486
|
+
- test/workers/workarea/index_release_schedule_change_test.rb
|
2477
2487
|
- test/workers/workarea/index_skus_test.rb
|
2478
2488
|
- test/workers/workarea/keep_product_index_fresh_test.rb
|
2479
2489
|
- test/workers/workarea/mark_discounts_as_redeemed_test.rb
|
@@ -2484,7 +2494,6 @@ files:
|
|
2484
2494
|
- test/workers/workarea/publish_bulk_action_test.rb
|
2485
2495
|
- test/workers/workarea/publish_release_test.rb
|
2486
2496
|
- test/workers/workarea/redirect_navigable_slugs_test.rb
|
2487
|
-
- test/workers/workarea/reindex_release_test.rb
|
2488
2497
|
- test/workers/workarea/save_order_metrics_test.rb
|
2489
2498
|
- test/workers/workarea/save_user_order_details_test.rb
|
2490
2499
|
- test/workers/workarea/send_refund_email_test.rb
|
@@ -1,42 +0,0 @@
|
|
1
|
-
module Workarea
|
2
|
-
class ReindexRelease
|
3
|
-
include Sidekiq::Worker
|
4
|
-
include Sidekiq::CallbacksWorker
|
5
|
-
|
6
|
-
sidekiq_options(
|
7
|
-
enqueue_on: {
|
8
|
-
Release => :save,
|
9
|
-
only_if: -> { publish_at_changed? },
|
10
|
-
with: -> { [id, publish_at_was, publish_at] }
|
11
|
-
},
|
12
|
-
queue: 'high'
|
13
|
-
)
|
14
|
-
|
15
|
-
def perform(id, previous_publish_at, new_publish_at)
|
16
|
-
rescheduled_release = Release.find(id)
|
17
|
-
earlier, later = if previous_publish_at.present? && new_publish_at.present?
|
18
|
-
[previous_publish_at, new_publish_at].sort
|
19
|
-
elsif previous_publish_at.present?
|
20
|
-
[previous_publish_at, nil]
|
21
|
-
else
|
22
|
-
[new_publish_at, nil]
|
23
|
-
end
|
24
|
-
|
25
|
-
affected_releases = Release.scheduled(after: earlier, before: later).includes(:changesets).to_a
|
26
|
-
affected_releases += [rescheduled_release]
|
27
|
-
affected_releases.uniq!
|
28
|
-
|
29
|
-
affected_models = affected_releases.flat_map(&:changesets).flat_map(&:releasable)
|
30
|
-
|
31
|
-
affected_releases.each do |release|
|
32
|
-
affected_models.each do |releasable|
|
33
|
-
Search::Storefront.new(releasable.in_release(release)).destroy
|
34
|
-
|
35
|
-
# Different models have different indexing workers, running callbacks
|
36
|
-
# ensures the appropriate worker is triggered
|
37
|
-
releasable.run_callbacks(:save_release_changes)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|