spree_core 5.4.4 → 5.5.0.rc1

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 (233) hide show
  1. checksums.yaml +4 -4
  2. data/app/helpers/spree/base_helper.rb +0 -82
  3. data/app/helpers/spree/currency_helper.rb +0 -12
  4. data/app/helpers/spree/products_helper.rb +0 -8
  5. data/app/jobs/spree/base_job.rb +18 -0
  6. data/app/jobs/spree/events/subscriber_job.rb +2 -1
  7. data/app/jobs/spree/exports/generate_job.rb +11 -0
  8. data/app/jobs/spree/images/save_from_url_job.rb +23 -8
  9. data/app/jobs/spree/imports/assign_tags_job.rb +11 -0
  10. data/app/jobs/spree/imports/base_job.rb +15 -0
  11. data/app/jobs/spree/imports/create_categories_job.rb +37 -0
  12. data/app/jobs/spree/imports/create_rows_job.rb +1 -3
  13. data/app/jobs/spree/imports/process_group_job.rb +8 -6
  14. data/app/jobs/spree/imports/process_rows_job.rb +1 -3
  15. data/app/jobs/spree/media/migrate_product_assets_job.rb +83 -0
  16. data/app/jobs/spree/products/refresh_metrics_job.rb +15 -4
  17. data/app/jobs/spree/reports/generate_job.rb +11 -0
  18. data/app/jobs/spree/search_provider/index_job.rb +5 -1
  19. data/app/jobs/spree/search_provider/remove_job.rb +4 -0
  20. data/app/jobs/spree/stock_reservations/expire_job.rb +11 -0
  21. data/app/models/concerns/spree/calculated_adjustments.rb +34 -1
  22. data/app/models/concerns/spree/display_on.rb +31 -0
  23. data/app/models/concerns/spree/metafields.rb +167 -5
  24. data/app/models/concerns/spree/preference_schema.rb +191 -0
  25. data/app/models/concerns/spree/prefixed_id.rb +94 -11
  26. data/app/models/concerns/spree/product_scopes.rb +36 -17
  27. data/app/models/concerns/spree/ransackable_attributes.rb +5 -1
  28. data/app/models/concerns/spree/search_indexable.rb +8 -7
  29. data/app/models/concerns/spree/searchable.rb +11 -2
  30. data/app/models/concerns/spree/stores/channels.rb +20 -0
  31. data/app/models/concerns/spree/stores/markets.rb +21 -5
  32. data/app/models/concerns/spree/typed_associations.rb +120 -0
  33. data/app/models/concerns/spree/user_methods.rb +71 -12
  34. data/app/models/spree/ability.rb +4 -117
  35. data/app/models/spree/api_key.rb +53 -0
  36. data/app/models/spree/asset.rb +28 -5
  37. data/app/models/spree/authentication/strategy_registry.rb +72 -0
  38. data/app/models/spree/base.rb +18 -1
  39. data/app/models/spree/channel.rb +159 -0
  40. data/app/models/spree/country.rb +2 -0
  41. data/app/models/spree/current.rb +5 -1
  42. data/app/models/spree/custom_field.rb +9 -0
  43. data/app/models/spree/custom_field_definition.rb +7 -0
  44. data/app/models/spree/customer_group.rb +8 -2
  45. data/app/models/spree/export.rb +30 -3
  46. data/app/models/spree/gateway.rb +25 -0
  47. data/app/models/spree/gift_card.rb +1 -1
  48. data/app/models/spree/gift_card_batch.rb +4 -1
  49. data/app/models/spree/import.rb +5 -0
  50. data/app/models/spree/import_row.rb +12 -0
  51. data/app/models/spree/line_item.rb +6 -1
  52. data/app/models/spree/market.rb +32 -1
  53. data/app/models/spree/metafield.rb +38 -0
  54. data/app/models/spree/metafield_definition.rb +29 -6
  55. data/app/models/spree/metafields/json.rb +10 -0
  56. data/app/models/spree/newsletter_subscriber.rb +19 -3
  57. data/app/models/spree/option_type.rb +48 -7
  58. data/app/models/spree/order/checkout.rb +3 -3
  59. data/app/models/spree/order.rb +102 -6
  60. data/app/models/spree/order_approval.rb +19 -0
  61. data/app/models/spree/order_cancellation.rb +19 -0
  62. data/app/models/spree/order_routing/has_strategy_preference.rb +28 -0
  63. data/app/models/spree/order_routing/rules/default_location.rb +16 -0
  64. data/app/models/spree/order_routing/rules/minimize_splits.rb +45 -0
  65. data/app/models/spree/order_routing/rules/preferred_location.rb +22 -0
  66. data/app/models/spree/order_routing/strategy/base.rb +47 -0
  67. data/app/models/spree/order_routing/strategy/legacy.rb +33 -0
  68. data/app/models/spree/order_routing/strategy/reducer.rb +68 -0
  69. data/app/models/spree/order_routing/strategy/rules.rb +81 -0
  70. data/app/models/spree/order_routing_rule.rb +75 -0
  71. data/app/models/spree/permission_sets/configuration_management.rb +16 -0
  72. data/app/models/spree/permission_sets/product_display.rb +2 -0
  73. data/app/models/spree/permission_sets/product_management.rb +2 -0
  74. data/app/models/spree/price.rb +14 -1
  75. data/app/models/spree/price_list.rb +129 -17
  76. data/app/models/spree/price_rule.rb +11 -1
  77. data/app/models/spree/price_rules/customer_group_rule.rb +15 -1
  78. data/app/models/spree/price_rules/market_rule.rb +16 -1
  79. data/app/models/spree/price_rules/user_rule.rb +21 -2
  80. data/app/models/spree/product/channels.rb +149 -0
  81. data/app/models/spree/product/legacy_multi_store_support.rb +40 -0
  82. data/app/models/spree/product/slugs.rb +1 -1
  83. data/app/models/spree/product.rb +172 -31
  84. data/app/models/spree/product_publication.rb +43 -0
  85. data/app/models/spree/promotion/actions/create_adjustment.rb +4 -0
  86. data/app/models/spree/promotion/actions/create_item_adjustments.rb +4 -0
  87. data/app/models/spree/promotion/actions/create_line_items.rb +32 -14
  88. data/app/models/spree/promotion/rules/country.rb +40 -18
  89. data/app/models/spree/promotion/rules/customer_group.rb +10 -1
  90. data/app/models/spree/promotion/rules/product.rb +4 -0
  91. data/app/models/spree/promotion/rules/taxon.rb +24 -1
  92. data/app/models/spree/promotion/rules/user.rb +21 -0
  93. data/app/models/spree/promotion/rules/user_logged_in.rb +6 -0
  94. data/app/models/spree/promotion.rb +22 -1
  95. data/app/models/spree/promotion_action.rb +17 -11
  96. data/app/models/spree/promotion_rule.rb +17 -18
  97. data/app/models/spree/search_provider/meilisearch.rb +12 -2
  98. data/app/models/spree/stock/availability_validator.rb +1 -1
  99. data/app/models/spree/stock/quantifier.rb +89 -9
  100. data/app/models/spree/stock_item.rb +36 -0
  101. data/app/models/spree/stock_location.rb +52 -0
  102. data/app/models/spree/stock_reservation.rb +38 -0
  103. data/app/models/spree/stock_reservations/insufficient_stock_error.rb +12 -0
  104. data/app/models/spree/store.rb +18 -72
  105. data/app/models/spree/store_credit.rb +0 -8
  106. data/app/models/spree/store_product.rb +11 -23
  107. data/app/models/spree/taxon.rb +0 -5
  108. data/app/models/spree/user_identity.rb +1 -2
  109. data/app/models/spree/variant.rb +132 -18
  110. data/app/models/spree/variant_media.rb +46 -0
  111. data/app/models/spree/webhook_delivery.rb +1 -23
  112. data/app/models/spree/webhook_endpoint.rb +24 -0
  113. data/app/models/spree/wished_item.rb +0 -13
  114. data/app/presenters/spree/csv/product_variant_presenter.rb +23 -3
  115. data/app/presenters/spree/data_feeds/google_presenter.rb +1 -28
  116. data/app/presenters/spree/search_provider/product_presenter.rb +11 -4
  117. data/app/presenters/spree/variant_presenter.rb +4 -3
  118. data/app/services/spree/addresses/update.rb +6 -8
  119. data/app/services/spree/cart/add_item.rb +10 -0
  120. data/app/services/spree/cart/empty.rb +2 -0
  121. data/app/services/spree/cart/remove_line_item.rb +10 -0
  122. data/app/services/spree/cart/remove_out_of_stock_items.rb +1 -1
  123. data/app/services/spree/cart/set_quantity.rb +10 -0
  124. data/app/services/spree/carts/complete.rb +1 -0
  125. data/app/services/spree/carts/create.rb +1 -0
  126. data/app/services/spree/carts/update.rb +18 -2
  127. data/app/services/spree/carts/upsert_items.rb +6 -6
  128. data/app/services/spree/imports/row_processors/customer.rb +4 -1
  129. data/app/services/spree/imports/row_processors/product_variant.rb +95 -57
  130. data/app/services/spree/newsletter/link_user.rb +53 -0
  131. data/app/services/spree/newsletter/subscribe.rb +31 -9
  132. data/app/services/spree/orders/approve.rb +27 -6
  133. data/app/services/spree/orders/build_shipments.rb +29 -0
  134. data/app/services/spree/orders/cancel.rb +34 -3
  135. data/app/services/spree/orders/complete.rb +53 -0
  136. data/app/services/spree/orders/create.rb +156 -0
  137. data/app/services/spree/orders/update.rb +51 -0
  138. data/app/services/spree/orders/upsert_items.rb +70 -0
  139. data/app/services/spree/prices/bulk_upsert.rb +201 -0
  140. data/app/services/spree/products/duplicator.rb +1 -1
  141. data/app/services/spree/products/prepare_nested_attributes.rb +2 -30
  142. data/app/services/spree/sample_data/loader.rb +30 -0
  143. data/app/services/spree/stock_reservations/extend.rb +19 -0
  144. data/app/services/spree/stock_reservations/release.rb +12 -0
  145. data/app/services/spree/stock_reservations/reserve.rb +103 -0
  146. data/app/services/spree/taxons/remove_products.rb +7 -1
  147. data/app/subscribers/spree/product_metrics_subscriber.rb +3 -7
  148. data/app/views/spree/invitation_mailer/invitation_email.html.erb +4 -0
  149. data/config/locales/en.yml +27 -10
  150. data/config/routes.rb +9 -0
  151. data/db/migrate/20260429000001_create_spree_order_cancellations.rb +25 -0
  152. data/db/migrate/20260429000002_create_spree_order_approvals.rb +22 -0
  153. data/db/migrate/20260429000003_add_status_to_spree_orders.rb +6 -0
  154. data/db/migrate/20260429000004_add_scopes_to_spree_api_keys.rb +11 -0
  155. data/db/migrate/20260501000001_create_spree_stock_reservations.rb +19 -0
  156. data/db/migrate/20260507162651_create_spree_variant_media.rb +23 -0
  157. data/db/migrate/20260508175303_add_pickup_to_spree_stock_locations.rb +12 -0
  158. data/db/migrate/20260508204040_create_spree_channels.rb +18 -0
  159. data/db/migrate/20260508204041_create_spree_order_routing_rules.rb +18 -0
  160. data/db/migrate/20260508204042_add_preferred_stock_location_to_spree_orders.rb +5 -0
  161. data/db/migrate/20260508204043_add_channel_id_to_spree_orders.rb +10 -0
  162. data/db/migrate/20260511000001_backfill_status_on_spree_orders.rb +57 -0
  163. data/db/migrate/20260515000001_add_store_id_to_spree_newsletter_subscribers.rb +25 -0
  164. data/db/migrate/20260529000001_add_unique_index_to_spree_price_rules.rb +41 -0
  165. data/db/migrate/20260529000002_add_unique_index_to_spree_promotion_rules.rb +37 -0
  166. data/db/migrate/20260601000001_create_spree_product_publications.rb +14 -0
  167. data/db/migrate/20260601000002_add_store_id_to_spree_products.rb +16 -0
  168. data/db/migrate/20260602000001_add_default_to_spree_channels.rb +14 -0
  169. data/db/sample_data/channels.rb +12 -0
  170. data/db/sample_data/orders.rb +1 -1
  171. data/db/sample_data/products.csv +212 -212
  172. data/lib/generators/spree/api_resource/api_resource_generator.rb +353 -0
  173. data/lib/generators/spree/api_resource/templates/admin_controller.rb.tt +23 -0
  174. data/lib/generators/spree/api_resource/templates/admin_controller_spec.rb.tt +59 -0
  175. data/lib/generators/spree/api_resource/templates/admin_serializer.rb.tt +11 -0
  176. data/lib/generators/spree/api_resource/templates/factory.rb.tt +26 -0
  177. data/lib/generators/spree/api_resource/templates/store_aliased_serializer.rb.tt +12 -0
  178. data/lib/generators/spree/api_resource/templates/store_controller.rb.tt +31 -0
  179. data/lib/generators/spree/api_resource/templates/store_controller_spec.rb.tt +61 -0
  180. data/lib/generators/spree/api_resource/templates/store_serializer.rb.tt +14 -0
  181. data/lib/generators/spree/controller_decorator/controller_decorator_generator.rb +66 -0
  182. data/lib/generators/spree/controller_decorator/templates/controller_decorator.rb.tt +25 -0
  183. data/lib/generators/spree/model/model_generator.rb +73 -7
  184. data/lib/generators/spree/model/templates/create_table_migration.rb.tt +40 -0
  185. data/lib/generators/spree/model/templates/model.rb.tt +28 -2
  186. data/lib/spree/core/configuration.rb +7 -0
  187. data/lib/spree/core/controller_helpers/auth.rb +0 -12
  188. data/lib/spree/core/controller_helpers/currency.rb +0 -17
  189. data/lib/spree/core/controller_helpers/order.rb +0 -19
  190. data/lib/spree/core/dependencies.rb +5 -2
  191. data/lib/spree/core/engine.rb +54 -7
  192. data/lib/spree/core/permission_configuration.rb +15 -0
  193. data/lib/spree/core/preferences/masking.rb +47 -0
  194. data/lib/spree/core/preferences/preferable_class_methods.rb +7 -1
  195. data/lib/spree/core/version.rb +1 -1
  196. data/lib/spree/core.rb +56 -5
  197. data/lib/spree/permitted_attributes.rb +9 -7
  198. data/lib/spree/testing_support/factories/address_factory.rb +16 -9
  199. data/lib/spree/testing_support/factories/api_key_factory.rb +1 -0
  200. data/lib/spree/testing_support/factories/channel_factory.rb +8 -0
  201. data/lib/spree/testing_support/factories/line_item_factory.rb +2 -8
  202. data/lib/spree/testing_support/factories/newsletter_subscriber_factory.rb +2 -0
  203. data/lib/spree/testing_support/factories/product_factory.rb +16 -7
  204. data/lib/spree/testing_support/factories/product_publication_factory.rb +6 -0
  205. data/lib/spree/testing_support/factories/refresh_token_factory.rb +15 -0
  206. data/lib/spree/testing_support/factories/stock_location_factory.rb +2 -2
  207. data/lib/spree/testing_support/factories/stock_reservation_factory.rb +31 -0
  208. data/lib/spree/testing_support/factories/variant_factory.rb +3 -3
  209. data/lib/spree/testing_support/order_walkthrough.rb +1 -1
  210. data/lib/spree/testing_support/store.rb +10 -0
  211. data/lib/spree/upgrades/5_4_to_5_5/manifest.yml +53 -0
  212. data/lib/tasks/channels.rake +94 -0
  213. data/lib/tasks/core.rake +1 -0
  214. data/lib/tasks/media.rake +27 -0
  215. data/lib/tasks/products.rake +4 -6
  216. data/lib/tasks/publications.rake +60 -0
  217. data/lib/tasks/upgrade.rake +211 -0
  218. metadata +83 -19
  219. data/app/finders/spree/variants/visible_finder.rb +0 -23
  220. data/app/models/concerns/spree/webhook_payload_redaction.rb +0 -88
  221. data/app/paginators/spree/shared/paginate.rb +0 -30
  222. data/app/presenters/spree/filters/price_presenter.rb +0 -23
  223. data/app/presenters/spree/filters/price_range_presenter.rb +0 -30
  224. data/app/presenters/spree/filters/quantified_price_range_presenter.rb +0 -45
  225. data/app/presenters/spree/product_summary_presenter.rb +0 -27
  226. data/app/presenters/spree/variants/options_presenter.rb +0 -82
  227. data/app/services/spree/classifications/reposition.rb +0 -23
  228. data/app/sorters/spree/orders/sort.rb +0 -10
  229. data/lib/spree/core/controller_helpers/common.rb +0 -14
  230. data/lib/spree/core/token_generator.rb +0 -23
  231. data/lib/spree/database_type_utilities.rb +0 -22
  232. data/lib/spree/testing_support/bar_ability.rb +0 -14
  233. data/lib/spree/testing_support/factories/store_product_factory.rb +0 -6
