solidus_core 4.6.2 → 4.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (328) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +13 -13
  3. data/app/controllers/spree/base_controller.rb +2 -2
  4. data/app/helpers/spree/base_helper.rb +24 -24
  5. data/app/helpers/spree/checkout_helper.rb +7 -7
  6. data/app/helpers/spree/core/controller_helpers/auth.rb +1 -1
  7. data/app/helpers/spree/core/controller_helpers/common.rb +3 -2
  8. data/app/helpers/spree/core/controller_helpers/order.rb +3 -5
  9. data/app/helpers/spree/core/controller_helpers/payment_parameters.rb +1 -2
  10. data/app/helpers/spree/core/controller_helpers/strong_parameters.rb +10 -10
  11. data/app/helpers/spree/products_helper.rb +5 -5
  12. data/app/helpers/spree/store_helper.rb +1 -1
  13. data/app/mailers/spree/carton_mailer.rb +3 -3
  14. data/app/mailers/spree/order_mailer.rb +4 -4
  15. data/app/mailers/spree/reimbursement_mailer.rb +2 -2
  16. data/app/models/concerns/spree/active_storage_adapter/attachment.rb +5 -5
  17. data/app/models/concerns/spree/active_storage_adapter/normalization.rb +5 -5
  18. data/app/models/concerns/spree/active_storage_adapter.rb +2 -2
  19. data/app/models/concerns/spree/adjustment_source.rb +4 -4
  20. data/app/models/concerns/spree/display_money.rb +2 -2
  21. data/app/models/concerns/spree/named_type.rb +1 -1
  22. data/app/models/concerns/spree/ordered_property_value_list.rb +2 -2
  23. data/app/models/concerns/spree/preferences/persistable.rb +1 -1
  24. data/app/models/concerns/spree/ransackable_attributes.rb +1 -0
  25. data/app/models/concerns/spree/soft_deletable.rb +2 -1
  26. data/app/models/concerns/spree/state_change_tracking.rb +1 -1
  27. data/app/models/concerns/spree/user_address_book.rb +12 -12
  28. data/app/models/concerns/spree/user_methods.rb +9 -9
  29. data/app/models/concerns/spree/user_reporting.rb +1 -0
  30. data/app/models/spree/ability.rb +1 -1
  31. data/app/models/spree/address/name.rb +1 -1
  32. data/app/models/spree/address.rb +7 -7
  33. data/app/models/spree/adjustment.rb +11 -10
  34. data/app/models/spree/adjustment_reason.rb +2 -2
  35. data/app/models/spree/billing_integration.rb +2 -2
  36. data/app/models/spree/calculator/default_tax.rb +2 -2
  37. data/app/models/spree/calculator/flat_fee.rb +1 -1
  38. data/app/models/spree/calculator/flat_rate.rb +2 -2
  39. data/app/models/spree/calculator/returns/default_refund_amount.rb +3 -3
  40. data/app/models/spree/calculator/shipping/flat_percent_item_total.rb +2 -2
  41. data/app/models/spree/calculator/shipping/flat_rate.rb +3 -3
  42. data/app/models/spree/calculator/shipping/flexi_rate.rb +8 -8
  43. data/app/models/spree/calculator/shipping/per_item.rb +3 -3
  44. data/app/models/spree/calculator/shipping/price_sack.rb +3 -3
  45. data/app/models/spree/calculator.rb +31 -6
  46. data/app/models/spree/carton.rb +4 -4
  47. data/app/models/spree/classification.rb +2 -2
  48. data/app/models/spree/core/state_machines/order/class_methods.rb +3 -3
  49. data/app/models/spree/core/state_machines/return_item/acceptance_status.rb +1 -1
  50. data/app/models/spree/country.rb +1 -1
  51. data/app/models/spree/credit_card.rb +27 -27
  52. data/app/models/spree/customer_return.rb +5 -4
  53. data/app/models/spree/distributed_amounts_handler.rb +1 -1
  54. data/app/models/spree/fulfilment_changer.rb +22 -22
  55. data/app/models/spree/image/active_storage_attachment.rb +2 -2
  56. data/app/models/spree/image/paperclip_attachment.rb +8 -8
  57. data/app/models/spree/in_memory_order_updater.rb +262 -0
  58. data/app/models/spree/inventory_unit.rb +11 -11
  59. data/app/models/spree/item_total.rb +1 -1
  60. data/app/models/spree/legacy_user.rb +2 -2
  61. data/app/models/spree/line_item.rb +21 -11
  62. data/app/models/spree/log_entry.rb +3 -3
  63. data/app/models/spree/mergeable_orders_finder.rb +44 -0
  64. data/app/models/spree/money.rb +2 -1
  65. data/app/models/spree/null_promotion_adjuster.rb +1 -1
  66. data/app/models/spree/option_type.rb +1 -1
  67. data/app/models/spree/option_value.rb +2 -2
  68. data/app/models/spree/order/number_generator.rb +1 -1
  69. data/app/models/spree/order.rb +66 -64
  70. data/app/models/spree/order_cancellations.rb +1 -3
  71. data/app/models/spree/order_inventory.rb +5 -8
  72. data/app/models/spree/order_mutex.rb +1 -1
  73. data/app/models/spree/order_shipping.rb +1 -1
  74. data/app/models/spree/order_updater.rb +59 -37
  75. data/app/models/spree/payment/cancellation.rb +2 -2
  76. data/app/models/spree/payment/processing.rb +22 -22
  77. data/app/models/spree/payment.rb +25 -25
  78. data/app/models/spree/payment_capture_event.rb +2 -2
  79. data/app/models/spree/payment_create.rb +1 -1
  80. data/app/models/spree/payment_method/bogus_credit_card.rb +18 -18
  81. data/app/models/spree/payment_method/check.rb +3 -3
  82. data/app/models/spree/payment_method/credit_card.rb +1 -1
  83. data/app/models/spree/payment_method/simple_bogus_credit_card.rb +3 -3
  84. data/app/models/spree/payment_method/store_credit.rb +13 -13
  85. data/app/models/spree/payment_method.rb +12 -11
  86. data/app/models/spree/payment_source.rb +2 -2
  87. data/app/models/spree/permission_sets/dashboard_display.rb +3 -3
  88. data/app/models/spree/permission_sets/default_customer.rb +1 -1
  89. data/app/models/spree/preference.rb +1 -1
  90. data/app/models/spree/price.rb +7 -6
  91. data/app/models/spree/product/scopes.rb +23 -23
  92. data/app/models/spree/product.rb +37 -41
  93. data/app/models/spree/product_option_type.rb +2 -2
  94. data/app/models/spree/product_property.rb +3 -3
  95. data/app/models/spree/refund.rb +10 -10
  96. data/app/models/spree/refund_reason.rb +2 -2
  97. data/app/models/spree/reimbursement/credit.rb +1 -1
  98. data/app/models/spree/reimbursement.rb +8 -8
  99. data/app/models/spree/reimbursement_tax_calculator.rb +1 -1
  100. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +1 -1
  101. data/app/models/spree/reimbursement_type.rb +2 -2
  102. data/app/models/spree/return_authorization.rb +7 -6
  103. data/app/models/spree/return_item/eligibility_validator/base_validator.rb +2 -2
  104. data/app/models/spree/return_item/eligibility_validator/default.rb +1 -1
  105. data/app/models/spree/return_item/eligibility_validator/inventory_shipped.rb +1 -1
  106. data/app/models/spree/return_item/eligibility_validator/no_reimbursements.rb +1 -1
  107. data/app/models/spree/return_item/eligibility_validator/order_completed.rb +1 -1
  108. data/app/models/spree/return_item/eligibility_validator/rma_required.rb +1 -1
  109. data/app/models/spree/return_item/eligibility_validator/time_since_purchase.rb +1 -1
  110. data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +6 -6
  111. data/app/models/spree/return_item.rb +31 -30
  112. data/app/models/spree/return_reason.rb +1 -1
  113. data/app/models/spree/role.rb +1 -1
  114. data/app/models/spree/role_user.rb +1 -1
  115. data/app/models/spree/shipment.rb +37 -29
  116. data/app/models/spree/shipping_method.rb +9 -9
  117. data/app/models/spree/shipping_method_category.rb +2 -2
  118. data/app/models/spree/shipping_rate.rb +12 -10
  119. data/app/models/spree/shipping_rate_tax.rb +5 -4
  120. data/app/models/spree/simple_order_contents.rb +2 -2
  121. data/app/models/spree/state.rb +1 -1
  122. data/app/models/spree/stock/availability.rb +9 -9
  123. data/app/models/spree/stock/availability_validator.rb +3 -3
  124. data/app/models/spree/stock/differentiator.rb +2 -2
  125. data/app/models/spree/stock/estimator.rb +4 -4
  126. data/app/models/spree/stock/inventory_validator.rb +1 -1
  127. data/app/models/spree/stock/package.rb +3 -3
  128. data/app/models/spree/stock_item.rb +5 -5
  129. data/app/models/spree/stock_location.rb +6 -6
  130. data/app/models/spree/stock_movement.rb +2 -2
  131. data/app/models/spree/stock_quantities.rb +2 -2
  132. data/app/models/spree/store.rb +3 -3
  133. data/app/models/spree/store_credit.rb +30 -29
  134. data/app/models/spree/store_credit_category.rb +2 -2
  135. data/app/models/spree/store_credit_event.rb +6 -6
  136. data/app/models/spree/store_credit_reason.rb +1 -1
  137. data/app/models/spree/store_credit_type.rb +3 -3
  138. data/app/models/spree/store_selector/by_server_name.rb +1 -1
  139. data/app/models/spree/store_selector/legacy.rb +1 -1
  140. data/app/models/spree/tax/item_tax.rb +1 -0
  141. data/app/models/spree/tax/order_tax.rb +1 -0
  142. data/app/models/spree/tax_category.rb +3 -3
  143. data/app/models/spree/tax_rate.rb +5 -5
  144. data/app/models/spree/tax_rate_tax_category.rb +2 -2
  145. data/app/models/spree/taxon/active_storage_attachment.rb +2 -2
  146. data/app/models/spree/taxon/paperclip_attachment.rb +4 -4
  147. data/app/models/spree/taxon.rb +16 -17
  148. data/app/models/spree/taxon_brand_selector.rb +3 -3
  149. data/app/models/spree/unauthorized_redirect_handler.rb +1 -1
  150. data/app/models/spree/unit_cancel.rb +4 -4
  151. data/app/models/spree/user_address.rb +3 -3
  152. data/app/models/spree/user_last_url_storer/rules/authentication_rule.rb +6 -8
  153. data/app/models/spree/user_last_url_storer.rb +1 -1
  154. data/app/models/spree/variant/price_selector.rb +1 -1
  155. data/app/models/spree/variant/scopes.rb +9 -9
  156. data/app/models/spree/variant.rb +25 -25
  157. data/app/models/spree/variant_property_rule.rb +2 -2
  158. data/app/models/spree/variant_property_rule_condition.rb +1 -1
  159. data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +4 -4
  160. data/app/models/spree/wallet/default_payment_builder.rb +1 -1
  161. data/app/models/spree/wallet_payment_source.rb +2 -2
  162. data/app/models/spree/zone.rb +18 -18
  163. data/app/models/spree/zone_member.rb +1 -1
  164. data/app/subscribers/spree/carton_shipped_mailer_subscriber.rb +2 -2
  165. data/app/subscribers/spree/order_cancel_mailer_subscriber.rb +2 -2
  166. data/app/subscribers/spree/order_confirmation_mailer_subscriber.rb +2 -2
  167. data/app/subscribers/spree/order_inventory_cancellation_mailer_subscriber.rb +2 -2
  168. data/app/subscribers/spree/reimbursement_mailer_subscriber.rb +2 -2
  169. data/config/initializers/assets.rb +1 -1
  170. data/config/initializers/db_query_matchers.rb +9 -0
  171. data/config/initializers/friendly_id.rb +2 -2
  172. data/config/initializers/inflections.rb +1 -1
  173. data/config/initializers/money.rb +1 -1
  174. data/config/locales/en.yml +1 -0
  175. data/db/default/spree/countries.rb +7 -7
  176. data/db/default/spree/return_reasons.rb +11 -11
  177. data/db/default/spree/stock_locations.rb +1 -1
  178. data/db/default/spree/store_credit.rb +3 -4
  179. data/db/default/spree/stores.rb +1 -1
  180. data/db/default/spree/zones.rb +5 -5
  181. data/db/migrate/20160101010000_solidus_one_four.rb +16 -16
  182. data/db/migrate/20160420044191_create_spree_wallet_payment_sources.rb +3 -3
  183. data/db/migrate/20160420181916_migrate_credit_cards_to_wallet_payment_sources.rb +7 -6
  184. data/db/migrate/20161014221052_add_available_to_columns_and_remove_display_on_from_payment_methods.rb +10 -10
  185. data/db/migrate/20161123154034_add_available_to_users_and_remove_display_on_from_shipping_methods.rb +6 -6
  186. data/db/migrate/20161129035810_add_index_to_spree_payments_number.rb +1 -1
  187. data/db/migrate/20170319191942_remove_order_id_from_inventory_units.rb +4 -4
  188. data/db/migrate/20180322142651_add_amount_remaining_to_store_credit_events.rb +9 -16
  189. data/db/migrate/20200320144521_add_default_billng_flag_to_user_addresses.rb +1 -0
  190. data/db/migrate/20210815004823_add_unique_index_to_option_values_variants.rb +3 -3
  191. data/db/migrate/20250207104016_add_primary_taxon_to_products.rb +1 -1
  192. data/db/migrate/20250214094207_add_reverse_charge_status_to_store.rb +1 -1
  193. data/db/migrate/20250225051308_add_vat_id_email_and_reverse_charge_status_to_addresses.rb +1 -1
  194. data/db/seeds.rb +3 -3
  195. data/lib/generators/solidus/install/app_templates/authentication/custom.rb +2 -2
  196. data/lib/generators/solidus/install/app_templates/authentication/devise.rb +3 -3
  197. data/lib/generators/solidus/install/app_templates/authentication/existing.rb +1 -1
  198. data/lib/generators/solidus/install/app_templates/frontend/starter.rb +1 -1
  199. data/lib/generators/solidus/install/app_templates/payment_method/braintree.rb +1 -1
  200. data/lib/generators/solidus/install/app_templates/payment_method/paypal.rb +1 -1
  201. data/lib/generators/solidus/install/app_templates/payment_method/stripe.rb +2 -2
  202. data/lib/generators/solidus/install/install_generator.rb +51 -51
  203. data/lib/generators/solidus/install/templates/config/initializers/spree.rb.tt +3 -0
  204. data/lib/generators/solidus/update/update_generator.rb +29 -29
  205. data/lib/generators/spree/custom_user/custom_user_generator.rb +6 -6
  206. data/lib/generators/spree/dummy/dummy_generator.rb +22 -24
  207. data/lib/generators/spree/dummy/templates/rails/boot.rb +3 -3
  208. data/lib/generators/spree/dummy/templates/rails/test.rb +4 -4
  209. data/lib/solidus_core.rb +1 -1
  210. data/lib/spree/app_configuration.rb +59 -47
  211. data/lib/spree/bus.rb +1 -1
  212. data/lib/spree/config.rb +1 -1
  213. data/lib/spree/core/active_merchant_dependencies.rb +8 -8
  214. data/lib/spree/core/class_constantizer.rb +1 -1
  215. data/lib/spree/core/engine.rb +15 -15
  216. data/lib/spree/core/environment.rb +1 -1
  217. data/lib/spree/core/environment_extension.rb +2 -2
  218. data/lib/spree/core/importer/order.rb +15 -15
  219. data/lib/spree/core/importer/product.rb +4 -4
  220. data/lib/spree/core/importer.rb +2 -2
  221. data/lib/spree/core/null_promotion_configuration.rb +7 -7
  222. data/lib/spree/core/permalinks.rb +1 -1
  223. data/lib/spree/core/product_filters.rb +94 -93
  224. data/lib/spree/core/role_configuration.rb +3 -3
  225. data/lib/spree/core/search/base.rb +5 -6
  226. data/lib/spree/core/search/variant.rb +3 -3
  227. data/lib/spree/core/stock_configuration.rb +10 -49
  228. data/lib/spree/core/validators/email.rb +1 -1
  229. data/lib/spree/core/version.rb +3 -3
  230. data/lib/spree/core/versioned_value.rb +4 -6
  231. data/lib/spree/core.rb +49 -49
  232. data/lib/spree/deprecated_instance_variable_proxy.rb +1 -1
  233. data/lib/spree/deprecation.rb +1 -1
  234. data/lib/spree/deprecator.rb +2 -2
  235. data/lib/spree/i18n.rb +2 -2
  236. data/lib/spree/localized_number.rb +3 -3
  237. data/lib/spree/manipulative_query_monitor.rb +19 -0
  238. data/lib/spree/migrations.rb +2 -2
  239. data/lib/spree/permitted_attributes.rb +10 -10
  240. data/lib/spree/preferences/configuration.rb +5 -5
  241. data/lib/spree/preferences/preferable.rb +8 -10
  242. data/lib/spree/preferences/preferable_class_methods.rb +16 -16
  243. data/lib/spree/preferences/preference_differentiator.rb +1 -1
  244. data/lib/spree/preferences/scoped_store.rb +2 -2
  245. data/lib/spree/preferences/static_model_preferences.rb +2 -2
  246. data/lib/spree/preferences/store.rb +6 -6
  247. data/lib/spree/testing_support/ability_helpers.rb +30 -30
  248. data/lib/spree/testing_support/authorization_helpers.rb +6 -5
  249. data/lib/spree/testing_support/blacklist_urls.rb +1 -1
  250. data/lib/spree/testing_support/bus_helpers.rb +1 -1
  251. data/lib/spree/testing_support/capybara_driver.rb +1 -1
  252. data/lib/spree/testing_support/capybara_ext.rb +12 -12
  253. data/lib/spree/testing_support/common_rake.rb +17 -16
  254. data/lib/spree/testing_support/dummy_ability.rb +1 -1
  255. data/lib/spree/testing_support/dummy_app/migrations.rb +1 -1
  256. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +5 -5
  257. data/lib/spree/testing_support/dummy_app/routes.rb +1 -1
  258. data/lib/spree/testing_support/dummy_app.rb +34 -34
  259. data/lib/spree/testing_support/extension_rake.rb +2 -2
  260. data/lib/spree/testing_support/factories/address_factory.rb +12 -12
  261. data/lib/spree/testing_support/factories/adjustment_factory.rb +7 -7
  262. data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +1 -1
  263. data/lib/spree/testing_support/factories/calculator_factory.rb +6 -6
  264. data/lib/spree/testing_support/factories/carton_factory.rb +1 -1
  265. data/lib/spree/testing_support/factories/country_factory.rb +3 -3
  266. data/lib/spree/testing_support/factories/credit_card_factory.rb +3 -3
  267. data/lib/spree/testing_support/factories/customer_return_factory.rb +2 -2
  268. data/lib/spree/testing_support/factories/image_factory.rb +2 -2
  269. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +4 -4
  270. data/lib/spree/testing_support/factories/line_item_factory.rb +2 -2
  271. data/lib/spree/testing_support/factories/option_type_factory.rb +2 -2
  272. data/lib/spree/testing_support/factories/option_value_factory.rb +2 -2
  273. data/lib/spree/testing_support/factories/order_factory.rb +16 -16
  274. data/lib/spree/testing_support/factories/payment_factory.rb +9 -9
  275. data/lib/spree/testing_support/factories/payment_method_factory.rb +10 -10
  276. data/lib/spree/testing_support/factories/price_factory.rb +2 -2
  277. data/lib/spree/testing_support/factories/product_factory.rb +2 -2
  278. data/lib/spree/testing_support/factories/product_option_type_factory.rb +1 -1
  279. data/lib/spree/testing_support/factories/product_property_factory.rb +1 -1
  280. data/lib/spree/testing_support/factories/property_factory.rb +3 -3
  281. data/lib/spree/testing_support/factories/refund_factory.rb +2 -2
  282. data/lib/spree/testing_support/factories/refund_reason_factory.rb +1 -1
  283. data/lib/spree/testing_support/factories/reimbursement_factory.rb +1 -1
  284. data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +1 -1
  285. data/lib/spree/testing_support/factories/return_authorization_factory.rb +3 -3
  286. data/lib/spree/testing_support/factories/return_item_factory.rb +1 -1
  287. data/lib/spree/testing_support/factories/return_reason_factory.rb +1 -1
  288. data/lib/spree/testing_support/factories/role_factory.rb +2 -2
  289. data/lib/spree/testing_support/factories/shipment_factory.rb +3 -3
  290. data/lib/spree/testing_support/factories/shipping_category_factory.rb +1 -1
  291. data/lib/spree/testing_support/factories/shipping_method_factory.rb +7 -7
  292. data/lib/spree/testing_support/factories/shipping_rate_factory.rb +1 -1
  293. data/lib/spree/testing_support/factories/state_factory.rb +4 -4
  294. data/lib/spree/testing_support/factories/stock_item_factory.rb +1 -1
  295. data/lib/spree/testing_support/factories/stock_location_factory.rb +7 -7
  296. data/lib/spree/testing_support/factories/stock_movement_factory.rb +3 -3
  297. data/lib/spree/testing_support/factories/stock_package_factory.rb +3 -3
  298. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +1 -1
  299. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +8 -8
  300. data/lib/spree/testing_support/factories/store_credit_factory.rb +1 -1
  301. data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +1 -1
  302. data/lib/spree/testing_support/factories/store_credit_type_factory.rb +6 -6
  303. data/lib/spree/testing_support/factories/store_factory.rb +2 -2
  304. data/lib/spree/testing_support/factories/tax_category_factory.rb +1 -1
  305. data/lib/spree/testing_support/factories/tax_rate_factory.rb +1 -1
  306. data/lib/spree/testing_support/factories/taxon_factory.rb +3 -3
  307. data/lib/spree/testing_support/factories/taxonomy_factory.rb +1 -1
  308. data/lib/spree/testing_support/factories/user_factory.rb +2 -2
  309. data/lib/spree/testing_support/factories/variant_factory.rb +2 -2
  310. data/lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb +1 -1
  311. data/lib/spree/testing_support/factories/variant_property_rule_factory.rb +1 -1
  312. data/lib/spree/testing_support/factories/variant_property_rule_value_factory.rb +1 -1
  313. data/lib/spree/testing_support/factories/zone_factory.rb +3 -3
  314. data/lib/spree/testing_support/factory_bot.rb +1 -1
  315. data/lib/spree/testing_support/flaky.rb +3 -2
  316. data/lib/spree/testing_support/flash.rb +2 -2
  317. data/lib/spree/testing_support/order_walkthrough.rb +7 -7
  318. data/lib/spree/testing_support/preferences.rb +1 -1
  319. data/lib/spree/testing_support/rake.rb +1 -1
  320. data/lib/spree/testing_support/shared_examples/calculator.rb +1 -1
  321. data/lib/spree/testing_support/shared_examples/gallery.rb +7 -7
  322. data/lib/spree/testing_support/shared_examples/order_factory.rb +9 -9
  323. data/lib/spree/testing_support/shared_examples/working_factory.rb +1 -1
  324. data/lib/spree/testing_support/translations.rb +1 -1
  325. data/lib/spree_core.rb +1 -1
  326. data/lib/tasks/payment_method.rake +2 -2
  327. data/solidus_core.gemspec +49 -49
  328. metadata +60 -54
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rails/version'
4
- require 'rails/generators'
5
- require 'rails/generators/app_base'
3
+ require "rails/version"
4
+ require "rails/generators"
5
+ require "rails/generators/app_base"
6
6
 
