spree_core 5.4.3 → 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 (231) 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 -1
  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/search_provider/product_presenter.rb +11 -4
  116. data/app/presenters/spree/variant_presenter.rb +4 -3
  117. data/app/services/spree/addresses/update.rb +6 -8
  118. data/app/services/spree/cart/add_item.rb +10 -0
  119. data/app/services/spree/cart/empty.rb +2 -0
  120. data/app/services/spree/cart/remove_line_item.rb +10 -0
  121. data/app/services/spree/cart/remove_out_of_stock_items.rb +1 -1
  122. data/app/services/spree/cart/set_quantity.rb +10 -0
  123. data/app/services/spree/carts/complete.rb +1 -0
  124. data/app/services/spree/carts/create.rb +1 -0
  125. data/app/services/spree/carts/update.rb +18 -2
  126. data/app/services/spree/carts/upsert_items.rb +6 -6
  127. data/app/services/spree/imports/row_processors/customer.rb +4 -1
  128. data/app/services/spree/imports/row_processors/product_variant.rb +95 -57
  129. data/app/services/spree/newsletter/link_user.rb +53 -0
  130. data/app/services/spree/newsletter/subscribe.rb +31 -9
  131. data/app/services/spree/orders/approve.rb +27 -6
  132. data/app/services/spree/orders/build_shipments.rb +29 -0
  133. data/app/services/spree/orders/cancel.rb +34 -3
  134. data/app/services/spree/orders/complete.rb +53 -0
  135. data/app/services/spree/orders/create.rb +156 -0
  136. data/app/services/spree/orders/update.rb +51 -0
  137. data/app/services/spree/orders/upsert_items.rb +70 -0
  138. data/app/services/spree/prices/bulk_upsert.rb +201 -0
  139. data/app/services/spree/products/duplicator.rb +1 -1
  140. data/app/services/spree/products/prepare_nested_attributes.rb +2 -30
  141. data/app/services/spree/sample_data/loader.rb +30 -0
  142. data/app/services/spree/stock_reservations/extend.rb +19 -0
  143. data/app/services/spree/stock_reservations/release.rb +12 -0
  144. data/app/services/spree/stock_reservations/reserve.rb +103 -0
  145. data/app/services/spree/taxons/remove_products.rb +7 -1
  146. data/app/subscribers/spree/product_metrics_subscriber.rb +3 -7
  147. data/app/views/spree/invitation_mailer/invitation_email.html.erb +4 -0
  148. data/config/locales/en.yml +27 -10
  149. data/config/routes.rb +9 -0
  150. data/db/migrate/20260429000001_create_spree_order_cancellations.rb +25 -0
  151. data/db/migrate/20260429000002_create_spree_order_approvals.rb +22 -0
  152. data/db/migrate/20260429000003_add_status_to_spree_orders.rb +6 -0
  153. data/db/migrate/20260429000004_add_scopes_to_spree_api_keys.rb +11 -0
  154. data/db/migrate/20260501000001_create_spree_stock_reservations.rb +19 -0
  155. data/db/migrate/20260507162651_create_spree_variant_media.rb +23 -0
  156. data/db/migrate/20260508175303_add_pickup_to_spree_stock_locations.rb +12 -0
  157. data/db/migrate/20260508204040_create_spree_channels.rb +18 -0
  158. data/db/migrate/20260508204041_create_spree_order_routing_rules.rb +18 -0
  159. data/db/migrate/20260508204042_add_preferred_stock_location_to_spree_orders.rb +5 -0
  160. data/db/migrate/20260508204043_add_channel_id_to_spree_orders.rb +10 -0
  161. data/db/migrate/20260511000001_backfill_status_on_spree_orders.rb +57 -0
  162. data/db/migrate/20260515000001_add_store_id_to_spree_newsletter_subscribers.rb +25 -0
  163. data/db/migrate/20260529000001_add_unique_index_to_spree_price_rules.rb +41 -0
  164. data/db/migrate/20260529000002_add_unique_index_to_spree_promotion_rules.rb +37 -0
  165. data/db/migrate/20260601000001_create_spree_product_publications.rb +14 -0
  166. data/db/migrate/20260601000002_add_store_id_to_spree_products.rb +16 -0
  167. data/db/migrate/20260602000001_add_default_to_spree_channels.rb +14 -0
  168. data/db/sample_data/channels.rb +12 -0
  169. data/db/sample_data/orders.rb +1 -1
  170. data/db/sample_data/products.csv +212 -212
  171. data/lib/generators/spree/api_resource/api_resource_generator.rb +353 -0
  172. data/lib/generators/spree/api_resource/templates/admin_controller.rb.tt +23 -0
  173. data/lib/generators/spree/api_resource/templates/admin_controller_spec.rb.tt +59 -0
  174. data/lib/generators/spree/api_resource/templates/admin_serializer.rb.tt +11 -0
  175. data/lib/generators/spree/api_resource/templates/factory.rb.tt +26 -0
  176. data/lib/generators/spree/api_resource/templates/store_aliased_serializer.rb.tt +12 -0
  177. data/lib/generators/spree/api_resource/templates/store_controller.rb.tt +31 -0
  178. data/lib/generators/spree/api_resource/templates/store_controller_spec.rb.tt +61 -0
  179. data/lib/generators/spree/api_resource/templates/store_serializer.rb.tt +14 -0
  180. data/lib/generators/spree/controller_decorator/controller_decorator_generator.rb +66 -0
  181. data/lib/generators/spree/controller_decorator/templates/controller_decorator.rb.tt +25 -0
  182. data/lib/generators/spree/model/model_generator.rb +73 -7
  183. data/lib/generators/spree/model/templates/create_table_migration.rb.tt +40 -0
  184. data/lib/generators/spree/model/templates/model.rb.tt +28 -2
  185. data/lib/spree/core/configuration.rb +7 -0
  186. data/lib/spree/core/controller_helpers/auth.rb +0 -12
  187. data/lib/spree/core/controller_helpers/currency.rb +0 -17
  188. data/lib/spree/core/controller_helpers/order.rb +0 -19
  189. data/lib/spree/core/dependencies.rb +5 -2
  190. data/lib/spree/core/engine.rb +54 -7
  191. data/lib/spree/core/permission_configuration.rb +15 -0
  192. data/lib/spree/core/preferences/masking.rb +47 -0
  193. data/lib/spree/core/preferences/preferable_class_methods.rb +7 -1
  194. data/lib/spree/core/version.rb +1 -1
  195. data/lib/spree/core.rb +56 -5
  196. data/lib/spree/permitted_attributes.rb +9 -7
  197. data/lib/spree/testing_support/factories/address_factory.rb +16 -9
  198. data/lib/spree/testing_support/factories/api_key_factory.rb +1 -0
  199. data/lib/spree/testing_support/factories/channel_factory.rb +8 -0
  200. data/lib/spree/testing_support/factories/line_item_factory.rb +2 -8
  201. data/lib/spree/testing_support/factories/newsletter_subscriber_factory.rb +2 -0
  202. data/lib/spree/testing_support/factories/product_factory.rb +16 -7
  203. data/lib/spree/testing_support/factories/product_publication_factory.rb +6 -0
  204. data/lib/spree/testing_support/factories/refresh_token_factory.rb +15 -0
  205. data/lib/spree/testing_support/factories/stock_location_factory.rb +2 -2
  206. data/lib/spree/testing_support/factories/stock_reservation_factory.rb +31 -0
  207. data/lib/spree/testing_support/factories/variant_factory.rb +3 -3
  208. data/lib/spree/testing_support/order_walkthrough.rb +1 -1
  209. data/lib/spree/testing_support/store.rb +10 -0
  210. data/lib/spree/upgrades/5_4_to_5_5/manifest.yml +53 -0
  211. data/lib/tasks/channels.rake +94 -0
  212. data/lib/tasks/core.rake +1 -0
  213. data/lib/tasks/media.rake +27 -0
  214. data/lib/tasks/products.rake +4 -6
  215. data/lib/tasks/publications.rake +60 -0
  216. data/lib/tasks/upgrade.rake +211 -0
  217. metadata +83 -18
  218. data/app/finders/spree/variants/visible_finder.rb +0 -23
  219. data/app/paginators/spree/shared/paginate.rb +0 -30
  220. data/app/presenters/spree/filters/price_presenter.rb +0 -23
  221. data/app/presenters/spree/filters/price_range_presenter.rb +0 -30
  222. data/app/presenters/spree/filters/quantified_price_range_presenter.rb +0 -45
  223. data/app/presenters/spree/product_summary_presenter.rb +0 -27
  224. data/app/presenters/spree/variants/options_presenter.rb +0 -82
  225. data/app/services/spree/classifications/reposition.rb +0 -23
  226. data/app/sorters/spree/orders/sort.rb +0 -10
  227. data/lib/spree/core/controller_helpers/common.rb +0 -14
  228. data/lib/spree/core/token_generator.rb +0 -23
  229. data/lib/spree/database_type_utilities.rb +0 -22
  230. data/lib/spree/testing_support/bar_ability.rb +0 -14
  231. 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.3
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-05-19 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
@@ -936,6 +943,7 @@ files:
936
943
  - app/models/spree/asset/support/active_storage.rb