@@ -0,0 +1,211 @@
1
+ # frozen_string_literal: true
2
+
3
+ # spree:upgrade — runs the data-backfill rake tasks shipped with the
4
+ # currently-installed spree_core. Intended to run on production (or any
5
+ # environment) after `bundle update` + `db:migrate` have already happened
6
+ # in your deploy pipeline.
7
+ #
8
+ # Walks EVERY upgrade manifest whose `to` is ≤ the installed minor version,
9
+ # in ascending order. So an app that's been on 5.3 and jumps straight to
10
+ # 5.5 still gets the 5.3→5.4 data backfills before the 5.4→5.5 ones.
11
+ # Every step in every manifest is required to be idempotent — re-running
12
+ # the task on an already-upgraded app is a safe no-op.
13
+ #
14
+ # Usage:
15
+ # bundle exec rake spree:upgrade # walk all eligible manifests
16
+ # bundle exec rake spree:upgrade DRY_RUN=1 # print plan, run nothing
17
+ # bundle exec rake spree:upgrade STEP=channels # run one step by id (any manifest)
18
+ # bundle exec rake spree:upgrade TO=5.4 # cap the walk at this version
19
+ #
20
+ # Manifests live alongside this file at lib/spree/upgrades/<from>_to_<to>/
21
+ # manifest.yml and ship inside the spree_core gem.
22
+
23
+ require 'yaml'
24
+
25
+ namespace :spree do
26
+ desc 'Run the post-deploy upgrade tasks for the installed Spree version'
27
+ task upgrade: :environment do
28
+ Spree::Upgrade::Runner.new(
29
+ target_version: ENV['TO'],
30
+ step_id: ENV['STEP'],
31
+ dry_run: ENV['DRY_RUN'] == '1'
32
+ ).call
33
+ end
34
+ end
35
+
36
+ module Spree
37
+ module Upgrade
38
+ # Two-segment "5.5" form of the installed Spree version.
39
+ def self.installed_minor_version
40
+ Spree.version.split('.').first(2).join('.')
41
+ end
42
+
43
+ # Root directory containing N_M_to_O_P/manifest.yml files inside
44
+ # the spree_core gem.
45
+ def self.manifests_root
46
+ File.expand_path('../spree/upgrades', __dir__)
47
+ end
48
+
49
+ # All available manifest directories, parsed into { from:, to:, dir: }.
50
+ # Sorted by `to` ascending, with `from` as a tiebreaker (smallest first)
51
+ # for the rare case where two manifests share a `to` boundary.
52
+ def self.available_manifests
53
+ Dir.glob(File.join(manifests_root, '*_to_*')).filter_map do |dir|
54
+ name = File.basename(dir)
55
+ match = name.match(/\A([\d_]+)_to_([\d_]+)\z/)
56
+ next unless match
57
+
58
+ { from: match[1].tr('_', '.'), to: match[2].tr('_', '.'), dir: dir }
59
+ end.sort_by { |m| version_parts(m[:to]) + version_parts(m[:from]) }
60
+ end
61
+
62
+ def self.version_parts(v)
63
+ v.split('.').map { |s| Integer(s, 10) rescue 0 }
64
+ end
65
+
66
+ # Compare two dotted-version strings (returns -1, 0, +1).
67
+ def self.compare(a, b)
68
+ version_parts(a) <=> version_parts(b)
69
+ end
70
+
71
+ # The runner is a class (not a method) so individual concerns (selection,
72
+ # rendering, invocation) stay separable and the plan can be inspected
73
+ # without execution.
74
+ class Runner
75
+ attr_reader :target_version, :step_id, :dry_run, :target_explicit
76
+
77
+ def initialize(target_version: nil, step_id: nil, dry_run: false)
78
+ @target_explicit = !target_version.nil?
79
+ @target_version = target_version || Spree::Upgrade.installed_minor_version
80
+ @step_id = step_id
81
+ @dry_run = dry_run
82
+ end
83
+
84
+ def call
85
+ manifests = eligible_manifests
86
+
87
+ if manifests.empty?
88
+ puts " No upgrade manifests apply to Spree #{target_version} (installed: #{Spree::Upgrade.installed_minor_version})."
89
+ return
90
+ end
91
+
92
+ if step_id
93
+ run_single_step(manifests)
94
+ else
95
+ run_full_walk(manifests)
96
+ end
97
+ end
98
+
99
+ private
100
+
101
+ # In plan-mode without explicit TO, show manifests ahead of the installed
102
+ # version — the path the operator is about to walk. Otherwise filter to
103
+ # manifests whose `to` is ≤ target.
104
+ def eligible_manifests
105
+ Spree::Upgrade.available_manifests
106
+ .select { |manifest| manifest_eligible?(manifest) }
107
+ .map { |entry| load_manifest_yaml(entry) }
108
+ end
109
+
110
+ def manifest_eligible?(manifest)
111
+ if dry_run && !target_explicit
112
+ Spree::Upgrade.compare(manifest[:from], Spree::Upgrade.installed_minor_version) >= 0
113
+ else
114
+ Spree::Upgrade.compare(manifest[:to], target_version) <= 0
115
+ end
116
+ end
117
+
118
+ def load_manifest_yaml(entry)
119
+ YAML.safe_load_file(File.join(entry[:dir], 'manifest.yml'))
120
+ end
121
+
122
+ def run_full_walk(manifests)
123
+ total_steps = manifests.sum { |m| m['steps'].size }
124
+ reported_target = if dry_run && !target_explicit
125
+ manifests.map { |m| m['to'] }.compact.max_by { |v| Spree::Upgrade.version_parts(v) } || target_version
126
+ else
127
+ target_version
128
+ end
129
+ puts
130
+ puts " Walking #{manifests.size} manifest(s), #{total_steps} step(s) total. Target: Spree #{reported_target}."
131
+
132
+ manifests.each do |manifest|
133
+ print_manifest_header(manifest)
134
+ manifest['steps'].each_with_index do |step, i|
135
+ print_step(step, i + 1, manifest['steps'].size)
136
+ unless dry_run
137
+ invoke(step)
138
+ print_step_complete(step)
139
+ end
140
+ end
141
+ end
142
+
143
+ puts
144
+ puts dry_run ? ' (dry run — nothing executed)' : ' Upgrade tasks complete.'
145
+ end
146
+
147
+ # STEP=<id> looks across every eligible manifest; we need exactly one
148
+ # match. Multiple matches are likely a manifest bug (two manifests
149
+ # referencing the same step id) but we surface it rather than picking
150
+ # silently.
151
+ def run_single_step(manifests)
152
+ matches = manifests.flat_map do |manifest|
153
+ manifest['steps'].select { |s| s['id'] == step_id }.map { |s| [manifest, s] }
154
+ end
155
+
156
+ if matches.empty?
157
+ available = manifests.flat_map { |m| m['steps'] }.map { |s| s['id'] }.uniq.join(', ')
158
+ abort " No step with id '#{step_id}' in any eligible manifest. Available: #{available}"
159
+ elsif matches.size > 1
160
+ locations = matches.map { |m, _| "#{m['from']} → #{m['to']}" }.join(', ')
161
+ abort " Step id '#{step_id}' is ambiguous — defined in: #{locations}. Pass TO=<version> to narrow."
162
+ end
163
+
164
+ manifest, step = matches.first
165
+ print_manifest_header(manifest)
166
+ print_step(step, 1, 1)
167
+ unless dry_run
168
+ invoke(step)
169
+ print_step_complete(step)
170
+ end
171
+
172
+ puts
173
+ puts dry_run ? ' (dry run — nothing executed)' : " Step '#{step_id}' complete."
174
+ end
175
+
176
+ def print_manifest_header(manifest)
177
+ puts
178
+ puts " ── Spree #{manifest['from']} → #{manifest['to']} ──"
179
+ puts " Docs: #{manifest['docs']}" if manifest['docs']
180
+ end
181
+
182
+ def print_step(step, index, total)
183
+ puts
184
+ puts " Step #{index}/#{total} [#{step['id']}]"
185
+ puts " #{step['name']}"
186
+ puts " > bin/rake #{step['task']}"
187
+ return unless step['notes']
188
+
189
+ step['notes'].each_line { |line| puts " #{line.chomp}" }
190
+ end
191
+
192
+ def print_step_complete(step)
193
+ puts " ✓ #{step['task']} done."
194
+ end
195
+
196
+ def invoke(step)
197
+ task = step.fetch('task')
198
+ puts " Running #{task}..."
199
+
200
+ # Rake caches invoked tasks in-process; explicit reenable lets a
201
+ # single `rake spree:upgrade` run re-invoke aggregators that share
202
+ # subtasks across multiple manifests (e.g. two manifests both
203
+ # depending on `spree:install:migrations` would otherwise only
204
+ # invoke it once).
205
+ rake_task = Rake::Task[task]
206
+ rake_task.reenable
207
+ rake_task.invoke
208
+ end
209
+ end
210
+ end
211
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.4.4
4
+ version: 5.5.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Schofield
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2026-07-20 00:00:00.000000000 Z
13
+ date: 2026-06-10 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: i18n-tasks
@@ -841,7 +841,6 @@ files:
841
841
  - app/finders/spree/taxons/find.rb