7
7
  module Solidus
8
8
  # @private
@@ -12,30 +12,30 @@ module Solidus
12
12
  CORE_MOUNT_ROUTE = "mount Spree::Core::Engine"
13
13
 
14
14
  FRONTENDS = [
15
- { name: 'starter', description: 'Generate all necessary controllers and views directly in your Rails app', default: true },
16
- { name: 'none', description: 'Skip installing a frontend' }
15
+ {name: "starter", description: "Generate all necessary controllers and views directly in your Rails app", default: true},
16
+ {name: "none", description: "Skip installing a frontend"}
17
17
  ]
18
18
 
19
19
  AUTHENTICATIONS = [
20
- { name: 'devise', description: 'Install and configure the standard `devise` integration', default: true },
21
- { name: 'existing', description: 'Integrate and configure an existing `devise` setup' },
22
- { name: 'custom', description: 'A starter configuration for rolling your own authentication system' },
23
- { name: 'none', description: 'Don\'t add any configuration for authentication' }
20
+ {name: "devise", description: "Install and configure the standard `devise` integration", default: true},
21
+ {name: "existing", description: "Integrate and configure an existing `devise` setup"},
22
+ {name: "custom", description: "A starter configuration for rolling your own authentication system"},
23
+ {name: "none", description: "Don't add any configuration for authentication"}
24
24
  ]