937
944
  - app/models/spree/authentication/strategies/base_strategy.rb
938
945
  - app/models/spree/authentication/strategies/email_password_strategy.rb
946
+ - app/models/spree/authentication/strategy_registry.rb
939
947
  - app/models/spree/base.rb
940
948
  - app/models/spree/base_analytics_event_handler.rb
941
949
  - app/models/spree/calculator.rb
@@ -955,6 +963,7 @@ files:
955
963
  - app/models/spree/calculator/tiered_flat_rate.rb
956
964
  - app/models/spree/calculator/tiered_percent.rb
957
965
  - app/models/spree/category.rb
966
+ - app/models/spree/channel.rb
958
967
  - app/models/spree/checkout/default_requirements.rb
959
968
  - app/models/spree/checkout/registry.rb
960
969
  - app/models/spree/checkout/requirement.rb
@@ -965,6 +974,8 @@ files:
965
974
  - app/models/spree/coupon_code.rb
966
975
  - app/models/spree/credit_card.rb
967
976
  - app/models/spree/current.rb
977
+ - app/models/spree/custom_field.rb
978
+ - app/models/spree/custom_field_definition.rb
968
979
  - app/models/spree/customer_group.rb
969
980
  - app/models/spree/customer_group_user.rb
970
981
  - app/models/spree/customer_return.rb