842
842
  - app/finders/spree/variants/find.rb
843
843
  - app/finders/spree/variants/option_types_finder.rb
844
- - app/finders/spree/variants/visible_finder.rb
845
844
  - app/helpers/spree/addresses_helper.rb
846
845
  - app/helpers/spree/base_helper.rb
847
846
  - app/helpers/spree/currency_helper.rb
@@ -864,9 +863,13 @@ files:
864
863
  - app/jobs/spree/exports/generate_job.rb
865
864
  - app/jobs/spree/gift_cards/bulk_generate_job.rb
866
865
  - app/jobs/spree/images/save_from_url_job.rb
866
+ - app/jobs/spree/imports/assign_tags_job.rb
867
+ - app/jobs/spree/imports/base_job.rb
868
+ - app/jobs/spree/imports/create_categories_job.rb
867
869
  - app/jobs/spree/imports/create_rows_job.rb
868
870
  - app/jobs/spree/imports/process_group_job.rb
869
871
  - app/jobs/spree/imports/process_rows_job.rb
872
+ - app/jobs/spree/media/migrate_product_assets_job.rb
870
873
  - app/jobs/spree/payments/handle_webhook_job.rb
871
874
  - app/jobs/spree/products/auto_match_taxons_job.rb
872
875
  - app/jobs/spree/products/refresh_metrics_job.rb