25
25
 
26
26
  PAYMENT_METHODS = [
27
- { name: 'paypal', description: 'Install `solidus_paypal_commerce_platform`', default: true },
28
- { name: 'stripe', description: 'Install `solidus_stripe`', default: false },
29
- { name: 'braintree', description: 'Install `solidus_braintree`', default: false },
30
- { name: 'none', description: 'Skip installing a payment method', default: false }
27
+ {name: "paypal", description: "Install `solidus_paypal_commerce_platform`", default: true},
28
+ {name: "stripe", description: "Install `solidus_stripe`", default: false},
29
+ {name: "braintree", description: "Install `solidus_braintree`", default: false},
30
+ {name: "none", description: "Skip installing a payment method", default: false}
31
31
  ]
32
32
 
33
- class_option :migrate, type: :boolean, default: true, banner: 'Run Solidus migrations'
34
- class_option :seed, type: :boolean, default: true, banner: 'Load seed data (migrations must be run)'
35
- class_option :sample, type: :boolean, default: true, banner: 'Load sample data (migrations and seeds must be run)'
36
- class_option :active_storage, type: :boolean, default: true, banner: 'Install ActiveStorage as image attachments handler for products and taxons'
37
- class_option :admin_preview, type: :boolean, default: true, desc: 'Install the admin preview'
38
- class_option :build_admin_tailwind, type: :boolean, default: true, desc: 'Build and install Solidus Admin Tailwind CSS file and rake tasks'
33
+ class_option :migrate, type: :boolean, default: true, banner: "Run Solidus migrations"
34
+ class_option :seed, type: :boolean, default: true, banner: "Load seed data (migrations must be run)"
35
+ class_option :sample, type: :boolean, default: true, banner: "Load sample data (migrations and seeds must be run)"
36
+ class_option :active_storage, type: :boolean, default: true, banner: "Install ActiveStorage as image attachments handler for products and taxons"
37
+ class_option :admin_preview, type: :boolean, default: true, desc: "Install the admin preview"
38
+ class_option :build_admin_tailwind, type: :boolean, default: true, desc: "Build and install Solidus Admin Tailwind CSS file and rake tasks"
39
39
  class_option :auto_accept, type: :boolean