@@ -1033,10 +1044,21 @@ files:
1033
1044
  - app/models/spree/order/payments.rb
1034
1045
  - app/models/spree/order/store_credit.rb
1035
1046
  - app/models/spree/order/webhooks.rb
1047
+ - app/models/spree/order_approval.rb
1048
+ - app/models/spree/order_cancellation.rb
1036
1049
  - app/models/spree/order_contents.rb
1037
1050
  - app/models/spree/order_inventory.rb
1038
1051
  - app/models/spree/order_merger.rb
1039
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
1040
1062
  - app/models/spree/order_updater.rb
1041
1063
  - app/models/spree/payment.rb
1042
1064
  - app/models/spree/payment/custom_events.rb
@@ -1081,10 +1103,13 @@ files:
1081
1103
  - app/models/spree/price_rules/volume_rule.rb
1082
1104
  - app/models/spree/price_rules/zone_rule.rb
1083
1105
  - app/models/spree/product.rb
1106
+ - app/models/spree/product/channels.rb
1107
+ - app/models/spree/product/legacy_multi_store_support.rb
1084
1108
  - app/models/spree/product/slugs.rb
1085
1109
  - app/models/spree/product/webhooks.rb
1086
1110
  - app/models/spree/product_option_type.rb
1087
1111
  - app/models/spree/product_promotion_rule.rb
1112
+ - app/models/spree/product_publication.rb
1088
1113
  - app/models/spree/promotion.rb
1089
1114
  - app/models/spree/promotion/actions/create_adjustment.rb