@@ -875,6 +878,7 @@ files:
875
878
  - app/jobs/spree/search_provider/index_job.rb
876
879
  - app/jobs/spree/search_provider/remove_job.rb
877
880
  - app/jobs/spree/stock_locations/stock_items/create_job.rb
881
+ - app/jobs/spree/stock_reservations/expire_job.rb
878
882
  - app/jobs/spree/variants/remove_from_incomplete_orders_job.rb
879
883
  - app/jobs/spree/variants/remove_line_item_job.rb
880
884
  - app/jobs/spree/variants/touch_job.rb
@@ -901,6 +905,7 @@ files:
901
905
  - app/models/concerns/spree/number_identifier.rb
902
906
  - app/models/concerns/spree/parameterizable_name.rb
903
907
  - app/models/concerns/spree/payment_source_concern.rb
908
+ - app/models/concerns/spree/preference_schema.rb
904
909
  - app/models/concerns/spree/prefixed_id.rb
905
910
  - app/models/concerns/spree/product_scopes.rb
906
911
  - app/models/concerns/spree/publishable.rb
@@ -909,11 +914,13 @@ files:
909
914
  - app/models/concerns/spree/searchable.rb
910
915
  - app/models/concerns/spree/single_store_resource.rb
911
916
  - app/models/concerns/spree/store_scoped_resource.rb