40
40
  class_option :user_class, type: :string
41
41
  class_option :admin_email, type: :string
@@ -58,45 +58,45 @@ module Solidus
58
58
  @load_sample_data = options[:sample] && @run_migrations && @load_seed_data
59
59
 
60
60
  @selected_frontend = selected_option_for(
61
- 'frontend',
62
- selected: ENV['FRONTEND'] || options[:frontend],
63
- available_options: FRONTENDS,
61
+ "frontend",
62
+ selected: ENV["FRONTEND"] || options[:frontend],
63
+ available_options: FRONTENDS
64
64
  )
65
65
 
66
66
  @selected_authentication = selected_option_for(
67
- 'authentication',
67
+ "authentication",
68
68
  selected:
69
- ('devise' if @selected_frontend == 'starter') ||
70
- ('devise' if has_gem?('solidus_auth_devise')) ||
71
- ENV['AUTHENTICATION'] || options[:authentication],
72
- available_options: AUTHENTICATIONS,
69
+ ("devise" if @selected_frontend == "starter") ||
70
+ ("devise" if has_gem?("solidus_auth_devise")) ||
71
+ ENV["AUTHENTICATION"] || options[:authentication],
72
+ available_options: AUTHENTICATIONS
73
73
  )
74
74
 
75
75
  @selected_payment_method = selected_option_for(
76
- 'payment method',
76
+ "payment method",
77
77
  selected:
78
- ('paypal' if has_gem?('solidus_paypal_commerce_platform')) ||
79
- ('stripe' if has_gem?('solidus_stripe')) ||
80
- ('bolt' if has_gem?('solidus_bolt')) ||
81
- ENV['PAYMENT_METHOD'] || options[:payment_method],
82
- available_options: PAYMENT_METHODS,
78
+ ("paypal" if has_gem?("solidus_paypal_commerce_platform")) ||
79
+ ("stripe" if has_gem?("solidus_stripe")) ||
80
+ ("bolt" if has_gem?("solidus_bolt")) ||
81
+ ENV["PAYMENT_METHOD"] || options[:payment_method],
82
+ available_options: PAYMENT_METHODS
83
83
  )
