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.
- checksums.yaml +4 -4
- data/Rakefile +13 -13
- data/app/controllers/spree/base_controller.rb +2 -2
- data/app/helpers/spree/base_helper.rb +24 -24
- data/app/helpers/spree/checkout_helper.rb +7 -7
- data/app/helpers/spree/core/controller_helpers/auth.rb +1 -1
- data/app/helpers/spree/core/controller_helpers/common.rb +3 -2
- data/app/helpers/spree/core/controller_helpers/order.rb +3 -5
- data/app/helpers/spree/core/controller_helpers/payment_parameters.rb +1 -2
- data/app/helpers/spree/core/controller_helpers/strong_parameters.rb +10 -10
- data/app/helpers/spree/products_helper.rb +5 -5
- data/app/helpers/spree/store_helper.rb +1 -1
- data/app/mailers/spree/carton_mailer.rb +3 -3
- data/app/mailers/spree/order_mailer.rb +4 -4
- data/app/mailers/spree/reimbursement_mailer.rb +2 -2
- data/app/models/concerns/spree/active_storage_adapter/attachment.rb +5 -5
- data/app/models/concerns/spree/active_storage_adapter/normalization.rb +5 -5
- data/app/models/concerns/spree/active_storage_adapter.rb +2 -2
- data/app/models/concerns/spree/adjustment_source.rb +4 -4
- data/app/models/concerns/spree/display_money.rb +2 -2
- data/app/models/concerns/spree/named_type.rb +1 -1
- data/app/models/concerns/spree/ordered_property_value_list.rb +2 -2
- data/app/models/concerns/spree/preferences/persistable.rb +1 -1
- data/app/models/concerns/spree/ransackable_attributes.rb +1 -0
- data/app/models/concerns/spree/soft_deletable.rb +2 -1
- data/app/models/concerns/spree/state_change_tracking.rb +1 -1
- data/app/models/concerns/spree/user_address_book.rb +12 -12
- data/app/models/concerns/spree/user_methods.rb +9 -9
- data/app/models/concerns/spree/user_reporting.rb +1 -0
- data/app/models/spree/ability.rb +1 -1
- data/app/models/spree/address/name.rb +1 -1
- data/app/models/spree/address.rb +7 -7
- data/app/models/spree/adjustment.rb +11 -10
- data/app/models/spree/adjustment_reason.rb +2 -2
- data/app/models/spree/billing_integration.rb +2 -2
- data/app/models/spree/calculator/default_tax.rb +2 -2
- data/app/models/spree/calculator/flat_fee.rb +1 -1
- data/app/models/spree/calculator/flat_rate.rb +2 -2
- data/app/models/spree/calculator/returns/default_refund_amount.rb +3 -3
- data/app/models/spree/calculator/shipping/flat_percent_item_total.rb +2 -2
- data/app/models/spree/calculator/shipping/flat_rate.rb +3 -3
- data/app/models/spree/calculator/shipping/flexi_rate.rb +8 -8
- data/app/models/spree/calculator/shipping/per_item.rb +3 -3
- data/app/models/spree/calculator/shipping/price_sack.rb +3 -3
- data/app/models/spree/calculator.rb +31 -6
- data/app/models/spree/carton.rb +4 -4
- data/app/models/spree/classification.rb +2 -2
- data/app/models/spree/core/state_machines/order/class_methods.rb +3 -3
- data/app/models/spree/core/state_machines/return_item/acceptance_status.rb +1 -1
- data/app/models/spree/country.rb +1 -1
- data/app/models/spree/credit_card.rb +27 -27
- data/app/models/spree/customer_return.rb +5 -4
- data/app/models/spree/distributed_amounts_handler.rb +1 -1
- data/app/models/spree/fulfilment_changer.rb +22 -22
- data/app/models/spree/image/active_storage_attachment.rb +2 -2
- data/app/models/spree/image/paperclip_attachment.rb +8 -8
- data/app/models/spree/in_memory_order_updater.rb +262 -0
- data/app/models/spree/inventory_unit.rb +11 -11
- data/app/models/spree/item_total.rb +1 -1
- data/app/models/spree/legacy_user.rb +2 -2
- data/app/models/spree/line_item.rb +21 -11
- data/app/models/spree/log_entry.rb +3 -3
- data/app/models/spree/mergeable_orders_finder.rb +44 -0
- data/app/models/spree/money.rb +2 -1
- data/app/models/spree/null_promotion_adjuster.rb +1 -1
- data/app/models/spree/option_type.rb +1 -1
- data/app/models/spree/option_value.rb +2 -2
- data/app/models/spree/order/number_generator.rb +1 -1
- data/app/models/spree/order.rb +66 -64
- data/app/models/spree/order_cancellations.rb +1 -3
- data/app/models/spree/order_inventory.rb +5 -8
- data/app/models/spree/order_mutex.rb +1 -1
- data/app/models/spree/order_shipping.rb +1 -1
- data/app/models/spree/order_updater.rb +59 -37
- data/app/models/spree/payment/cancellation.rb +2 -2
- data/app/models/spree/payment/processing.rb +22 -22
- data/app/models/spree/payment.rb +25 -25
- data/app/models/spree/payment_capture_event.rb +2 -2
- data/app/models/spree/payment_create.rb +1 -1
- data/app/models/spree/payment_method/bogus_credit_card.rb +18 -18
- data/app/models/spree/payment_method/check.rb +3 -3
- data/app/models/spree/payment_method/credit_card.rb +1 -1
- data/app/models/spree/payment_method/simple_bogus_credit_card.rb +3 -3
- data/app/models/spree/payment_method/store_credit.rb +13 -13
- data/app/models/spree/payment_method.rb +12 -11
- data/app/models/spree/payment_source.rb +2 -2
- data/app/models/spree/permission_sets/dashboard_display.rb +3 -3
- data/app/models/spree/permission_sets/default_customer.rb +1 -1
- data/app/models/spree/preference.rb +1 -1
- data/app/models/spree/price.rb +7 -6
- data/app/models/spree/product/scopes.rb +23 -23
- data/app/models/spree/product.rb +37 -41
- data/app/models/spree/product_option_type.rb +2 -2
- data/app/models/spree/product_property.rb +3 -3
- data/app/models/spree/refund.rb +10 -10
- data/app/models/spree/refund_reason.rb +2 -2
- data/app/models/spree/reimbursement/credit.rb +1 -1
- data/app/models/spree/reimbursement.rb +8 -8
- data/app/models/spree/reimbursement_tax_calculator.rb +1 -1
- data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +1 -1
- data/app/models/spree/reimbursement_type.rb +2 -2
- data/app/models/spree/return_authorization.rb +7 -6
- data/app/models/spree/return_item/eligibility_validator/base_validator.rb +2 -2
- data/app/models/spree/return_item/eligibility_validator/default.rb +1 -1
- data/app/models/spree/return_item/eligibility_validator/inventory_shipped.rb +1 -1
- data/app/models/spree/return_item/eligibility_validator/no_reimbursements.rb +1 -1
- data/app/models/spree/return_item/eligibility_validator/order_completed.rb +1 -1
- data/app/models/spree/return_item/eligibility_validator/rma_required.rb +1 -1
- data/app/models/spree/return_item/eligibility_validator/time_since_purchase.rb +1 -1
- data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +6 -6
- data/app/models/spree/return_item.rb +31 -30
- data/app/models/spree/return_reason.rb +1 -1
- data/app/models/spree/role.rb +1 -1
- data/app/models/spree/role_user.rb +1 -1
- data/app/models/spree/shipment.rb +37 -29
- data/app/models/spree/shipping_method.rb +9 -9
- data/app/models/spree/shipping_method_category.rb +2 -2
- data/app/models/spree/shipping_rate.rb +12 -10
- data/app/models/spree/shipping_rate_tax.rb +5 -4
- data/app/models/spree/simple_order_contents.rb +2 -2
- data/app/models/spree/state.rb +1 -1
- data/app/models/spree/stock/availability.rb +9 -9
- data/app/models/spree/stock/availability_validator.rb +3 -3
- data/app/models/spree/stock/differentiator.rb +2 -2
- data/app/models/spree/stock/estimator.rb +4 -4
- data/app/models/spree/stock/inventory_validator.rb +1 -1
- data/app/models/spree/stock/package.rb +3 -3
- data/app/models/spree/stock_item.rb +5 -5
- data/app/models/spree/stock_location.rb +6 -6
- data/app/models/spree/stock_movement.rb +2 -2
- data/app/models/spree/stock_quantities.rb +2 -2
- data/app/models/spree/store.rb +3 -3
- data/app/models/spree/store_credit.rb +30 -29
- data/app/models/spree/store_credit_category.rb +2 -2
- data/app/models/spree/store_credit_event.rb +6 -6
- data/app/models/spree/store_credit_reason.rb +1 -1
- data/app/models/spree/store_credit_type.rb +3 -3
- data/app/models/spree/store_selector/by_server_name.rb +1 -1
- data/app/models/spree/store_selector/legacy.rb +1 -1
- data/app/models/spree/tax/item_tax.rb +1 -0
- data/app/models/spree/tax/order_tax.rb +1 -0
- data/app/models/spree/tax_category.rb +3 -3
- data/app/models/spree/tax_rate.rb +5 -5
- data/app/models/spree/tax_rate_tax_category.rb +2 -2
- data/app/models/spree/taxon/active_storage_attachment.rb +2 -2
- data/app/models/spree/taxon/paperclip_attachment.rb +4 -4
- data/app/models/spree/taxon.rb +16 -17
- data/app/models/spree/taxon_brand_selector.rb +3 -3
- data/app/models/spree/unauthorized_redirect_handler.rb +1 -1
- data/app/models/spree/unit_cancel.rb +4 -4
- data/app/models/spree/user_address.rb +3 -3
- data/app/models/spree/user_last_url_storer/rules/authentication_rule.rb +6 -8
- data/app/models/spree/user_last_url_storer.rb +1 -1
- data/app/models/spree/variant/price_selector.rb +1 -1
- data/app/models/spree/variant/scopes.rb +9 -9
- data/app/models/spree/variant.rb +25 -25
- data/app/models/spree/variant_property_rule.rb +2 -2
- data/app/models/spree/variant_property_rule_condition.rb +1 -1
- data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +4 -4
- data/app/models/spree/wallet/default_payment_builder.rb +1 -1
- data/app/models/spree/wallet_payment_source.rb +2 -2
- data/app/models/spree/zone.rb +18 -18
- data/app/models/spree/zone_member.rb +1 -1
- data/app/subscribers/spree/carton_shipped_mailer_subscriber.rb +2 -2
- data/app/subscribers/spree/order_cancel_mailer_subscriber.rb +2 -2
- data/app/subscribers/spree/order_confirmation_mailer_subscriber.rb +2 -2
- data/app/subscribers/spree/order_inventory_cancellation_mailer_subscriber.rb +2 -2
- data/app/subscribers/spree/reimbursement_mailer_subscriber.rb +2 -2
- data/config/initializers/assets.rb +1 -1
- data/config/initializers/db_query_matchers.rb +9 -0
- data/config/initializers/friendly_id.rb +2 -2
- data/config/initializers/inflections.rb +1 -1
- data/config/initializers/money.rb +1 -1
- data/config/locales/en.yml +1 -0
- data/db/default/spree/countries.rb +7 -7
- data/db/default/spree/return_reasons.rb +11 -11
- data/db/default/spree/stock_locations.rb +1 -1
- data/db/default/spree/store_credit.rb +3 -4
- data/db/default/spree/stores.rb +1 -1
- data/db/default/spree/zones.rb +5 -5
- data/db/migrate/20160101010000_solidus_one_four.rb +16 -16
- data/db/migrate/20160420044191_create_spree_wallet_payment_sources.rb +3 -3
- data/db/migrate/20160420181916_migrate_credit_cards_to_wallet_payment_sources.rb +7 -6
- data/db/migrate/20161014221052_add_available_to_columns_and_remove_display_on_from_payment_methods.rb +10 -10
- data/db/migrate/20161123154034_add_available_to_users_and_remove_display_on_from_shipping_methods.rb +6 -6
- data/db/migrate/20161129035810_add_index_to_spree_payments_number.rb +1 -1
- data/db/migrate/20170319191942_remove_order_id_from_inventory_units.rb +4 -4
- data/db/migrate/20180322142651_add_amount_remaining_to_store_credit_events.rb +9 -16
- data/db/migrate/20200320144521_add_default_billng_flag_to_user_addresses.rb +1 -0
- data/db/migrate/20210815004823_add_unique_index_to_option_values_variants.rb +3 -3
- data/db/migrate/20250207104016_add_primary_taxon_to_products.rb +1 -1
- data/db/migrate/20250214094207_add_reverse_charge_status_to_store.rb +1 -1
- data/db/migrate/20250225051308_add_vat_id_email_and_reverse_charge_status_to_addresses.rb +1 -1
- data/db/seeds.rb +3 -3
- data/lib/generators/solidus/install/app_templates/authentication/custom.rb +2 -2
- data/lib/generators/solidus/install/app_templates/authentication/devise.rb +3 -3
- data/lib/generators/solidus/install/app_templates/authentication/existing.rb +1 -1
- data/lib/generators/solidus/install/app_templates/frontend/starter.rb +1 -1
- data/lib/generators/solidus/install/app_templates/payment_method/braintree.rb +1 -1
- data/lib/generators/solidus/install/app_templates/payment_method/paypal.rb +1 -1
- data/lib/generators/solidus/install/app_templates/payment_method/stripe.rb +2 -2
- data/lib/generators/solidus/install/install_generator.rb +51 -51
- data/lib/generators/solidus/install/templates/config/initializers/spree.rb.tt +3 -0
- data/lib/generators/solidus/update/update_generator.rb +29 -29
- data/lib/generators/spree/custom_user/custom_user_generator.rb +6 -6
- data/lib/generators/spree/dummy/dummy_generator.rb +22 -24
- data/lib/generators/spree/dummy/templates/rails/boot.rb +3 -3
- data/lib/generators/spree/dummy/templates/rails/test.rb +4 -4
- data/lib/solidus_core.rb +1 -1
- data/lib/spree/app_configuration.rb +59 -47
- data/lib/spree/bus.rb +1 -1
- data/lib/spree/config.rb +1 -1
- data/lib/spree/core/active_merchant_dependencies.rb +8 -8
- data/lib/spree/core/class_constantizer.rb +1 -1
- data/lib/spree/core/engine.rb +15 -15
- data/lib/spree/core/environment.rb +1 -1
- data/lib/spree/core/environment_extension.rb +2 -2
- data/lib/spree/core/importer/order.rb +15 -15
- data/lib/spree/core/importer/product.rb +4 -4
- data/lib/spree/core/importer.rb +2 -2
- data/lib/spree/core/null_promotion_configuration.rb +7 -7
- data/lib/spree/core/permalinks.rb +1 -1
- data/lib/spree/core/product_filters.rb +94 -93
- data/lib/spree/core/role_configuration.rb +3 -3
- data/lib/spree/core/search/base.rb +5 -6
- data/lib/spree/core/search/variant.rb +3 -3
- data/lib/spree/core/stock_configuration.rb +10 -49
- data/lib/spree/core/validators/email.rb +1 -1
- data/lib/spree/core/version.rb +3 -3
- data/lib/spree/core/versioned_value.rb +4 -6
- data/lib/spree/core.rb +49 -49
- data/lib/spree/deprecated_instance_variable_proxy.rb +1 -1
- data/lib/spree/deprecation.rb +1 -1
- data/lib/spree/deprecator.rb +2 -2
- data/lib/spree/i18n.rb +2 -2
- data/lib/spree/localized_number.rb +3 -3
- data/lib/spree/manipulative_query_monitor.rb +19 -0
- data/lib/spree/migrations.rb +2 -2
- data/lib/spree/permitted_attributes.rb +10 -10
- data/lib/spree/preferences/configuration.rb +5 -5
- data/lib/spree/preferences/preferable.rb +8 -10
- data/lib/spree/preferences/preferable_class_methods.rb +16 -16
- data/lib/spree/preferences/preference_differentiator.rb +1 -1
- data/lib/spree/preferences/scoped_store.rb +2 -2
- data/lib/spree/preferences/static_model_preferences.rb +2 -2
- data/lib/spree/preferences/store.rb +6 -6
- data/lib/spree/testing_support/ability_helpers.rb +30 -30
- data/lib/spree/testing_support/authorization_helpers.rb +6 -5
- data/lib/spree/testing_support/blacklist_urls.rb +1 -1
- data/lib/spree/testing_support/bus_helpers.rb +1 -1
- data/lib/spree/testing_support/capybara_driver.rb +1 -1
- data/lib/spree/testing_support/capybara_ext.rb +12 -12
- data/lib/spree/testing_support/common_rake.rb +17 -16
- data/lib/spree/testing_support/dummy_ability.rb +1 -1
- data/lib/spree/testing_support/dummy_app/migrations.rb +1 -1
- data/lib/spree/testing_support/dummy_app/rake_tasks.rb +5 -5
- data/lib/spree/testing_support/dummy_app/routes.rb +1 -1
- data/lib/spree/testing_support/dummy_app.rb +34 -34
- data/lib/spree/testing_support/extension_rake.rb +2 -2
- data/lib/spree/testing_support/factories/address_factory.rb +12 -12
- data/lib/spree/testing_support/factories/adjustment_factory.rb +7 -7
- data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +1 -1
- data/lib/spree/testing_support/factories/calculator_factory.rb +6 -6
- data/lib/spree/testing_support/factories/carton_factory.rb +1 -1
- data/lib/spree/testing_support/factories/country_factory.rb +3 -3
- data/lib/spree/testing_support/factories/credit_card_factory.rb +3 -3
- data/lib/spree/testing_support/factories/customer_return_factory.rb +2 -2
- data/lib/spree/testing_support/factories/image_factory.rb +2 -2
- data/lib/spree/testing_support/factories/inventory_unit_factory.rb +4 -4
- data/lib/spree/testing_support/factories/line_item_factory.rb +2 -2
- data/lib/spree/testing_support/factories/option_type_factory.rb +2 -2
- data/lib/spree/testing_support/factories/option_value_factory.rb +2 -2
- data/lib/spree/testing_support/factories/order_factory.rb +16 -16
- data/lib/spree/testing_support/factories/payment_factory.rb +9 -9
- data/lib/spree/testing_support/factories/payment_method_factory.rb +10 -10
- data/lib/spree/testing_support/factories/price_factory.rb +2 -2
- data/lib/spree/testing_support/factories/product_factory.rb +2 -2
- data/lib/spree/testing_support/factories/product_option_type_factory.rb +1 -1
- data/lib/spree/testing_support/factories/product_property_factory.rb +1 -1
- data/lib/spree/testing_support/factories/property_factory.rb +3 -3
- data/lib/spree/testing_support/factories/refund_factory.rb +2 -2
- data/lib/spree/testing_support/factories/refund_reason_factory.rb +1 -1
- data/lib/spree/testing_support/factories/reimbursement_factory.rb +1 -1
- data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +1 -1
- data/lib/spree/testing_support/factories/return_authorization_factory.rb +3 -3
- data/lib/spree/testing_support/factories/return_item_factory.rb +1 -1
- data/lib/spree/testing_support/factories/return_reason_factory.rb +1 -1
- data/lib/spree/testing_support/factories/role_factory.rb +2 -2
- data/lib/spree/testing_support/factories/shipment_factory.rb +3 -3
- data/lib/spree/testing_support/factories/shipping_category_factory.rb +1 -1
- data/lib/spree/testing_support/factories/shipping_method_factory.rb +7 -7
- data/lib/spree/testing_support/factories/shipping_rate_factory.rb +1 -1
- data/lib/spree/testing_support/factories/state_factory.rb +4 -4
- data/lib/spree/testing_support/factories/stock_item_factory.rb +1 -1
- data/lib/spree/testing_support/factories/stock_location_factory.rb +7 -7
- data/lib/spree/testing_support/factories/stock_movement_factory.rb +3 -3
- data/lib/spree/testing_support/factories/stock_package_factory.rb +3 -3
- data/lib/spree/testing_support/factories/store_credit_category_factory.rb +1 -1
- data/lib/spree/testing_support/factories/store_credit_event_factory.rb +8 -8
- data/lib/spree/testing_support/factories/store_credit_factory.rb +1 -1
- data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +1 -1
- data/lib/spree/testing_support/factories/store_credit_type_factory.rb +6 -6
- data/lib/spree/testing_support/factories/store_factory.rb +2 -2
- data/lib/spree/testing_support/factories/tax_category_factory.rb +1 -1
- data/lib/spree/testing_support/factories/tax_rate_factory.rb +1 -1
- data/lib/spree/testing_support/factories/taxon_factory.rb +3 -3
- data/lib/spree/testing_support/factories/taxonomy_factory.rb +1 -1
- data/lib/spree/testing_support/factories/user_factory.rb +2 -2
- data/lib/spree/testing_support/factories/variant_factory.rb +2 -2
- data/lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb +1 -1
- data/lib/spree/testing_support/factories/variant_property_rule_factory.rb +1 -1
- data/lib/spree/testing_support/factories/variant_property_rule_value_factory.rb +1 -1
- data/lib/spree/testing_support/factories/zone_factory.rb +3 -3
- data/lib/spree/testing_support/factory_bot.rb +1 -1
- data/lib/spree/testing_support/flaky.rb +3 -2
- data/lib/spree/testing_support/flash.rb +2 -2
- data/lib/spree/testing_support/order_walkthrough.rb +7 -7
- data/lib/spree/testing_support/preferences.rb +1 -1
- data/lib/spree/testing_support/rake.rb +1 -1
- data/lib/spree/testing_support/shared_examples/calculator.rb +1 -1
- data/lib/spree/testing_support/shared_examples/gallery.rb +7 -7
- data/lib/spree/testing_support/shared_examples/order_factory.rb +9 -9
- data/lib/spree/testing_support/shared_examples/working_factory.rb +1 -1
- data/lib/spree/testing_support/translations.rb +1 -1
- data/lib/spree_core.rb +1 -1
- data/lib/tasks/payment_method.rake +2 -2
- data/solidus_core.gemspec +49 -49
- metadata +60 -54
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
4
|
-
require
|
|
5
|
-
require
|
|
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
|
-
{
|
|
16
|
-
{
|
|
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
|
-
{
|
|
21
|
-
{
|
|
22
|
-
{
|
|
23
|
-
{
|
|
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
|
-
{
|
|
28
|
-
{
|
|
29
|
-
{
|
|
30
|
-
{
|
|
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:
|
|
34
|
-
class_option :seed, type: :boolean, default: true, banner:
|
|
35
|
-
class_option :sample, type: :boolean, default: true, banner:
|
|
36
|
-
class_option :active_storage, type: :boolean, default: true, banner:
|
|
37
|
-
class_option :admin_preview, type: :boolean, default: true, desc:
|
|
38
|
-
class_option :build_admin_tailwind, type: :boolean, default: true, desc:
|
|
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
|
-
|
|
62
|
-
selected: ENV[
|
|
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
|
-
|
|
67
|
+
"authentication",
|
|
68
68
|
selected:
|
|
69
|
-
(
|
|
70
|
-
(
|
|
71
|
-
ENV[
|
|
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
|
-
|
|
76
|
+
"payment method",
|
|
77
77
|
selected:
|
|
78
|
-
(
|
|
79
|
-
(
|
|
80
|
-
(
|
|
81
|
-
ENV[
|
|
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[
|
|
86
|
+
ENV["VERBOSE"] = "false"
|
|
87
87
|
|
|
88
88
|
# No reason to check for their presence if we're about to install them
|
|
89
|
-
ENV[
|
|
89
|
+
ENV["SOLIDUS_SKIP_MIGRATIONS_CHECK"] = "true"
|
|
90
90
|
end
|
|
91
91
|
|
|
92
92
|
def install_routes
|
|
93
|
-
if Pathname(app_path).join(
|
|
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
|
|
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
|
|
129
|
+
rake "active_storage:install"
|
|
130
130
|
else
|
|
131
131
|
say_status :assets, "Paperclip", :green
|
|
132
|
-
gsub_file
|
|
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
|
|
137
|
+
empty_directory "app/assets/images"
|
|
138
138
|
|
|
139
|
-
%w
|
|
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
|
|
161
|
+
rake "railties:install:migrations"
|
|
162
162
|
end
|
|
163
163
|
|
|
164
164
|
def create_database
|
|
165
165
|
say_status :creating, "database"
|
|
166
|
-
rake
|
|
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
|
|
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(
|
|
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 #{
|
|
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
|
|
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(
|
|
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,
|
|
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
|
|
4
|
-
require
|
|
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
|
|
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(
|
|
13
|
+
source_root File.expand_path("templates", __dir__)
|
|
14
14
|
|
|
15
15
|
class_option :initializer_basename,
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
type: :boolean,
|
|
22
|
+
default: true,
|
|
23
|
+
banner: "Prompt to warn about only previous version support"
|
|
24
24
|
|
|
25
25
|
class_option :from,
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
type: :string,
|
|
27
|
+
default: FROM,
|
|
28
|
+
banner: "Solidus version from which you are upgrading"
|
|
29
29
|
|
|
30
30
|
class_option :to,
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
type: :string,
|
|
32
|
+
default: Spree.solidus_version,
|
|
33
|
+
hide: true
|
|
34
34
|
|
|
35
35
|
class_option :initializer_directory,
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
type: :string,
|
|
37
|
+
default: "config/initializers/",
|
|
38
|
+
hide: true
|
|
39
39
|
|
|
40
40
|
class_option :install_migrations,
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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
|
|
62
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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(
|
|
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
|
|
23
|
-
template
|
|
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
|
|
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
|
|
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
|
|
5
|
-
require
|
|
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(
|
|
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] =
|
|
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(
|
|
72
|
-
inject_require_for(
|
|
73
|
-
inject_require_for(
|
|
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
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
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[
|
|
111
|
+
ENV["DUMMY_PATH"] || "spec/dummy"
|
|
114
112
|
end
|
|
115
113
|
|
|
116
114
|
def module_name
|
|
117
|
-
|
|
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
|
-
|
|
127
|
+
alias_method :store_application_definition!, :application_definition
|
|
130
128
|
|
|
131
129
|
def camelized
|
|
132
|
-
@camelized ||= name.gsub(/\W/,
|
|
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
|
-
|
|
141
|
+
"../../../../../Gemfile"
|
|
144
142
|
else
|
|
145
|
-
|
|
143
|
+
"../../../../Gemfile"
|
|
146
144
|
end
|
|
147
145
|
end
|
|
148
146
|
end
|
|
@@ -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 = {
|
|
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
|
|
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(
|
|
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[
|
|
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