1090
1115
  - app/models/spree/promotion/actions/create_item_adjustments.rb
@@ -1189,6 +1214,8 @@ files:
1189
1214
  - app/models/spree/stock_movement.rb
1190
1215
  - app/models/spree/stock_movement/custom_events.rb
1191
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
1192
1219
  - app/models/spree/stock_transfer.rb
1193
1220
  - app/models/spree/store.rb
1194
1221
  - app/models/spree/store_credit.rb
@@ -1210,13 +1237,13 @@ files:
1210
1237
  - app/models/spree/user_identity.rb
1211
1238
  - app/models/spree/variant.rb
1212
1239
  - app/models/spree/variant/webhooks.rb
1240
+ - app/models/spree/variant_media.rb
1213
1241
  - app/models/spree/webhook_delivery.rb
1214
1242
  - app/models/spree/webhook_endpoint.rb
1215
1243
  - app/models/spree/wished_item.rb
1216
1244
  - app/models/spree/wishlist.rb
1217
1245
  - app/models/spree/zone.rb
1218
1246
  - app/models/spree/zone_member.rb
1219
- - app/paginators/spree/shared/paginate.rb
1220
1247
  - app/presenters/spree/csv/coupon_code_presenter.rb
1221
1248
  - app/presenters/spree/csv/customer_presenter.rb
1222
1249
  - app/presenters/spree/csv/formula_sanitizer.rb
@@ -1229,14 +1256,9 @@ files:
1229
1256
  - app/presenters/spree/data_feeds/base_presenter.rb
1230
1257
  - app/presenters/spree/data_feeds/google_presenter.rb
1231
1258
  - app/presenters/spree/filters/options_presenter.rb
1232
- - app/presenters/spree/filters/price_presenter.rb
1233
- - app/presenters/spree/filters/price_range_presenter.rb
1234
- - app/presenters/spree/filters/quantified_price_range_presenter.rb
1235
- - app/presenters/spree/product_summary_presenter.rb
1236
1259
  - app/presenters/spree/search_provider/product_presenter.rb
1237
1260
  - app/presenters/spree/variant_presenter.rb
1238
1261
  - app/presenters/spree/variants/option_types_presenter.rb
1239
- - app/presenters/spree/variants/options_presenter.rb
1240
1262
  - app/services/spree/account/addresses/create.rb
1241
1263
  - app/services/spree/account/addresses/update.rb
1242
1264
  - app/services/spree/account/create.rb
@@ -1269,7 +1291,6 @@ files:
1269
1291
  - app/services/spree/checkout/remove_store_credit.rb
1270
1292
  - app/services/spree/checkout/select_shipping_method.rb
1271
1293
  - app/services/spree/checkout/update.rb
1272
- - app/services/spree/classifications/reposition.rb
1273
1294
  - app/services/spree/compare_line_items.rb
1274
1295
  - app/services/spree/country_to_timezone.rb
1275
1296
  - app/services/spree/coupon_codes/bulk_generate.rb
@@ -1288,14 +1309,21 @@ files:
1288
1309
  - app/services/spree/line_items/helper.rb
1289
1310
  - app/services/spree/line_items/update.rb
1290
1311
  - app/services/spree/locales/set_fallback_locale_for_store.rb
1312
+ - app/services/spree/newsletter/link_user.rb
1291
1313
  - app/services/spree/newsletter/subscribe.rb
1292
1314
  - app/services/spree/newsletter/verify.rb
1293
1315
  - app/services/spree/orders/approve.rb
1316
+ - app/services/spree/orders/build_shipments.rb
1294
1317
  - app/services/spree/orders/cancel.rb
1318
+ - app/services/spree/orders/complete.rb
1319
+ - app/services/spree/orders/create.rb
1295
1320
  - app/services/spree/orders/create_user_account.rb
1321
+ - app/services/spree/orders/update.rb
1296
1322
  - app/services/spree/orders/update_contact_information.rb
1323
+ - app/services/spree/orders/upsert_items.rb
1297
1324
  - app/services/spree/payments/create.rb