84
84
 
85
85
  # Silence verbose output (e.g. Rails migrations will rely on this environment variable)
86
- ENV['VERBOSE'] = 'false'
86
+ ENV["VERBOSE"] = "false"
87
87
 
88
88
  # No reason to check for their presence if we're about to install them
89
- ENV['SOLIDUS_SKIP_MIGRATIONS_CHECK'] = 'true'
89
+ ENV["SOLIDUS_SKIP_MIGRATIONS_CHECK"] = "true"
90
90
  end
91
91
 
92
92
  def install_routes
93
- if Pathname(app_path).join('config', 'routes.rb').read.include? CORE_MOUNT_ROUTE
93
+ if Pathname(app_path).join("config", "routes.rb").read.include? CORE_MOUNT_ROUTE
94
94
  say_status :route_exist, CORE_MOUNT_ROUTE, :blue
95
95
  else
96
96
  say_status :installing, "solidus routes"
97
97
  mount_point = options[:mount_point] || ask_with_default(
98
98
  desc: 'Where would you like to mount Solidus? (E.g. "/store" or "/shop")',
99
- default: '/',
99
+ default: "/"
100
100
  )
101
101
 
102
102
  shell.mute do
@@ -120,23 +120,23 @@ module Solidus
120
120
  end
121
121
 