917
+ - app/models/concerns/spree/stores/channels.rb
912
918
  - app/models/concerns/spree/stores/markets.rb
913
919
  - app/models/concerns/spree/stores/setup.rb
914
920
  - app/models/concerns/spree/translatable_resource.rb
915
921
  - app/models/concerns/spree/translatable_resource_scopes.rb
916
922
  - app/models/concerns/spree/translatable_resource_slug.rb
923
+ - app/models/concerns/spree/typed_associations.rb
917
924
  - app/models/concerns/spree/unique_name.rb
918
925
  - app/models/concerns/spree/user_address.rb
919
926
  - app/models/concerns/spree/user_management.rb
@@ -922,7 +929,6 @@ files:
922
929
  - app/models/concerns/spree/user_reporting.rb
923
930
  - app/models/concerns/spree/user_roles.rb
924
931
  - app/models/concerns/spree/vat_price_calculation.rb
925
- - app/models/concerns/spree/webhook_payload_redaction.rb
926
932
  - app/models/spree/ability.rb
927
933
  - app/models/spree/address.rb
928
934
  - app/models/spree/adjustable/adjuster/base.rb
@@ -937,6 +943,7 @@ files:
937
943
  - app/models/spree/asset/support/active_storage.rb
938
944
  - app/models/spree/authentication/strategies/base_strategy.rb
939
945
  - app/models/spree/authentication/strategies/email_password_strategy.rb
946
+ - app/models/spree/authentication/strategy_registry.rb
940
947
  - app/models/spree/base.rb
941
948
  - app/models/spree/base_analytics_event_handler.rb
942
949
  - app/models/spree/calculator.rb
@@ -956,6 +963,7 @@ files:
956
963
  - app/models/spree/calculator/tiered_flat_rate.rb
957
964
  - app/models/spree/calculator/tiered_percent.rb
958
965
  - app/models/spree/category.rb
966
+ - app/models/spree/channel.rb
959
967
  - app/models/spree/checkout/default_requirements.rb
960
968
  - app/models/spree/checkout/registry.rb
961
969
  - app/models/spree/checkout/requirement.rb
@@ -966,6 +974,8 @@ files:
966
974
  - app/models/spree/coupon_code.rb
967
975
  - app/models/spree/credit_card.rb
968
976
  - app/models/spree/current.rb
977
+ - app/models/spree/custom_field.rb
978
+ - app/models/spree/custom_field_definition.rb
969
979
  - app/models/spree/customer_group.rb
970
980
  - app/models/spree/customer_group_user.rb
971
981
  - app/models/spree/customer_return.rb
@@ -1034,10 +1044,21 @@ files:
1034
1044
  - app/models/spree/order/payments.rb
1035
1045
  - app/models/spree/order/store_credit.rb
1036
1046
  - app/models/spree/order/webhooks.rb
1047
+ - app/models/spree/order_approval.rb
1048
+ - app/models/spree/order_cancellation.rb
1037
1049
  - app/models/spree/order_contents.rb
1038
1050
  - app/models/spree/order_inventory.rb
1039
1051
  - app/models/spree/order_merger.rb
1040
1052
  - app/models/spree/order_promotion.rb
1053
+ - app/models/spree/order_routing/has_strategy_preference.rb
1054
+ - app/models/spree/order_routing/rules/default_location.rb
1055
+ - app/models/spree/order_routing/rules/minimize_splits.rb
1056
+ - app/models/spree/order_routing/rules/preferred_location.rb
1057
+ - app/models/spree/order_routing/strategy/base.rb
1058
+ - app/models/spree/order_routing/strategy/legacy.rb
1059
+ - app/models/spree/order_routing/strategy/reducer.rb
1060
+ - app/models/spree/order_routing/strategy/rules.rb
1061
+ - app/models/spree/order_routing_rule.rb
1041
1062
  - app/models/spree/order_updater.rb