1298
1325
  - app/services/spree/payments/handle_webhook.rb
1326
+ - app/services/spree/prices/bulk_upsert.rb
1299
1327
  - app/services/spree/products/auto_match_taxons.rb
1300
1328
  - app/services/spree/products/duplicator.rb
1301
1329
  - app/services/spree/products/prepare_nested_attributes.rb
@@ -1325,6 +1353,9 @@ files:
1325
1353
  - app/services/spree/shipments/remove_item.rb
1326
1354
  - app/services/spree/shipments/update.rb
1327
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
1328
1359
  - app/services/spree/stores/settings_defaults_by_country.rb
1329
1360
  - app/services/spree/tags/bulk_add.rb
1330
1361
  - app/services/spree/tags/bulk_remove.rb
@@ -1337,7 +1368,6 @@ files:
1337
1368
  - app/services/spree/wallet/create_payment_source.rb
1338
1369
  - app/sorters/spree/base_sorter.rb
1339
1370
  - app/sorters/spree/classifications/sort.rb
1340
- - app/sorters/spree/orders/sort.rb
1341
1371
  - app/sorters/spree/products/sort.rb
1342
1372
  - app/subscribers/spree/event_log_subscriber.rb
1343
1373
  - app/subscribers/spree/export_subscriber.rb
@@ -1516,7 +1546,26 @@ files:
1516
1546
  - db/migrate/20260408000001_add_unique_index_to_spree_zone_members.rb
1517
1547
  - db/migrate/20260424000001_add_unique_index_to_spree_payments_response_code.rb
1518
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
1519
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
1520
1569
  - db/sample_data/customers.csv
1521
1570
  - db/sample_data/markets.rb
1522
1571
  - db/sample_data/metafield_definitions.rb
@@ -1530,6 +1579,15 @@ files:
1530
1579
  - db/seeds.rb
1531
1580
  - lib/friendly_id/history_decorator.rb
1532
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
1533
1591
  - lib/generators/spree/authentication/custom/custom_generator.rb
1534
1592
  - lib/generators/spree/authentication/custom/templates/authentication_helpers.rb.tt
1535
1593
  - lib/generators/spree/authentication/devise/devise_generator.rb
@@ -1537,6 +1595,8 @@ files:
1537
1595
  - lib/generators/spree/authentication/dummy/dummy_generator.rb
1538
1596
  - lib/generators/spree/authentication/dummy/templates/authentication_helpers.rb.tt
1539
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
1540
1600
  - lib/generators/spree/dummy/dummy_generator.rb
1541
1601
  - lib/generators/spree/dummy/templates/app/assets/config/manifest.js
1542
1602
  - lib/generators/spree/dummy/templates/rails/application.rb
@@ -1548,6 +1608,7 @@ files:
1548
1608
  - lib/generators/spree/dummy_model/templates/migration.rb.tt
1549
1609
  - lib/generators/spree/dummy_model/templates/model.rb.tt
1550
1610
  - lib/generators/spree/model/model_generator.rb
1611
+ - lib/generators/spree/model/templates/create_table_migration.rb.tt
1551
1612
  - lib/generators/spree/model/templates/model.rb.tt
1552
1613
  - lib/generators/spree/model_decorator/model_decorator_generator.rb
1553
1614
  - lib/generators/spree/model_decorator/templates/model_decorator.rb.tt
@@ -1557,7 +1618,6 @@ files:
1557
1618
  - lib/spree/core/components.rb
1558
1619
  - lib/spree/core/configuration.rb
1559
1620
  - lib/spree/core/controller_helpers/auth.rb
1560
- - lib/spree/core/controller_helpers/common.rb
1561
1621
  - lib/spree/core/controller_helpers/currency.rb
1562
1622
  - lib/spree/core/controller_helpers/locale.rb
1563
1623
  - lib/spree/core/controller_helpers/order.rb
@@ -1571,6 +1631,7 @@ files:
1571
1631
  - lib/spree/core/partials.rb
1572
1632
  - lib/spree/core/permission_configuration.rb
1573
1633
  - lib/spree/core/preferences/configuration.rb