122
122
  def add_files
123
- template 'config/initializers/spree.rb.tt', 'config/initializers/spree.rb'
123
+ template "config/initializers/spree.rb.tt", "config/initializers/spree.rb"
124
124
  end
125
125
 
126
126
  def install_file_attachment
127
127
  if options[:active_storage]
128
128
  say_status :assets, "Active Storage", :green
129
- rake 'active_storage:install'
129
+ rake "active_storage:install"
130
130
  else
131
131
  say_status :assets, "Paperclip", :green
132
- gsub_file 'config/initializers/spree.rb', "::ActiveStorageAttachment", "::PaperclipAttachment"
132
+ gsub_file "config/initializers/spree.rb", "::ActiveStorageAttachment", "::PaperclipAttachment"
133
133
  end
134
134
  end
135
135
 
136
136
  def setup_assets
137
- empty_directory 'app/assets/images'
137
+ empty_directory "app/assets/images"
138
138
 
139
- %w{javascripts stylesheets images}.each do |path|
139
+ %w[javascripts stylesheets images].each do |path|
140
140
  empty_directory "vendor/assets/#{path}/spree/backend" if defined?(Spree::Backend) || Rails.env.test?
141
141
  end
142
142
 
@@ -158,19 +158,19 @@ module Solidus
158
158
 
159
159
  def install_migrations
160
160
  say_status :copying, "migrations"
161
- rake 'railties:install:migrations'
161
+ rake "railties:install:migrations"
162
162
  end
163
163
 
164
164
  def create_database
165
165
  say_status :creating, "database"
166
- rake 'db:create'
166
+ rake "db:create"
167
167
  end
168
168
 
169
169
  def run_migrations
170
170
  if @run_migrations
171
171
  say_status :running, "migrations"
172
172
 
173
- rake 'db:migrate'
173
+ rake "db:migrate"
174
174
  else
175
175
  say_status :skipping, "migrations (don't forget to run rake db:migrate)"
176
176
  end
@@ -186,10 +186,10 @@ module Solidus
186
186
  return unless options[:admin_preview]
187
187
 
188
188
  say_status :installing, "SolidusAdmin", :blue
189
- unless File.read(app_path.join('Gemfile')).include?('solidus_admin')
189
+ unless File.read(app_path.join("Gemfile")).include?("solidus_admin")
190
190
  bundle_command 'add solidus_admin -v ">= 0.2"'
191
191
  end
192
- generate "solidus_admin:install #{'--tailwind' if options[:build_admin_tailwind]}"
192
+ generate "solidus_admin:install #{"--tailwind" if options[:build_admin_tailwind]}"
193
193
  end
194
194
 
195
195
  def populate_seed_data
@@ -200,7 +200,7 @@ module Solidus
200
200
  rake_options << "ADMIN_EMAIL=#{options[:admin_email]}" if options[:admin_email]
201
201
  rake_options << "ADMIN_PASSWORD=#{options[:admin_password]}" if options[:admin_password]
202
202
 
203
- rake("db:seed #{rake_options.join(' ')}")
203
+ rake("db:seed #{rake_options.join(" ")}")
204
204
  else
205
205
  say_status :skipping, "seed data (you can always run rake db:seed)"
206
206
  end
@@ -209,7 +209,7 @@ module Solidus
209
209
  def load_sample_data
210
210
  if @load_sample_data
211
211
  say_status :loading, "sample data"
212
- rake 'spree_sample:load'
212
+ rake "spree_sample:load"
213
213
  else
214
214
  say_status :skipping, "sample data (you can always run rake spree_sample:load)"
215
215
  end
@@ -223,7 +223,7 @@ module Solidus
223
223
 
224
224
  def bundle_command(command, env = {})
225
225
  # Make `bundle install` less verbose by skipping the "Using ..." messages
226
- super(command, env.reverse_merge('BUNDLE_SUPPRESS_INSTALL_USING_MESSAGES' => 'true'))
226
+ super(command, env.reverse_merge("BUNDLE_SUPPRESS_INSTALL_USING_MESSAGES" => "true"))
227
227
  ensure
228
228
  Bundler.reset_paths!
229
229
  end
@@ -268,7 +268,7 @@ module Solidus
268
268
 
269
269
  def apply_template_for(topic, selected)
270
270
  template_path = Dir["#{__dir__}/app_templates/#{topic}/*.rb"].find do |path|
271
- File.basename(path, '.rb') == selected
271
+ File.basename(path, ".rb") == selected
272
272
  end
273
273
 
274
274
  unless template_path
@@ -21,6 +21,9 @@ Spree.config do |config|
21
21
  config.image_attachment_module = 'Spree::Image::ActiveStorageAttachment'
22
22
  config.taxon_attachment_module = 'Spree::Taxon::ActiveStorageAttachment'
23
23
 
24
+ # Uncomment to recalculate cart prices when the cart changes
25
+ # config.recalculate_cart_prices = true
26
+
24
27
  # Defaults
25
28
  # Permission Sets:
26
29
 
@@ -1,46 +1,46 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree/preferences/preference_differentiator'
4
- require 'rails/generators'
3
+ require "spree/preferences/preference_differentiator"
4
+ require "rails/generators"
5
5
 