1042
1063
  - app/models/spree/payment.rb
1043
1064
  - app/models/spree/payment/custom_events.rb
@@ -1082,10 +1103,13 @@ files:
1082
1103
  - app/models/spree/price_rules/volume_rule.rb
1083
1104
  - app/models/spree/price_rules/zone_rule.rb
1084
1105
  - app/models/spree/product.rb
1106
+ - app/models/spree/product/channels.rb
1107
+ - app/models/spree/product/legacy_multi_store_support.rb
1085
1108
  - app/models/spree/product/slugs.rb
1086
1109
  - app/models/spree/product/webhooks.rb
1087
1110
  - app/models/spree/product_option_type.rb
1088
1111
  - app/models/spree/product_promotion_rule.rb
1112
+ - app/models/spree/product_publication.rb
1089
1113
  - app/models/spree/promotion.rb
1090
1114
  - app/models/spree/promotion/actions/create_adjustment.rb
1091
1115
  - app/models/spree/promotion/actions/create_item_adjustments.rb
@@ -1190,6 +1214,8 @@ files:
1190
1214
  - app/models/spree/stock_movement.rb
1191
1215
  - app/models/spree/stock_movement/custom_events.rb
1192
1216
  - app/models/spree/stock_movement/webhooks.rb
1217
+ - app/models/spree/stock_reservation.rb
1218
+ - app/models/spree/stock_reservations/insufficient_stock_error.rb
1193
1219
  - app/models/spree/stock_transfer.rb
1194
1220
  - app/models/spree/store.rb
1195
1221
  - app/models/spree/store_credit.rb
@@ -1211,13 +1237,13 @@ files:
1211
1237
  - app/models/spree/user_identity.rb
1212
1238
  - app/models/spree/variant.rb
1213
1239
  - app/models/spree/variant/webhooks.rb
1240
+ - app/models/spree/variant_media.rb
1214
1241
  - app/models/spree/webhook_delivery.rb
1215
1242
  - app/models/spree/webhook_endpoint.rb
1216
1243
  - app/models/spree/wished_item.rb
1217
1244
  - app/models/spree/wishlist.rb
1218
1245
  - app/models/spree/zone.rb
1219
1246
  - app/models/spree/zone_member.rb
1220
- - app/paginators/spree/shared/paginate.rb
1221
1247
  - app/presenters/spree/csv/coupon_code_presenter.rb
1222
1248
  - app/presenters/spree/csv/customer_presenter.rb
1223
1249
  - app/presenters/spree/csv/formula_sanitizer.rb
@@ -1230,14 +1256,9 @@ files:
1230
1256
  - app/presenters/spree/data_feeds/base_presenter.rb
1231
1257
  - app/presenters/spree/data_feeds/google_presenter.rb
1232
1258
  - app/presenters/spree/filters/options_presenter.rb
1233
- - app/presenters/spree/filters/price_presenter.rb
1234
- - app/presenters/spree/filters/price_range_presenter.rb
1235
- - app/presenters/spree/filters/quantified_price_range_presenter.rb
1236
- - app/presenters/spree/product_summary_presenter.rb
1237
1259
  - app/presenters/spree/search_provider/product_presenter.rb
1238
1260
  - app/presenters/spree/variant_presenter.rb
1239
1261
  - app/presenters/spree/variants/option_types_presenter.rb
1240
- - app/presenters/spree/variants/options_presenter.rb
1241
1262
  - app/services/spree/account/addresses/create.rb
1242
1263
  - app/services/spree/account/addresses/update.rb
1243
1264
  - app/services/spree/account/create.rb
@@ -1270,7 +1291,6 @@ files:
1270
1291
  - app/services/spree/checkout/remove_store_credit.rb
1271
1292
  - app/services/spree/checkout/select_shipping_method.rb
1272
1293
  - app/services/spree/checkout/update.rb
1273
- - app/services/spree/classifications/reposition.rb
1274
1294
  - app/services/spree/compare_line_items.rb
1275
1295
  - app/services/spree/country_to_timezone.rb
1276
1296
  - app/services/spree/coupon_codes/bulk_generate.rb
@@ -1289,14 +1309,21 @@ files:
1289
1309
  - app/services/spree/line_items/helper.rb
1290
1310
  - app/services/spree/line_items/update.rb
1291
1311
  - app/services/spree/locales/set_fallback_locale_for_store.rb
1312
+ - app/services/spree/newsletter/link_user.rb
1292
1313
  - app/services/spree/newsletter/subscribe.rb
1293
1314
  - app/services/spree/newsletter/verify.rb
1294
1315
  - app/services/spree/orders/approve.rb
1316
+ - app/services/spree/orders/build_shipments.rb
1295
1317
  - app/services/spree/orders/cancel.rb
1318
+ - app/services/spree/orders/complete.rb
1319
+ - app/services/spree/orders/create.rb
1296
1320
  - app/services/spree/orders/create_user_account.rb
1321
+ - app/services/spree/orders/update.rb
1297
1322
  - app/services/spree/orders/update_contact_information.rb
1323
+ - app/services/spree/orders/upsert_items.rb
1298
1324
  - app/services/spree/payments/create.rb
1299
1325
  - app/services/spree/payments/handle_webhook.rb
1326
+ - app/services/spree/prices/bulk_upsert.rb
1300
1327
  - app/services/spree/products/auto_match_taxons.rb
1301
1328
  - app/services/spree/products/duplicator.rb
1302
1329
  - app/services/spree/products/prepare_nested_attributes.rb
@@ -1326,6 +1353,9 @@ files:
1326
1353
  - app/services/spree/shipments/remove_item.rb
1327
1354
  - app/services/spree/shipments/update.rb
1328
1355
  - app/services/spree/stock_locations/stock_items/create.rb
1356
+ - app/services/spree/stock_reservations/extend.rb
1357
+ - app/services/spree/stock_reservations/release.rb
1358
+ - app/services/spree/stock_reservations/reserve.rb
1329
1359
  - app/services/spree/stores/settings_defaults_by_country.rb
1330
1360
  - app/services/spree/tags/bulk_add.rb
1331
1361
  - app/services/spree/tags/bulk_remove.rb
@@ -1338,7 +1368,6 @@ files:
1338
1368
  - app/services/spree/wallet/create_payment_source.rb
1339
1369
  - app/sorters/spree/base_sorter.rb