1634
+ - lib/spree/core/preferences/masking.rb
1574
1635
  - lib/spree/core/preferences/preferable.rb
1575
1636
  - lib/spree/core/preferences/preferable_class_methods.rb
1576
1637
  - lib/spree/core/preferences/runtime_configuration.rb
@@ -1580,9 +1641,7 @@ files:
1580
1641
  - lib/spree/core/pricing/resolver.rb
1581
1642
  - lib/spree/core/ransack_configuration.rb
1582
1643
  - lib/spree/core/routes.rb
1583
- - lib/spree/core/token_generator.rb
1584
1644
  - lib/spree/core/version.rb
1585
- - lib/spree/database_type_utilities.rb
1586
1645
  - lib/spree/events.rb
1587
1646
  - lib/spree/events/adapters/active_support_notifications.rb
1588
1647
  - lib/spree/events/adapters/base.rb
@@ -1595,7 +1654,6 @@ files:
1595
1654
  - lib/spree/service_module.rb
1596
1655
  - lib/spree/testing_support/ability_helpers.rb
1597
1656
  - lib/spree/testing_support/authorization_helpers.rb
1598
- - lib/spree/testing_support/bar_ability.rb
1599
1657
  - lib/spree/testing_support/caching.rb
1600
1658
  - lib/spree/testing_support/capybara_config.rb
1601
1659
  - lib/spree/testing_support/capybara_ext.rb
@@ -1609,6 +1667,7 @@ files:
1609
1667
  - lib/spree/testing_support/factories/api_key_factory.rb
1610
1668
  - lib/spree/testing_support/factories/asset_factory.rb
1611
1669
  - lib/spree/testing_support/factories/calculator_factory.rb
1670
+ - lib/spree/testing_support/factories/channel_factory.rb
1612
1671
  - lib/spree/testing_support/factories/classification_factory.rb
1613
1672
  - lib/spree/testing_support/factories/country_factory.rb
1614
1673
  - lib/spree/testing_support/factories/coupon_code_factory.rb
@@ -1653,12 +1712,14 @@ files:
1653
1712
  - lib/spree/testing_support/factories/price_rule_factory.rb
1654
1713
  - lib/spree/testing_support/factories/product_factory.rb
1655
1714
  - lib/spree/testing_support/factories/product_option_type_factory.rb
1715
+ - lib/spree/testing_support/factories/product_publication_factory.rb
1656
1716
  - lib/spree/testing_support/factories/product_translation_factory.rb
1657
1717
  - lib/spree/testing_support/factories/promotion_action_factory.rb
1658
1718
  - lib/spree/testing_support/factories/promotion_category_factory.rb
1659
1719
  - lib/spree/testing_support/factories/promotion_factory.rb
1660
1720
  - lib/spree/testing_support/factories/promotion_rule_factory.rb
1661
1721
  - lib/spree/testing_support/factories/prototype_factory.rb
1722
+ - lib/spree/testing_support/factories/refresh_token_factory.rb
1662
1723
  - lib/spree/testing_support/factories/refund_factory.rb
1663
1724
  - lib/spree/testing_support/factories/reimbursement_credit_factory.rb
1664
1725
  - lib/spree/testing_support/factories/reimbursement_factory.rb
@@ -1678,13 +1739,13 @@ files:
1678
1739
  - lib/spree/testing_support/factories/stock_item_factory.rb
1679
1740
  - lib/spree/testing_support/factories/stock_location_factory.rb
1680
1741
  - lib/spree/testing_support/factories/stock_movement_factory.rb
1742
+ - lib/spree/testing_support/factories/stock_reservation_factory.rb
1681
1743
  - lib/spree/testing_support/factories/stock_transfer_factory.rb
1682
1744
  - lib/spree/testing_support/factories/store_credit_category_factory.rb
1683
1745
  - lib/spree/testing_support/factories/store_credit_event_factory.rb
1684
1746
  - lib/spree/testing_support/factories/store_credit_factory.rb
1685
1747
  - lib/spree/testing_support/factories/store_credit_type_factory.rb