6
6
  module Solidus
7
7
  # @private
8
8
  class UpdateGenerator < ::Rails::Generators::Base
9
9
  FROM = Spree.previous_solidus_minor_version
10
10
 
11
- desc 'Generates a new initializer to preview the new defaults for current Solidus version and copy new migrations'
11
+ desc "Generates a new initializer to preview the new defaults for current Solidus version and copy new migrations"
12
12
 
13
- source_root File.expand_path('templates', __dir__)
13
+ source_root File.expand_path("templates", __dir__)
14
14
 
15
15
  class_option :initializer_basename,
16
- type: :string,
17
- default: 'new_solidus_defaults',
18
- banner: 'The name for the new initializer'
16
+ type: :string,
17
+ default: "new_solidus_defaults",
18
+ banner: "The name for the new initializer"
19
19
 
20
20
  class_option :previous_version_prompt,
21
- type: :boolean,
22
- default: true,
23
- banner: 'Prompt to warn about only previous version support'
21
+ type: :boolean,
22
+ default: true,
23
+ banner: "Prompt to warn about only previous version support"
24
24
 
25
25
  class_option :from,
26
- type: :string,
27
- default: FROM,
28
- banner: 'Solidus version from which you are upgrading'
26
+ type: :string,
27
+ default: FROM,
28
+ banner: "Solidus version from which you are upgrading"
29
29
 
30
30
  class_option :to,
31
- type: :string,
32
- default: Spree.solidus_version,
33
- hide: true
31
+ type: :string,
32
+ default: Spree.solidus_version,
33
+ hide: true
34
34
 
35
35
  class_option :initializer_directory,
36
- type: :string,
37
- default: 'config/initializers/',
38
- hide: true
36
+ type: :string,
37
+ default: "config/initializers/",
38
+ hide: true
39
39
 
40
40
  class_option :install_migrations,
41
- type: :boolean,
42
- default: true,
43
- hide: true
41
+ type: :boolean,
42
+ default: true,
43
+ hide: true
44
44
 
45
45
  def create_new_defaults_initializer
46
46
  previous_version_prompt = options[:previous_version_prompt]
@@ -58,15 +58,15 @@ module Solidus
58
58
  @backend_changes = backend_changes_template(from, to)
59
59
  @api_changes = api_changes_template(from, to)
60
60
 
61
- template 'config/initializers/new_solidus_defaults.rb.tt',
62
- File.join(options[:initializer_directory], "#{options[:initializer_basename]}.rb")
61
+ template "config/initializers/new_solidus_defaults.rb.tt",
62
+ File.join(options[:initializer_directory], "#{options[:initializer_basename]}.rb")
63
63
  end
64
64
 
65
65
  def install_migrations
66
66
  return unless options[:install_migrations]
67
67
 
68
68
  say_status :copying, "migrations"
69
- rake 'spree:install:migrations'
69
+ rake "spree:install:migrations"
70
70
  end
71
71
 
72
72
  def print_message
@@ -92,26 +92,26 @@ module Solidus
92
92
  end
93
93
 
94
94
  def frontend_changes_template(from, to)
95
- return '' unless defined?(Spree::Frontend::Engine)
95
+ return "" unless defined?(Spree::Frontend::Engine)
96
96
 
97
97
  changes_template_for(Spree::FrontendConfiguration, from, to)
98
98
  end
99
99
 
100
100
  def backend_changes_template(from, to)
101
- return '' unless defined?(Spree::Backend::Engine)
101
+ return "" unless defined?(Spree::Backend::Engine)
102
102
 
103
103
  changes_template_for(Spree::BackendConfiguration, from, to)
104
104
  end
105
105
 
106
106
  def api_changes_template(from, to)
107
- return '' unless defined?(Spree::Api::Engine)
107
+ return "" unless defined?(Spree::Api::Engine)
108
108
 
109
109
  changes_template_for(Spree::ApiConfiguration, from, to)
110
110
  end
111
111
 
112
112
  def changes_template_for(klass, from, to)
113
113
  changes = Spree::Preferences::PreferenceDifferentiator.new(klass).call(from:, to:)
114
- return '# No changes' if changes.empty?
114
+ return "# No changes" if changes.empty?
115
115
 