1340
1370
  - app/sorters/spree/classifications/sort.rb
1341
- - app/sorters/spree/orders/sort.rb
1342
1371
  - app/sorters/spree/products/sort.rb
1343
1372
  - app/subscribers/spree/event_log_subscriber.rb
1344
1373
  - app/subscribers/spree/export_subscriber.rb
@@ -1517,7 +1546,26 @@ files:
1517
1546
  - db/migrate/20260408000001_add_unique_index_to_spree_zone_members.rb
1518
1547
  - db/migrate/20260424000001_add_unique_index_to_spree_payments_response_code.rb
1519
1548
  - db/migrate/20260424100000_add_processing_groups_to_spree_imports.rb
1549
+ - db/migrate/20260429000001_create_spree_order_cancellations.rb
1550
+ - db/migrate/20260429000002_create_spree_order_approvals.rb
1551
+ - db/migrate/20260429000003_add_status_to_spree_orders.rb
1552
+ - db/migrate/20260429000004_add_scopes_to_spree_api_keys.rb
1553
+ - db/migrate/20260501000001_create_spree_stock_reservations.rb
1520
1554
  - db/migrate/20260504103113_add_type_to_spree_payment_setup_sessions.rb
1555
+ - db/migrate/20260507162651_create_spree_variant_media.rb
1556
+ - db/migrate/20260508175303_add_pickup_to_spree_stock_locations.rb
1557
+ - db/migrate/20260508204040_create_spree_channels.rb
1558
+ - db/migrate/20260508204041_create_spree_order_routing_rules.rb
1559
+ - db/migrate/20260508204042_add_preferred_stock_location_to_spree_orders.rb
1560
+ - db/migrate/20260508204043_add_channel_id_to_spree_orders.rb
1561
+ - db/migrate/20260511000001_backfill_status_on_spree_orders.rb
1562
+ - db/migrate/20260515000001_add_store_id_to_spree_newsletter_subscribers.rb
1563
+ - db/migrate/20260529000001_add_unique_index_to_spree_price_rules.rb
1564
+ - db/migrate/20260529000002_add_unique_index_to_spree_promotion_rules.rb
1565
+ - db/migrate/20260601000001_create_spree_product_publications.rb
1566
+ - db/migrate/20260601000002_add_store_id_to_spree_products.rb
1567
+ - db/migrate/20260602000001_add_default_to_spree_channels.rb
1568
+ - db/sample_data/channels.rb
1521
1569
  - db/sample_data/customers.csv
1522
1570
  - db/sample_data/markets.rb
1523
1571
  - db/sample_data/metafield_definitions.rb
@@ -1531,6 +1579,15 @@ files:
1531
1579
  - db/seeds.rb
1532
1580
  - lib/friendly_id/history_decorator.rb
1533
1581
  - lib/friendly_id/paranoia.rb
1582
+ - lib/generators/spree/api_resource/api_resource_generator.rb
1583
+ - lib/generators/spree/api_resource/templates/admin_controller.rb.tt
1584
+ - lib/generators/spree/api_resource/templates/admin_controller_spec.rb.tt
1585
+ - lib/generators/spree/api_resource/templates/admin_serializer.rb.tt
1586
+ - lib/generators/spree/api_resource/templates/factory.rb.tt
1587
+ - lib/generators/spree/api_resource/templates/store_aliased_serializer.rb.tt
1588
+ - lib/generators/spree/api_resource/templates/store_controller.rb.tt
1589
+ - lib/generators/spree/api_resource/templates/store_controller_spec.rb.tt
1590
+ - lib/generators/spree/api_resource/templates/store_serializer.rb.tt
1534
1591
  - lib/generators/spree/authentication/custom/custom_generator.rb
1535
1592
  - lib/generators/spree/authentication/custom/templates/authentication_helpers.rb.tt
1536
1593
  - lib/generators/spree/authentication/devise/devise_generator.rb
@@ -1538,6 +1595,8 @@ files:
1538
1595
  - lib/generators/spree/authentication/dummy/dummy_generator.rb
1539
1596
  - lib/generators/spree/authentication/dummy/templates/authentication_helpers.rb.tt
1540
1597
  - lib/generators/spree/authentication/dummy/templates/create_spree_admin_users.rb.tt
1598
+ - lib/generators/spree/controller_decorator/controller_decorator_generator.rb
1599
+ - lib/generators/spree/controller_decorator/templates/controller_decorator.rb.tt
1541
1600
  - lib/generators/spree/dummy/dummy_generator.rb
1542
1601
  - lib/generators/spree/dummy/templates/app/assets/config/manifest.js
1543
1602
  - lib/generators/spree/dummy/templates/rails/application.rb
@@ -1549,6 +1608,7 @@ files:
1549
1608
  - lib/generators/spree/dummy_model/templates/migration.rb.tt
1550
1609
  - lib/generators/spree/dummy_model/templates/model.rb.tt
1551
1610
  - lib/generators/spree/model/model_generator.rb
1611
+ - lib/generators/spree/model/templates/create_table_migration.rb.tt
1552
1612
  - lib/generators/spree/model/templates/model.rb.tt
1553
1613
  - lib/generators/spree/model_decorator/model_decorator_generator.rb
1554
1614
  - lib/generators/spree/model_decorator/templates/model_decorator.rb.tt
@@ -1558,7 +1618,6 @@ files:
1558
1618
  - lib/spree/core/components.rb
1559
1619
  - lib/spree/core/configuration.rb
1560
1620
  - lib/spree/core/controller_helpers/auth.rb
1561
- - lib/spree/core/controller_helpers/common.rb
1562
1621
  - lib/spree/core/controller_helpers/currency.rb
1563
1622
  - lib/spree/core/controller_helpers/locale.rb
1564
1623
  - lib/spree/core/controller_helpers/order.rb
@@ -1572,6 +1631,7 @@ files:
1572
1631
  - lib/spree/core/partials.rb
1573
1632
  - lib/spree/core/permission_configuration.rb
1574
1633
  - lib/spree/core/preferences/configuration.rb
1634
+ - lib/spree/core/preferences/masking.rb
1575
1635
  - lib/spree/core/preferences/preferable.rb
1576
1636
  - lib/spree/core/preferences/preferable_class_methods.rb
1577
1637
  - lib/spree/core/preferences/runtime_configuration.rb
@@ -1581,9 +1641,7 @@ files:
1581
1641
  - lib/spree/core/pricing/resolver.rb
1582
1642
  - lib/spree/core/ransack_configuration.rb
1583
1643
  - lib/spree/core/routes.rb