1686
1748
  - lib/spree/testing_support/factories/store_factory.rb
1687
- - lib/spree/testing_support/factories/store_product_factory.rb
1688
1749
  - lib/spree/testing_support/factories/tax_category_factory.rb
1689
1750
  - lib/spree/testing_support/factories/tax_rate_factory.rb
1690
1751
  - lib/spree/testing_support/factories/taxon_factory.rb
@@ -1713,8 +1774,10 @@ files:
1713
1774
  - lib/spree/testing_support/store.rb
1714
1775
  - lib/spree/testing_support/url_helpers.rb
1715
1776
  - lib/spree/translation_migrations.rb
1777
+ - lib/spree/upgrades/5_4_to_5_5/manifest.yml
1716
1778
  - lib/spree/webhooks.rb
1717
1779
  - lib/spree_core.rb
1780
+ - lib/tasks/channels.rake
1718
1781
  - lib/tasks/cli.rake
1719
1782
  - lib/tasks/core.rake
1720
1783
  - lib/tasks/dependencies.rake
@@ -1722,9 +1785,11 @@ files:
1722
1785
  - lib/tasks/media.rake
1723
1786
  - lib/tasks/price_history.rake
1724
1787
  - lib/tasks/products.rake
1788
+ - lib/tasks/publications.rake
1725
1789
  - lib/tasks/sample_data.rake
1726
1790
  - lib/tasks/search.rake
1727
1791
  - lib/tasks/taxons.rake
1792
+ - lib/tasks/upgrade.rake
1728
1793
  - lib/tasks/variants.rake
1729
1794
  - spec/fixtures/favicon.ico
1730
1795
  - spec/fixtures/files/customers_import.csv
@@ -1747,9 +1812,9 @@ licenses:
1747
1812
  - BSD-3-Clause
1748
1813
  metadata:
1749
1814
  bug_tracker_uri: https://github.com/spree/spree/issues
1750
- changelog_uri: https://github.com/spree/spree/releases/tag/v5.4.3
1815
+ changelog_uri: https://github.com/spree/spree/releases/tag/v5.5.0.rc1
1751
1816
  documentation_uri: https://docs.spreecommerce.org/
1752
- source_code_uri: https://github.com/spree/spree/tree/v5.4.3
1817
+ source_code_uri: https://github.com/spree/spree/tree/v5.5.0.rc1
1753
1818
  post_install_message:
1754
1819
  rdoc_options: []
1755
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
@@ -1,30 +0,0 @@
1
- module Spree
2
- module Shared
3
- class Paginate
4
- def initialize(collection, params)
5
- Spree::Deprecation.warn('Spree::Shared::Paginate is deprecated and will be removed in Spree 5.5. Please use Kaminari instead.')
6
-
7
- raise 'Kaminari is not installed. Please add it to your Gemfile.' unless defined?(Kaminari)
8
-
9
- @collection = collection
10
- @page = params[:page]
11
-
12
- per_page_limit = Spree::Api::Config[:api_v2_per_page_limit]
13
-
14
- @per_page = if params[:per_page].to_i.between?(1, per_page_limit)
15
- params[:per_page]
16
- else
17
- Kaminari.config.default_per_page
18
- end
19
- end
20
-
21
- def call
22
- collection.page(page).per(per_page)
23
- end
24
-
25
- private
26
-
27
- attr_reader :collection, :page, :per_page
28
- end
29
- end
30
- end
@@ -1,23 +0,0 @@
1
- module Spree
2
- module Filters
3
- class PricePresenter
4
- def initialize(amount:, currency:)
5
- Spree::Deprecation.warn('Spree::Filters::PricePresenter is deprecated and will be removed in Spree 5.5.')
6
- @amount = amount.to_i
7
- @currency = currency
8
- end
9
-
10
- def to_i
11
- amount
12
- end
13
-
14
- def to_s
15
- Spree::Money.new(amount, currency: currency, no_cents_if_whole: true).to_s
16
- end
17
-
18
- private
19
-
20
- attr_reader :amount, :currency
21
- end
22
- end
23
- end