116
116
  [
117
117
  ["config.load_defaults('#{from}')"] +
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rails/generators/active_record/migration'
3
+ require "rails/generators/active_record/migration"
4
4
 
5
5
  module Spree
6
6
  # @private
@@ -9,7 +9,7 @@ module Spree
9
9
 
10
10
  desc "Set up a Solidus installation with a custom User class"
11
11
 
12
- source_root File.expand_path('templates', File.dirname(__FILE__))
12
+ source_root File.expand_path("templates", File.dirname(__FILE__))
13
13
 
14
14
  def check_for_constant
15
15
  klass
@@ -19,17 +19,17 @@ module Spree
19
19
  end
20
20
 
21
21
  def generate
22
- migration_template 'migration.rb.tt', "db/migrate/add_spree_fields_to_custom_user_table.rb"
23
- template 'authentication_helpers.rb.tt', "lib/spree/authentication_helpers.rb"
22
+ migration_template "migration.rb.tt", "db/migrate/add_spree_fields_to_custom_user_table.rb"
23
+ template "authentication_helpers.rb.tt", "lib/spree/authentication_helpers.rb"
24
24
 
25
- initializer 'solidus_authentication', <<~RUBY
25
+ initializer "solidus_authentication", <<~RUBY
26
26
  Rails.application.config.to_prepare do
27
27
  ApplicationController.include Spree::AuthenticationHelpers, Spree::CurrentUserHelpers
28
28
  Spree::Api::BaseController.include Spree::CurrentUserHelpers if defined? Spree::Api
29
29
  end
30
30
  RUBY
31
31
 
32
- gsub_file 'config/initializers/spree.rb', /Spree\.user_class.?=.?.+$/, %{Spree.user_class = "#{class_name}"}
32
+ gsub_file "config/initializers/spree.rb", /Spree\.user_class.?=.?.+$/, %(Spree.user_class = "#{class_name}")
33
33
  end
34
34
 
35
35
  private
@@ -1,20 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "rails/generators/rails/app/app_generator"
4
- require 'active_support/core_ext/hash'
5
- require 'spree/core/version'
4
+ require "active_support/core_ext/hash"
5
+ require "spree/core/version"
6
6
 
7
7
  module Spree
8
8
  # @private
9
9
  class DummyGenerator < Rails::Generators::Base
10
10
  desc "Creates blank Rails application, installs Solidus and all sample data"
11
11
 
12
- class_option :lib_name, default: ''
13
- class_option :database, default: ''
12
+ class_option :lib_name, default: ""
13
+ class_option :database, default: ""
14
14
 
15
15
  def self.source_paths
16
16
  paths = superclass.source_paths
17
- paths << File.expand_path('templates', __dir__)
17
+ paths << File.expand_path("templates", __dir__)
18
18
  paths.flatten
19
19
  end
20
20
 
@@ -30,7 +30,7 @@ module Spree
30
30
  # calling slice on a Thor::CoreExtensions::HashWithIndifferentAccess
31
31
  # object has been known to return nil
32
32
  opts = {}.merge(options).slice(*PASSTHROUGH_OPTIONS)
33
- opts[:database] = 'sqlite3' if opts[:database].blank?
33
+ opts[:database] = "sqlite3" if opts[:database].blank?
34
34
  opts[:force] = true
35
35
  opts[:skip_bundle] = true
36
36
  opts[:skip_gemfile] = true
@@ -68,9 +68,9 @@ module Spree
68
68
  def test_dummy_inject_extension_requirements
69
69
  if DummyGeneratorHelper.inject_extension_requirements
70
70
  inside dummy_path do
71
- inject_require_for('spree_frontend')
72
- inject_require_for('spree_backend')
73
- inject_require_for('spree_api')
71
+ inject_require_for("spree_frontend")
72
+ inject_require_for("spree_backend")
73
+ inject_require_for("spree_api")
74
74
  end
75
75
  end
76
76
  end
@@ -98,23 +98,21 @@ module Spree
98
98
  protected
99
99
 
100
100
  def inject_require_for(requirement)
101
- inject_into_file 'config/application.rb', (
102
- <<~RUBY
103
- begin
104
- require '#{requirement}'
105
- rescue LoadError
106
- # #{requirement} is not available.
107
- end
108
- RUBY
109
- ), before: /require '#{@lib_name}'/, verbose: true
101
+ inject_into_file "config/application.rb", <<~RUBY, before: /require '#{@lib_name}'/, verbose: true
102
+ begin
103
+ require '#{requirement}'
104
+ rescue LoadError
105
+ # #{requirement} is not available.
106
+ end
107
+ RUBY
110
108
  end
111
109
 
112
110
  def dummy_path
113
- ENV['DUMMY_PATH'] || 'spec/dummy'
111
+ ENV["DUMMY_PATH"] || "spec/dummy"
114
112
  end
115
113
 
116
114
  def module_name
117
- 'Dummy'
115
+ "Dummy"
118
116
  end
119
117
 
120
118
  def application_definition
@@ -126,10 +124,10 @@ module Spree
126
124
  end
127
125
  end
128
126
  end
129
- alias :store_application_definition! :application_definition
127
+ alias_method :store_application_definition!, :application_definition
130
128
 
131
129
  def camelized
132
- @camelized ||= name.gsub(/\W/, '_').squeeze('_').camelize
130
+ @camelized ||= name.gsub(/\W/, "_").squeeze("_").camelize
133
131
  end
134
132
 
135
133
  def remove_directory_if_exists(path)
@@ -140,9 +138,9 @@ module Spree
140
138
  core_gems = ["spree/core", "spree/api", "spree/backend", "spree/frontend"]
141
139
 
142
140
  if core_gems.include?(lib_name)
143
- '../../../../../Gemfile'
141
+ "../../../../../Gemfile"
144
142
  else
145
- '../../../../Gemfile'
143
+ "../../../../Gemfile"
146
144
  end
147
145
  end
148
146
  end
@@ -1,6 +1,6 @@
1
- require 'rubygems'
1
+ require "rubygems"
2
2
  gemfile = File.expand_path("<%= gemfile_path %>", __FILE__)
3
3
 
4
- ENV['BUNDLE_GEMFILE'] = gemfile
5
- require 'bundler'
4
+ ENV["BUNDLE_GEMFILE"] = gemfile
5
+ require "bundler"
6
6
  Bundler.setup
@@ -9,16 +9,16 @@ Dummy::Application.configure do
9
9
 
10
10
  # Configure static asset server for tests with Cache-Control for performance
11
11
  config.public_file_server.enabled = true
12
- config.public_file_server.headers = { 'Cache-Control' => "public, max-age=3600" }
12
+ config.public_file_server.headers = {"Cache-Control" => "public, max-age=3600"}
13
13
 
14
14
  # Show full error reports and disable caching
15
- config.consider_all_requests_local = true
15
+ config.consider_all_requests_local = true
16
16
  config.action_controller.perform_caching = false
17
17
 
18
18
  config.eager_load = false
19
19
 
20
20
  # Raise exceptions instead of rendering exception templates
21
- if Rails.gem_version >= Gem::Version.new('7.1')
21
+ if Rails.gem_version >= Gem::Version.new("7.1")
22
22
  config.action_controller.raise_on_missing_callback_actions = true
23
23
  config.action_dispatch.show_exceptions = :none
24
24
  else
@@ -37,7 +37,7 @@ Dummy::Application.configure do
37
37
  config.active_storage.service = :test
38
38
 
39
39
  # Raise on deprecation warnings
40
- if ENV['SOLIDUS_RAISE_DEPRECATIONS'].present?
40
+ if ENV["SOLIDUS_RAISE_DEPRECATIONS"].present?
41
41
  Spree.deprecator.behavior = :raise
42
42
  end
43
43
  end
data/lib/solidus_core.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spree_core'
3
+ require "spree_core"