1584
- - lib/spree/core/token_generator.rb
1585
1644
  - lib/spree/core/version.rb
1586
- - lib/spree/database_type_utilities.rb
1587
1645
  - lib/spree/events.rb
1588
1646
  - lib/spree/events/adapters/active_support_notifications.rb
1589
1647
  - lib/spree/events/adapters/base.rb
@@ -1596,7 +1654,6 @@ files:
1596
1654
  - lib/spree/service_module.rb
1597
1655
  - lib/spree/testing_support/ability_helpers.rb
1598
1656
  - lib/spree/testing_support/authorization_helpers.rb
1599
- - lib/spree/testing_support/bar_ability.rb
1600
1657
  - lib/spree/testing_support/caching.rb
1601
1658
  - lib/spree/testing_support/capybara_config.rb
1602
1659
  - lib/spree/testing_support/capybara_ext.rb
@@ -1610,6 +1667,7 @@ files:
1610
1667
  - lib/spree/testing_support/factories/api_key_factory.rb
1611
1668
  - lib/spree/testing_support/factories/asset_factory.rb
1612
1669
  - lib/spree/testing_support/factories/calculator_factory.rb
1670
+ - lib/spree/testing_support/factories/channel_factory.rb
1613
1671
  - lib/spree/testing_support/factories/classification_factory.rb
1614
1672
  - lib/spree/testing_support/factories/country_factory.rb
1615
1673
  - lib/spree/testing_support/factories/coupon_code_factory.rb
@@ -1654,12 +1712,14 @@ files:
1654
1712
  - lib/spree/testing_support/factories/price_rule_factory.rb
1655
1713
  - lib/spree/testing_support/factories/product_factory.rb
1656
1714
  - lib/spree/testing_support/factories/product_option_type_factory.rb
1715
+ - lib/spree/testing_support/factories/product_publication_factory.rb
1657
1716
  - lib/spree/testing_support/factories/product_translation_factory.rb
1658
1717
  - lib/spree/testing_support/factories/promotion_action_factory.rb
1659
1718
  - lib/spree/testing_support/factories/promotion_category_factory.rb
1660
1719
  - lib/spree/testing_support/factories/promotion_factory.rb
1661
1720
  - lib/spree/testing_support/factories/promotion_rule_factory.rb
1662
1721
  - lib/spree/testing_support/factories/prototype_factory.rb
1722
+ - lib/spree/testing_support/factories/refresh_token_factory.rb
1663
1723
  - lib/spree/testing_support/factories/refund_factory.rb
1664
1724
  - lib/spree/testing_support/factories/reimbursement_credit_factory.rb
1665
1725
  - lib/spree/testing_support/factories/reimbursement_factory.rb
@@ -1679,13 +1739,13 @@ files:
1679
1739
  - lib/spree/testing_support/factories/stock_item_factory.rb
1680
1740
  - lib/spree/testing_support/factories/stock_location_factory.rb
1681
1741
  - lib/spree/testing_support/factories/stock_movement_factory.rb
1742
+ - lib/spree/testing_support/factories/stock_reservation_factory.rb
1682
1743
  - lib/spree/testing_support/factories/stock_transfer_factory.rb
1683
1744
  - lib/spree/testing_support/factories/store_credit_category_factory.rb
1684
1745
  - lib/spree/testing_support/factories/store_credit_event_factory.rb
1685
1746
  - lib/spree/testing_support/factories/store_credit_factory.rb
1686
1747
  - lib/spree/testing_support/factories/store_credit_type_factory.rb
1687
1748
  - lib/spree/testing_support/factories/store_factory.rb
1688
- - lib/spree/testing_support/factories/store_product_factory.rb
1689
1749
  - lib/spree/testing_support/factories/tax_category_factory.rb
1690
1750
  - lib/spree/testing_support/factories/tax_rate_factory.rb
1691
1751
  - lib/spree/testing_support/factories/taxon_factory.rb
@@ -1714,8 +1774,10 @@ files:
1714
1774
  - lib/spree/testing_support/store.rb
1715
1775
  - lib/spree/testing_support/url_helpers.rb
1716
1776
  - lib/spree/translation_migrations.rb
1777
+ - lib/spree/upgrades/5_4_to_5_5/manifest.yml
1717
1778
  - lib/spree/webhooks.rb
1718
1779
  - lib/spree_core.rb
1780
+ - lib/tasks/channels.rake
1719
1781
  - lib/tasks/cli.rake
1720
1782
  - lib/tasks/core.rake
1721
1783
  - lib/tasks/dependencies.rake
@@ -1723,9 +1785,11 @@ files:
1723
1785
  - lib/tasks/media.rake
1724
1786
  - lib/tasks/price_history.rake
1725
1787
  - lib/tasks/products.rake
1788
+ - lib/tasks/publications.rake
1726
1789
  - lib/tasks/sample_data.rake
1727
1790
  - lib/tasks/search.rake
1728
1791
  - lib/tasks/taxons.rake
1792
+ - lib/tasks/upgrade.rake
1729
1793
  - lib/tasks/variants.rake
1730
1794
  - spec/fixtures/favicon.ico
1731
1795
  - spec/fixtures/files/customers_import.csv
@@ -1748,9 +1812,9 @@ licenses:
1748
1812
  - BSD-3-Clause
1749
1813
  metadata:
1750
1814
  bug_tracker_uri: https://github.com/spree/spree/issues
1751
- changelog_uri: https://github.com/spree/spree/releases/tag/v5.4.4
1815
+ changelog_uri: https://github.com/spree/spree/releases/tag/v5.5.0.rc1
1752
1816
  documentation_uri: https://docs.spreecommerce.org/
1753
- source_code_uri: https://github.com/spree/spree/tree/v5.4.4
1817
+ source_code_uri: https://github.com/spree/spree/tree/v5.5.0.rc1
1754
1818
  post_install_message:
1755
1819
  rdoc_options: []
1756
1820
  require_paths:
@@ -1,23 +0,0 @@
1
- module Spree
2
- module Variants
3
- class VisibleFinder
4
- def initialize(scope:, current_currency:)
5
- Spree::Deprecation.warn('Spree::Variants::VisibleFinder is deprecated and will be removed in Spree 5.5.')
6
- @scope = scope
7
- @current_currency = current_currency
8
- end
9
-
10
- def execute
11
- Spree::Variant.where(id: active_variants).joins(:option_values).order('spree_option_values.position ASC')
12
- end
13
-
14
- private
15
-
16
- attr_reader :scope, :current_currency
17
-
18
- def active_variants
19
- scope.active(current_currency).unscope(:order)
20
- end
21
- end
22
- end
23
- end