solidus_core 2.11.10 → 3.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +6 -2
- data/app/assets/javascripts/spree.js.erb +0 -51
- data/app/controllers/spree/base_controller.rb +1 -1
- data/app/helpers/spree/base_helper.rb +1 -1
- data/app/helpers/spree/products_helper.rb +2 -2
- data/app/helpers/spree/store_helper.rb +0 -11
- data/app/mailers/spree/carton_mailer.rb +1 -5
- data/app/models/concerns/spree/active_storage_adapter/attachment.rb +30 -11
- data/app/models/concerns/spree/active_storage_adapter.rb +1 -1
- data/app/models/concerns/spree/adjustment_source.rb +0 -15
- data/app/models/concerns/spree/calculated_adjustments.rb +0 -18
- data/app/models/concerns/spree/default_price.rb +39 -10
- data/app/models/concerns/spree/ransackable_attributes.rb +24 -4
- data/app/models/concerns/spree/soft_deletable.rb +2 -4
- data/app/models/concerns/spree/user_address_book.rb +10 -37
- data/app/models/concerns/spree/user_methods.rb +38 -13
- data/app/models/spree/ability.rb +0 -37
- data/app/models/spree/address/name.rb +2 -20
- data/app/models/spree/address.rb +8 -186
- data/app/models/spree/adjustment.rb +7 -33
- data/app/models/spree/base.rb +0 -53
- data/app/models/spree/calculator/flat_fee.rb +21 -0
- data/app/models/spree/calculator/flexi_rate.rb +0 -5
- data/app/models/spree/calculator.rb +0 -7
- data/app/models/spree/carton.rb +1 -1
- data/app/models/spree/country.rb +2 -7
- data/app/models/spree/credit_card.rb +1 -28
- data/app/models/spree/customer_return.rb +5 -7
- data/app/models/spree/image/active_storage_attachment.rb +2 -7
- data/app/models/spree/image/paperclip_attachment.rb +2 -2
- data/app/models/spree/image.rb +0 -7
- data/app/models/spree/inventory_unit.rb +0 -21
- data/app/models/spree/line_item.rb +6 -49
- data/app/models/spree/log_entry.rb +74 -1
- data/app/models/spree/option_type.rb +1 -1
- data/app/models/spree/option_value.rb +10 -1
- data/app/models/spree/order/number_generator.rb +7 -1
- data/app/models/spree/order.rb +82 -170
- data/app/models/spree/order_cancellations.rb +4 -24
- data/app/models/spree/order_contents.rb +2 -1
- data/app/models/spree/order_inventory.rb +1 -1
- data/app/models/spree/order_merger.rb +2 -2
- data/app/models/spree/order_promotion.rb +1 -1
- data/app/models/spree/order_shipping.rb +6 -9
- data/app/models/spree/order_taxation.rb +6 -4
- data/app/models/spree/order_updater.rb +17 -16
- data/app/models/spree/payment/cancellation.rb +1 -1
- data/app/models/spree/payment/processing.rb +58 -55
- data/app/models/spree/payment.rb +0 -3
- data/app/models/spree/payment_create.rb +1 -13
- data/app/models/spree/payment_method/bogus_credit_card.rb +6 -7
- data/app/models/spree/payment_method/credit_card.rb +1 -3
- data/app/models/spree/payment_method/simple_bogus_credit_card.rb +8 -0
- data/app/models/spree/payment_method.rb +26 -110
- data/app/models/spree/price.rb +3 -3
- data/app/models/spree/product/scopes.rb +24 -33
- data/app/models/spree/product.rb +15 -42
- data/app/models/spree/product_property.rb +1 -1
- data/app/models/spree/promotion/actions/create_adjustment.rb +4 -3
- data/app/models/spree/promotion/actions/create_item_adjustments.rb +5 -9
- data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +0 -3
- data/app/models/spree/promotion/actions/free_shipping.rb +1 -0
- data/app/models/spree/promotion/order_adjustments_recalculator.rb +92 -0
- data/app/models/spree/promotion/rules/item_total.rb +50 -6
- data/app/models/spree/promotion/rules/product.rb +20 -8
- data/app/models/spree/promotion/rules/store.rb +4 -0
- data/app/models/spree/promotion/rules/taxon.rb +6 -15
- data/app/models/spree/promotion/rules/user.rb +4 -0
- data/app/models/spree/promotion.rb +39 -32
- data/app/models/spree/promotion_action.rb +6 -9
- data/app/models/spree/promotion_code/batch_builder.rb +0 -14
- data/app/models/spree/promotion_code.rb +11 -7
- data/app/models/spree/promotion_handler/cart.rb +26 -6
- data/app/models/spree/promotion_rule.rb +5 -0
- data/app/models/spree/property.rb +1 -1
- data/app/models/spree/refund.rb +8 -52
- data/app/models/spree/reimbursement.rb +5 -43
- data/app/models/spree/reimbursement_performer.rb +2 -8
- data/app/models/spree/reimbursement_type/credit.rb +1 -4
- data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +1 -2
- data/app/models/spree/reimbursement_type/store_credit.rb +1 -4
- data/app/models/spree/return_authorization.rb +2 -5
- data/app/models/spree/return_item.rb +4 -24
- data/app/models/spree/shipment.rb +3 -56
- data/app/models/spree/shipping_method.rb +0 -25
- data/app/models/spree/shipping_rate.rb +0 -2
- data/app/models/spree/shipping_rate_tax.rb +1 -1
- data/app/models/spree/state.rb +1 -5
- data/app/models/spree/stock/allocator/on_hand_first.rb +2 -2
- data/app/models/spree/stock/availability.rb +11 -3
- data/app/models/spree/stock/quantifier.rb +12 -8
- data/app/models/spree/stock/simple_coordinator.rb +8 -26
- data/app/models/spree/stock/splitter/base.rb +2 -7
- data/app/models/spree/stock_item.rb +2 -8
- data/app/models/spree/stock_location.rb +2 -2
- data/app/models/spree/stock_movement.rb +2 -2
- data/app/models/spree/store.rb +0 -12
- data/app/models/spree/store_credit.rb +14 -1
- data/app/models/spree/store_credit_category.rb +0 -32
- data/app/models/spree/store_credit_prioritizer.rb +17 -0
- data/app/models/spree/tax/item_tax.rb +3 -2
- data/app/models/spree/tax/order_tax.rb +3 -1
- data/app/models/spree/tax/tax_helpers.rb +2 -2
- data/app/models/spree/tax/tax_location.rb +4 -7
- data/app/models/spree/tax_calculator/default.rb +31 -0
- data/app/models/spree/tax_calculator/shipping_rate.rb +2 -13
- data/app/models/spree/tax_rate.rb +9 -27
- data/app/models/spree/taxon/active_storage_attachment.rb +2 -7
- data/app/models/spree/taxon/paperclip_attachment.rb +3 -8
- data/app/models/spree/taxon.rb +1 -12
- data/app/models/spree/taxonomy.rb +1 -1
- data/app/models/spree/user_address.rb +0 -5
- data/app/models/spree/user_last_url_storer/rules/authentication_rule.rb +1 -1
- data/app/models/spree/variant/price_selector.rb +34 -4
- data/app/models/spree/variant.rb +52 -66
- data/app/models/spree/zone.rb +1 -1
- data/app/subscribers/spree/mailer_subscriber.rb +4 -0
- data/app/subscribers/spree/order_mailer_subscriber.rb +35 -0
- data/config/i18n-tasks.yml +134 -0
- data/config/locales/en.yml +406 -263
- data/db/migrate/20180416083007_add_apply_to_all_to_variant_property_rule.rb +1 -1
- data/db/migrate/20201127212108_add_type_before_removal_to_spree_payment_methods.rb +7 -0
- data/db/migrate/20210312061050_change_column_null_on_prices.rb +7 -0
- data/db/migrate/20220317165036_set_promotions_with_any_policy_to_all_if_possible.rb +20 -0
- data/db/migrate/20220805202442_add_level_to_spree_tax_rates.rb +5 -0
- data/db/migrate/20221123152807_add_shipping_category_to_spree_variants.rb +5 -0
- data/db/seeds.rb +4 -1
- data/lib/generators/solidus/install/app_templates/authentication/custom.rb +21 -0
- data/lib/generators/solidus/install/app_templates/authentication/devise.rb +16 -0
- data/lib/generators/solidus/install/app_templates/authentication/existing.rb +10 -0
- data/lib/generators/solidus/install/app_templates/authentication/none.rb +1 -0
- data/lib/generators/solidus/install/app_templates/frontend/break_down_solidus_gem.rb +54 -0
- data/lib/generators/solidus/install/app_templates/frontend/classic.rb +16 -0
- data/lib/generators/solidus/install/app_templates/frontend/none.rb +2 -0
- data/lib/generators/solidus/install/app_templates/frontend/starter.rb +3 -0
- data/lib/generators/solidus/install/app_templates/payment_method/bolt.rb +13 -0
- data/lib/generators/solidus/install/app_templates/payment_method/none.rb +1 -0
- data/lib/generators/solidus/install/app_templates/payment_method/paypal.rb +10 -0
- data/lib/generators/solidus/install/install_generator.rb +247 -149
- data/lib/generators/solidus/install/templates/config/initializers/spree.rb.tt +15 -60
- data/lib/generators/solidus/install/templates/vendor/assets/javascripts/spree/backend/all.js +2 -2
- data/lib/generators/solidus/update/templates/config/initializers/new_solidus_defaults.rb.tt +30 -0
- data/lib/generators/solidus/update/update_generator.rb +112 -0
- data/lib/generators/spree/custom_user/custom_user_generator.rb +6 -4
- data/lib/generators/spree/custom_user/templates/authentication_helpers.rb.tt +2 -6
- data/lib/generators/spree/custom_user/templates/migration.rb.tt +7 -3
- data/lib/generators/spree/dummy/dummy_generator.rb +12 -9
- data/lib/generators/spree/dummy/templates/rails/application.rb.tt +0 -1
- data/lib/generators/spree/dummy/templates/rails/database.yml +81 -39
- data/lib/generators/spree/dummy/templates/rails/storage.yml +3 -0
- data/lib/generators/spree/dummy/templates/rails/test.rb +2 -0
- data/lib/spree/app_configuration.rb +134 -64
- data/lib/spree/bus.rb +20 -0
- data/lib/spree/core/class_constantizer.rb +2 -0
- data/lib/spree/core/controller_helpers/auth.rb +10 -15
- data/lib/spree/core/controller_helpers/current_host.rb +5 -3
- data/lib/spree/core/controller_helpers/order.rb +12 -32
- data/lib/spree/core/controller_helpers/payment_parameters.rb +0 -54
- data/lib/spree/core/controller_helpers/pricing.rb +0 -8
- data/lib/spree/core/controller_helpers/search.rb +1 -1
- data/lib/spree/core/controller_helpers/strong_parameters.rb +0 -4
- data/lib/spree/core/engine.rb +54 -50
- data/lib/spree/core/environment_extension.rb +0 -9
- data/lib/spree/core/product_filters.rb +1 -41
- data/lib/spree/core/role_configuration.rb +0 -14
- data/lib/spree/core/search/base.rb +18 -35
- data/lib/spree/core/state_machines/order.rb +2 -2
- data/lib/spree/core/state_machines.rb +2 -11
- data/lib/spree/core/stock_configuration.rb +18 -0
- data/lib/spree/core/validators/email.rb +5 -3
- data/lib/spree/core/version.rb +5 -1
- data/lib/spree/core/versioned_value.rb +75 -0
- data/lib/spree/core.rb +40 -11
- data/lib/spree/deprecation.rb +1 -1
- data/lib/spree/event/configuration.rb +0 -5
- data/lib/spree/event/subscriber.rb +0 -18
- data/lib/spree/event/subscriber_registry.rb +7 -7
- data/lib/spree/event.rb +1 -32
- data/lib/spree/i18n.rb +0 -22
- data/lib/spree/migrations.rb +13 -11
- data/lib/spree/money.rb +3 -18
- data/lib/spree/permission_sets/default_customer.rb +8 -1
- data/lib/spree/permitted_attributes.rb +17 -59
- data/lib/spree/preferences/configuration.rb +84 -0
- data/lib/spree/preferences/preferable.rb +13 -0
- data/lib/spree/preferences/preferable_class_methods.rb +37 -4
- data/lib/spree/preferences/preference_differentiator.rb +29 -0
- data/lib/spree/preferences/static_model_preferences.rb +25 -10
- data/lib/spree/rails_compatibility.rb +106 -0
- data/lib/spree/testing_support/blacklist_urls.rb +1 -1
- data/lib/spree/testing_support/bus_helpers.rb +101 -0
- data/lib/spree/testing_support/capybara_ext.rb +0 -30
- data/lib/spree/testing_support/common_rake.rb +71 -23
- data/lib/spree/testing_support/controller_requests.rb +0 -82
- data/lib/spree/testing_support/dummy_app/assets/javascripts/spree/backend/all.js +1 -1
- data/lib/spree/testing_support/dummy_app/assets/javascripts/spree/frontend/all.js +1 -1
- data/lib/spree/testing_support/dummy_app/database.yml +42 -22
- data/lib/spree/testing_support/dummy_app/migrations.rb +0 -3
- data/lib/spree/testing_support/dummy_app.rb +47 -34
- data/lib/spree/testing_support/factories/address_factory.rb +9 -6
- data/lib/spree/testing_support/factories/calculator_factory.rb +3 -0
- data/lib/spree/testing_support/factories/country_factory.rb +1 -2
- data/lib/spree/testing_support/factories/inventory_unit_factory.rb +1 -1
- data/lib/spree/testing_support/factories/order_factory.rb +8 -5
- data/lib/spree/testing_support/factories/product_factory.rb +4 -1
- data/lib/spree/testing_support/factories/promotion_factory.rb +28 -14
- data/lib/spree/testing_support/factories/refund_factory.rb +0 -1
- data/lib/spree/testing_support/factories/state_factory.rb +8 -2
- data/lib/spree/testing_support/factories/store_credit_factory.rb +4 -4
- data/lib/spree/testing_support/factories/user_factory.rb +6 -0
- data/lib/spree/testing_support/factory_bot.rb +2 -2
- data/lib/spree/testing_support/order_walkthrough.rb +6 -8
- data/lib/spree/testing_support/preferences.rb +0 -25
- data/lib/spree/testing_support/silence_deprecations.rb +9 -0
- data/lib/tasks/colorado_delivery_fee.rake +28 -0
- data/lib/tasks/payment_method.rake +29 -0
- data/lib/tasks/solidus/check_orders_with_invalid_email.rake +18 -0
- data/lib/tasks/solidus/delete_prices_with_nil_amount.rake +8 -0
- data/lib/tasks/solidus/split_promotions_with_any_match_policy.rake +33 -0
- data/solidus_core.gemspec +14 -7
- metadata +127 -78
- data/app/mailers/spree/test_mailer.rb +0 -13
- data/app/models/concerns/spree/user_payment_source.rb +0 -26
- data/app/models/spree/calculator/free_shipping.rb +0 -22
- data/app/models/spree/calculator/percent_per_item.rb +0 -51
- data/app/models/spree/calculator/price_sack.rb +0 -28
- data/app/models/spree/gateway/bogus.rb +0 -13
- data/app/models/spree/gateway/bogus_simple.rb +0 -13
- data/app/models/spree/gateway.rb +0 -14
- data/app/models/spree/order/checkout.rb +0 -244
- data/app/models/spree/order_capturing.rb +0 -50
- data/app/models/spree/promotion_handler/free_shipping.rb +0 -9
- data/app/models/spree/tax/shipping_rate_taxer.rb +0 -24
- data/lib/generators/solidus/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -10
- data/lib/generators/solidus/install/templates/vendor/assets/stylesheets/spree/frontend/all.css +0 -9
- data/lib/generators/spree/install/install_generator.rb +0 -15
- data/lib/solidus/migrations/rename_gateways.rb +0 -41
- data/lib/spree/core/current_store.rb +0 -24
- data/lib/spree/paranoia_deprecations.rb +0 -41
- data/lib/spree/promo/environment.rb +0 -12
- data/lib/spree/testing_support/bar_ability.rb +0 -19
- data/lib/tasks/core.rake +0 -104
- data/lib/tasks/email.rake +0 -12
- data/lib/tasks/migrations/copy_order_bill_address_to_credit_card.rake +0 -119
- data/lib/tasks/migrations/migrate_address_names.rake +0 -158
- data/lib/tasks/migrations/migrate_default_billing_addresses_to_address_book.rake +0 -26
- data/lib/tasks/migrations/migrate_shipping_rate_taxes.rake +0 -22
- data/lib/tasks/migrations/migrate_user_addresses.rake +0 -34
- data/lib/tasks/migrations/rename_gateways.rake +0 -23
- data/lib/tasks/order_capturing.rake +0 -27
- data/lib/tasks/upgrade.rake +0 -13
@@ -1,49 +1,90 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'rails/version'
|
3
4
|
require 'rails/generators'
|
5
|
+
require 'rails/generators/app_base'
|
4
6
|
|
5
7
|
module Solidus
|
6
8
|
# @private
|
7
|
-
class InstallGenerator < Rails::Generators::
|
9
|
+
class InstallGenerator < Rails::Generators::AppBase
|
10
|
+
argument :app_path, type: :string, default: Rails.root
|
11
|
+
|
8
12
|
CORE_MOUNT_ROUTE = "mount Spree::Core::Engine"
|
9
13
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
+
FRONTENDS = %w[
|
15
|
+
none
|
16
|
+
classic
|
17
|
+
starter
|
18
|
+
]
|
19
|
+
|
20
|
+
LEGACY_FRONTENDS = %w[
|
21
|
+
solidus_starter_frontend
|
22
|
+
solidus_frontend
|
23
|
+
]
|
24
|
+
|
25
|
+
AUTHENTICATIONS = %w[
|
26
|
+
devise
|
27
|
+
existing
|
28
|
+
custom
|
29
|
+
none
|
30
|
+
]
|
31
|
+
|
32
|
+
PAYMENT_METHODS = %w[
|
33
|
+
paypal
|
34
|
+
bolt
|
35
|
+
none
|
36
|
+
]
|
14
37
|
|
15
38
|
class_option :migrate, type: :boolean, default: true, banner: 'Run Solidus migrations'
|
16
39
|
class_option :seed, type: :boolean, default: true, banner: 'Load seed data (migrations must be run)'
|
17
|
-
class_option :sample, type: :boolean, default: true, banner: 'Load sample data (migrations must be run)'
|
40
|
+
class_option :sample, type: :boolean, default: true, banner: 'Load sample data (migrations and seeds must be run)'
|
41
|
+
class_option :active_storage, type: :boolean, default: (
|
42
|
+
Rails.gem_version >= Gem::Version.new("6.1.0")
|
43
|
+
), banner: 'Install ActiveStorage as image attachments handler for products and taxons'
|
18
44
|
class_option :auto_accept, type: :boolean
|
19
45
|
class_option :user_class, type: :string
|
20
46
|
class_option :admin_email, type: :string
|
21
47
|
class_option :admin_password, type: :string
|
22
|
-
|
23
|
-
class_option :
|
24
|
-
class_option :
|
25
|
-
class_option :payment_method,
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
paths.flatten
|
48
|
+
|
49
|
+
class_option :frontend, type: :string, enum: FRONTENDS + LEGACY_FRONTENDS, default: nil, desc: "Indicates which frontend to install."
|
50
|
+
class_option :authentication, type: :string, enum: AUTHENTICATIONS, default: nil, desc: "Indicates which authentication system to install."
|
51
|
+
class_option :payment_method, type: :string, enum: PAYMENT_METHODS, default: nil, desc: "Indicates which payment method to install."
|
52
|
+
|
53
|
+
# DEPRECATED
|
54
|
+
class_option :with_authentication, type: :boolean, hide: true, default: nil
|
55
|
+
class_option :enforce_available_locales, type: :boolean, hide: true, default: nil
|
56
|
+
class_option :lib_name, type: :string, hide: true, default: nil
|
57
|
+
|
58
|
+
source_root "#{__dir__}/templates"
|
59
|
+
|
60
|
+
def self.exit_on_failure?
|
61
|
+
true
|
37
62
|
end
|
38
63
|
|
39
64
|
def prepare_options
|
40
65
|
@run_migrations = options[:migrate]
|
41
|
-
@load_seed_data = options[:seed]
|
42
|
-
@load_sample_data = options[:sample]
|
66
|
+
@load_seed_data = options[:seed] && @run_migrations
|
67
|
+
@load_sample_data = options[:sample] && @run_migrations && @load_seed_data
|
68
|
+
@selected_frontend = detect_frontend_to_install
|
69
|
+
@selected_authentication = detect_authentication_to_install
|
70
|
+
@selected_payment_method = detect_payment_method_to_install
|
71
|
+
|
72
|
+
# Silence verbose output (e.g. Rails migrations will rely on this environment variable)
|
73
|
+
ENV['VERBOSE'] = 'false'
|
74
|
+
|
75
|
+
# No reason to check for their presence if we're about to install them
|
76
|
+
ENV['SOLIDUS_SKIP_MIGRATIONS_CHECK'] = 'true'
|
77
|
+
|
78
|
+
if options[:enforce_available_locales] != nil
|
79
|
+
warn \
|
80
|
+
"DEPRECATION WARNING: using `solidus:install --enforce-available-locales` is now deprecated and has no effect. " \
|
81
|
+
"Since Rails 4.1 the default is `true` so we no longer need to explicitly set a value."
|
82
|
+
end
|
43
83
|
|
44
|
-
|
45
|
-
|
46
|
-
|
84
|
+
if options[:lib_name] != nil
|
85
|
+
warn \
|
86
|
+
"DEPRECATION WARNING: using `solidus:install --lib-name` is now deprecated and has no effect. " \
|
87
|
+
"The option is legacy and should be removed from scripts still using it."
|
47
88
|
end
|
48
89
|
end
|
49
90
|
|
@@ -51,37 +92,24 @@ module Solidus
|
|
51
92
|
template 'config/initializers/spree.rb.tt', 'config/initializers/spree.rb'
|
52
93
|
end
|
53
94
|
|
54
|
-
def
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
Disallow: /user
|
63
|
-
Disallow: /account
|
64
|
-
Disallow: /api
|
65
|
-
Disallow: /password
|
66
|
-
ROBOTS
|
95
|
+
def install_file_attachment
|
96
|
+
if options[:active_storage]
|
97
|
+
say_status :assets, "Active Storage", :green
|
98
|
+
rake 'active_storage:install'
|
99
|
+
else
|
100
|
+
say_status :assets, "Paperclip", :green
|
101
|
+
gsub_file 'config/initializers/spree.rb', "ActiveStorageAttachment", "PaperclipAttachment"
|
102
|
+
end
|
67
103
|
end
|
68
104
|
|
69
105
|
def setup_assets
|
70
|
-
@lib_name = 'spree'
|
71
|
-
|
72
106
|
empty_directory 'app/assets/images'
|
73
107
|
|
74
108
|
%w{javascripts stylesheets images}.each do |path|
|
75
|
-
empty_directory "vendor/assets/#{path}/spree/
|
76
|
-
empty_directory "vendor/assets/#{path}/spree/backend" if defined? Spree::Backend || Rails.env.test?
|
109
|
+
empty_directory "vendor/assets/#{path}/spree/backend" if defined?(Spree::Backend) || Rails.env.test?
|
77
110
|
end
|
78
111
|
|
79
|
-
if defined?
|
80
|
-
template "vendor/assets/javascripts/spree/frontend/all.js"
|
81
|
-
template "vendor/assets/stylesheets/spree/frontend/all.css"
|
82
|
-
end
|
83
|
-
|
84
|
-
if defined? Spree::Backend || Rails.env.test?
|
112
|
+
if defined?(Spree::Backend) || Rails.env.test?
|
85
113
|
template "vendor/assets/javascripts/spree/backend/all.js"
|
86
114
|
template "vendor/assets/stylesheets/spree/backend/all.css"
|
87
115
|
end
|
@@ -91,73 +119,15 @@ module Solidus
|
|
91
119
|
empty_directory "app/overrides"
|
92
120
|
end
|
93
121
|
|
94
|
-
def configure_application
|
95
|
-
application <<-RUBY
|
96
|
-
# Load application's model / class decorators
|
97
|
-
initializer 'spree.decorators' do |app|
|
98
|
-
config.to_prepare do
|
99
|
-
Dir.glob(Rails.root.join('app/**/*_decorator*.rb')) do |path|
|
100
|
-
require_dependency(path)
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
104
|
-
RUBY
|
105
|
-
|
106
|
-
if !options[:enforce_available_locales].nil?
|
107
|
-
application <<-RUBY
|
108
|
-
# Prevent this deprecation message: https://github.com/svenfuchs/i18n/commit/3b6e56e
|
109
|
-
I18n.enforce_available_locales = #{options[:enforce_available_locales]}
|
110
|
-
RUBY
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
def plugin_install_preparation
|
115
|
-
@plugins_to_be_installed = []
|
116
|
-
@plugin_generators_to_run = []
|
117
|
-
end
|
118
|
-
|
119
|
-
def install_auth_plugin
|
120
|
-
if options[:with_authentication] && (options[:auto_accept] || !no?("
|
121
|
-
Solidus has a default authentication extension that uses Devise.
|
122
|
-
You can find more info at https://github.com/solidusio/solidus_auth_devise.
|
123
|
-
|
124
|
-
Would you like to install it? (y/n)"))
|
125
|
-
|
126
|
-
@plugins_to_be_installed << 'solidus_auth_devise'
|
127
|
-
@plugin_generators_to_run << 'solidus:auth:install'
|
128
|
-
end
|
129
|
-
end
|
130
|
-
|
131
|
-
def install_payment_method
|
132
|
-
name = options[:payment_method]
|
133
|
-
|
134
|
-
unless options[:auto_accept]
|
135
|
-
available_names = PAYMENT_METHODS.keys
|
136
|
-
|
137
|
-
name = ask("
|
138
|
-
You can select a payment method to be included in the installation process.
|
139
|
-
Please select a payment method name:", limited_to: available_names, default: available_names.first)
|
140
|
-
end
|
141
|
-
|
142
|
-
gem_name = PAYMENT_METHODS.fetch(name)
|
143
|
-
|
144
|
-
if gem_name
|
145
|
-
@plugins_to_be_installed << gem_name
|
146
|
-
@plugin_generators_to_run << "#{gem_name}:install"
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
122
|
def include_seed_data
|
151
|
-
append_file "db/seeds.rb",
|
152
|
-
|
153
|
-
Spree::Core::Engine.load_seed if defined?(Spree::Core)
|
154
|
-
Spree::Auth::Engine.load_seed if defined?(Spree::Auth)
|
123
|
+
append_file "db/seeds.rb", <<~RUBY
|
124
|
+
Spree::Core::Engine.load_seed
|
155
125
|
RUBY
|
156
126
|
end
|
157
127
|
|
158
128
|
def install_migrations
|
159
129
|
say_status :copying, "migrations"
|
160
|
-
|
130
|
+
rake 'railties:install:migrations'
|
161
131
|
end
|
162
132
|
|
163
133
|
def create_database
|
@@ -165,16 +135,18 @@ module Solidus
|
|
165
135
|
rake 'db:create'
|
166
136
|
end
|
167
137
|
|
168
|
-
def
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
138
|
+
def install_routes
|
139
|
+
if Pathname(app_path).join('config', 'routes.rb').read.include? CORE_MOUNT_ROUTE
|
140
|
+
say_status :route_exist, CORE_MOUNT_ROUTE, :blue
|
141
|
+
else
|
142
|
+
route <<~RUBY
|
143
|
+
# This line mounts Solidus's routes at the root of your application.
|
144
|
+
# This means, any requests to URLs such as /products, will go to Spree::ProductsController.
|
145
|
+
# If you would like to change where this engine is mounted, simply change the :at option to something different.
|
146
|
+
#
|
147
|
+
# We ask that you don't use the :as option here, as Solidus relies on it being the default of "spree"
|
148
|
+
#{CORE_MOUNT_ROUTE}, at: '/'
|
149
|
+
RUBY
|
178
150
|
end
|
179
151
|
end
|
180
152
|
|
@@ -182,15 +154,27 @@ module Solidus
|
|
182
154
|
if @run_migrations
|
183
155
|
say_status :running, "migrations"
|
184
156
|
|
185
|
-
rake 'db:migrate
|
157
|
+
rake 'db:migrate'
|
186
158
|
else
|
187
159
|
say_status :skipping, "migrations (don't forget to run rake db:migrate)"
|
188
160
|
end
|
189
161
|
end
|
190
162
|
|
163
|
+
def install_authentication
|
164
|
+
apply_template_for :authentication, @selected_authentication
|
165
|
+
end
|
166
|
+
|
167
|
+
def install_frontend
|
168
|
+
apply_template_for :frontend, @selected_frontend
|
169
|
+
end
|
170
|
+
|
171
|
+
def install_payment_method
|
172
|
+
apply_template_for :payment_method, @selected_payment_method
|
173
|
+
end
|
174
|
+
|
191
175
|
def populate_seed_data
|
192
176
|
if @load_seed_data
|
193
|
-
say_status :loading,
|
177
|
+
say_status :loading, "seed data"
|
194
178
|
rake_options = []
|
195
179
|
rake_options << "AUTO_ACCEPT=1" if options[:auto_accept]
|
196
180
|
rake_options << "ADMIN_EMAIL=#{options[:admin_email]}" if options[:admin_email]
|
@@ -211,43 +195,157 @@ module Solidus
|
|
211
195
|
end
|
212
196
|
end
|
213
197
|
|
214
|
-
def
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
198
|
+
def complete
|
199
|
+
say_status :complete, "Solidus has been installed successfully. Enjoy!"
|
200
|
+
end
|
201
|
+
|
202
|
+
private
|
203
|
+
|
204
|
+
def generate(what, *args, abort_on_failure: true)
|
205
|
+
args << '--auto-accept' if options[:auto_accept]
|
206
|
+
args << '--auto-run-migrations' if options[:migrate]
|
207
|
+
super(what, *args, abort_on_failure: abort_on_failure)
|
208
|
+
end
|
209
|
+
|
210
|
+
def bundle_command(command, env = {})
|
211
|
+
# Make `bundle install` less verbose by skipping the "Using ..." messages
|
212
|
+
super(command, env.reverse_merge('BUNDLE_SUPPRESS_INSTALL_USING_MESSAGES' => 'true'))
|
213
|
+
ensure
|
214
|
+
Bundler.reset_paths!
|
215
|
+
end
|
216
|
+
|
217
|
+
def ask_with_description(desc:, limited_to:, default:)
|
218
|
+
loop do
|
219
|
+
say_status :question, desc, :yellow
|
220
|
+
answer = ask(set_color("answer:".rjust(13), :blue, :bold)).to_s.downcase.presence
|
221
|
+
|
222
|
+
case answer
|
223
|
+
when nil
|
224
|
+
say_status :using, "#{default} (default)"
|
225
|
+
break default
|
226
|
+
when *limited_to.map(&:to_s)
|
227
|
+
say_status :using, answer
|
228
|
+
break answer
|
229
|
+
else say_status :error, "Please select a valid answer:", :red
|
227
230
|
end
|
228
231
|
end
|
232
|
+
end
|
229
233
|
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
puts " "
|
234
|
-
puts " #{CORE_MOUNT_ROUTE}, at: '/'"
|
234
|
+
def apply_template_for(topic, selected)
|
235
|
+
template_path = Dir["#{__dir__}/app_templates/#{topic}/*.rb"].find do |path|
|
236
|
+
File.basename(path, '.rb') == selected
|
235
237
|
end
|
238
|
+
|
239
|
+
unless template_path
|
240
|
+
say_status :warning, "Unknown #{topic}: #{selected.inspect}, attempting to run it with `rails app:template`"
|
241
|
+
template_path = selected
|
242
|
+
end
|
243
|
+
|
244
|
+
say_status :installing, "[#{topic}] #{selected}", :blue
|
245
|
+
apply template_path
|
236
246
|
end
|
237
247
|
|
238
|
-
def
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
248
|
+
def with_env(vars)
|
249
|
+
original = ENV.to_hash
|
250
|
+
vars.each { |k, v| ENV[k] = v }
|
251
|
+
|
252
|
+
begin
|
253
|
+
yield
|
254
|
+
ensure
|
255
|
+
ENV.replace(original)
|
244
256
|
end
|
245
257
|
end
|
246
258
|
|
247
|
-
|
259
|
+
def detect_frontend_to_install
|
260
|
+
# We need to support names that were available in v3.2
|
261
|
+
selected_frontend = 'starter' if options[:frontend] == 'solidus_starter_frontend'
|
262
|
+
selected_frontend = 'classic' if options[:frontend] == 'solidus_frontend'
|
263
|
+
selected_frontend ||= options[:frontend]
|
264
|
+
|
265
|
+
ENV['FRONTEND'] ||
|
266
|
+
selected_frontend ||
|
267
|
+
(Bundler.locked_gems.dependencies['solidus_frontend'] && 'classic') ||
|
268
|
+
(options[:auto_accept] && 'starter') ||
|
269
|
+
ask_with_description(
|
270
|
+
default: 'starter',
|
271
|
+
limited_to: FRONTENDS,
|
272
|
+
desc: <<~TEXT
|
273
|
+
Which frontend would you like to use?
|
274
|
+
|
275
|
+
- [#{set_color 'starter', :bold}] Generate all necessary controllers and views directly in your Rails app (#{set_color :default, :bold}).
|
276
|
+
- [#{set_color 'classic', :bold}] Install `solidus_frontend`, was the default in previous solidus versions (#{set_color :deprecated, :bold}).
|
277
|
+
- [#{set_color 'none', :bold}] Skip installing a frontend.
|
278
|
+
|
279
|
+
Selecting `starter` is recommended, however, some extensions are still only compatible with `classic`.
|
280
|
+
TEXT
|
281
|
+
)
|
282
|
+
end
|
283
|
+
|
284
|
+
def detect_authentication_to_install
|
285
|
+
return 'devise' if @selected_frontend == 'starter'
|
286
|
+
|
287
|
+
if options[:with_authentication] != nil
|
288
|
+
say_status :warning, \
|
289
|
+
"Using `solidus:install --with-authentication` is now deprecated. " \
|
290
|
+
"Please use `--authentication` instead (see --help for the full list of options).",
|
291
|
+
:red
|
292
|
+
|
293
|
+
if options[:with_authentication] == 'false'
|
294
|
+
# Don't use the default authentication if the user explicitly
|
295
|
+
# requested no authentication system.
|
296
|
+
return 'none'
|
297
|
+
else
|
298
|
+
return 'devise'
|
299
|
+
end
|
300
|
+
end
|
301
|
+
|
302
|
+
ENV['AUTHENTICATION'] ||
|
303
|
+
options[:authentication] ||
|
304
|
+
(Bundler.locked_gems.dependencies['solidus_auth_devise'] && 'devise') ||
|
305
|
+
(options[:auto_accept] && 'devise') ||
|
306
|
+
ask_with_description(
|
307
|
+
default: 'devise',
|
308
|
+
limited_to: AUTHENTICATIONS,
|
309
|
+
desc: <<~TEXT
|
310
|
+
Which authentication would you like to use?
|
311
|
+
|
312
|
+
- [#{set_color 'devise', :bold}] Install and configure the standard `devise` integration. (#{set_color :default, :bold}).
|
313
|
+
- [#{set_color 'existing', :bold}] Integrate and configure an existing `devise` setup.
|
314
|
+
- [#{set_color 'custom', :bold}] A starter configuration for rolling your own authentication system.
|
315
|
+
- [#{set_color 'none', :bold}] Don't add any configuration for authentication.
|
316
|
+
|
317
|
+
Selecting `devise` is recommended.
|
318
|
+
TEXT
|
319
|
+
)
|
320
|
+
end
|
321
|
+
|
322
|
+
def detect_payment_method_to_install
|
323
|
+
return 'paypal' if Bundler.locked_gems.dependencies['solidus_paypal_commerce_platform']
|
324
|
+
return 'bolt' if Bundler.locked_gems.dependencies['solidus_bolt']
|
325
|
+
|
326
|
+
descriptions = {
|
327
|
+
paypal: "- [#{set_color 'paypal', :bold}] Install `solidus_paypal_commerce_platform` (#{set_color :default, :bold}).",
|
328
|
+
bolt: "- [#{set_color 'bolt', :bold}] Install `solidus_bolt`.",
|
329
|
+
none: "- [#{set_color 'none', :bold}] Skip installing a payment method.",
|
330
|
+
}
|
331
|
+
|
332
|
+
payment_methods = PAYMENT_METHODS
|
333
|
+
|
334
|
+
if @selected_frontend != 'classic'
|
335
|
+
payment_methods -= ['bolt']
|
336
|
+
descriptions.delete(:bolt)
|
337
|
+
end
|
338
|
+
|
339
|
+
selected = options[:payment_method] || (options[:auto_accept] && 'paypal') ||
|
340
|
+
ask_with_description(
|
341
|
+
default: 'paypal',
|
342
|
+
limited_to: payment_methods,
|
343
|
+
desc: <<~TEXT
|
344
|
+
Which payment method would you like to use?
|
248
345
|
|
249
|
-
|
250
|
-
|
346
|
+
#{descriptions.values.join("\n")}
|
347
|
+
TEXT
|
348
|
+
)
|
251
349
|
end
|
252
350
|
end
|
253
351
|
end
|
@@ -1,24 +1,14 @@
|
|
1
1
|
# Configure Solidus Preferences
|
2
2
|
# See http://docs.solidus.io/Spree/AppConfiguration.html for details
|
3
3
|
|
4
|
+
# Solidus version defaults for preferences that are not overridden
|
5
|
+
Spree.load_defaults '<%= Spree.solidus_version %>'
|
6
|
+
|
4
7
|
Spree.config do |config|
|
5
8
|
# Core:
|
6
|
-
|
7
9
|
# Default currency for new sites
|
8
10
|
config.currency = "USD"
|
9
11
|
|
10
|
-
# from address for transactional emails
|
11
|
-
config.mails_from = "store@example.com"
|
12
|
-
|
13
|
-
# Use combined first and last name attribute in HTML views and API responses
|
14
|
-
config.use_combined_first_and_last_name_in_address = true
|
15
|
-
|
16
|
-
# Use legacy Spree::Order state machine
|
17
|
-
config.use_legacy_order_state_machine = false
|
18
|
-
|
19
|
-
# Use the legacy address' state validation logic
|
20
|
-
config.use_legacy_address_state_validator = false
|
21
|
-
|
22
12
|
# Uncomment to stop tracking inventory levels in the application
|
23
13
|
# config.track_inventory_levels = false
|
24
14
|
|
@@ -27,54 +17,17 @@ Spree.config do |config|
|
|
27
17
|
# any inventory changes.
|
28
18
|
# config.inventory_cache_threshold = 3
|
29
19
|
|
30
|
-
#
|
31
|
-
config.image_attachment_module = 'Spree::Image::
|
32
|
-
config.taxon_attachment_module = 'Spree::Taxon::
|
33
|
-
|
34
|
-
# Disable legacy Solidus custom CanCanCan actions aliases
|
35
|
-
config.use_custom_cancancan_actions = false
|
20
|
+
# Configure adapter for attachments on products and taxons (use ActiveStorageAttachment or PaperclipAttachment)
|
21
|
+
config.image_attachment_module = 'Spree::Image::ActiveStorageAttachment'
|
22
|
+
config.taxon_attachment_module = 'Spree::Taxon::ActiveStorageAttachment'
|
36
23
|
|
37
24
|
# Defaults
|
38
|
-
|
39
|
-
# Set this configuration to `true` to raise an exception when
|
40
|
-
# an order is populated with a line item with a mismatching
|
41
|
-
# currency. The `false` value will just add a validation error
|
42
|
-
# and will be the only behavior accepted in future versions.
|
43
|
-
# See https://github.com/solidusio/solidus/pull/3456 for more info.
|
44
|
-
config.raise_with_invalid_currency = false
|
45
|
-
|
46
|
-
# Set this configuration to false to always redirect the user to
|
47
|
-
# /unauthorized when needed, without trying to redirect them to
|
48
|
-
# their previous location first.
|
49
|
-
config.redirect_back_on_unauthorized = true
|
50
|
-
|
51
|
-
# Set this configuration to `true` to allow promotions
|
52
|
-
# with no associated actions to be considered active for use by customers.
|
53
|
-
# See https://github.com/solidusio/solidus/pull/3749 for more info.
|
54
|
-
config.consider_actionless_promotion_active = false
|
55
|
-
|
56
|
-
# Set this configuration to `false` to avoid running validations when
|
57
|
-
# updating an order. Be careful since you can end up having inconsistent
|
58
|
-
# data in your database turning it on.
|
59
|
-
# See https://github.com/solidusio/solidus/pull/3645 for more info.
|
60
|
-
config.run_order_validations_on_order_updater = true
|
61
|
-
|
62
25
|
# Permission Sets:
|
63
26
|
|
64
27
|
# Uncomment and customize the following line to add custom permission sets
|
65
28
|
# to a custom users role:
|
66
29
|
# config.roles.assign_permissions :role_name, ['Spree::PermissionSets::CustomPermissionSet']
|
67
30
|
|
68
|
-
|
69
|
-
# Frontend:
|
70
|
-
|
71
|
-
# Custom logo for the frontend
|
72
|
-
# config.logo = "logo/solidus.svg"
|
73
|
-
|
74
|
-
# Template to use when rendering layout
|
75
|
-
# config.layout = "spree/layouts/spree_application"
|
76
|
-
|
77
|
-
|
78
31
|
# Admin:
|
79
32
|
|
80
33
|
# Custom logo for the admin
|
@@ -96,12 +49,6 @@ Spree.config do |config|
|
|
96
49
|
# )
|
97
50
|
end
|
98
51
|
|
99
|
-
<% if defined?(Spree::Frontend::Engine) -%>
|
100
|
-
Spree::Frontend::Config.configure do |config|
|
101
|
-
config.locale = 'en'
|
102
|
-
end
|
103
|
-
<% end -%>
|
104
|
-
|
105
52
|
<% if defined?(Spree::Backend::Engine) -%>
|
106
53
|
Spree::Backend::Config.configure do |config|
|
107
54
|
config.locale = 'en'
|
@@ -114,6 +61,12 @@ Spree::Backend::Config.configure do |config|
|
|
114
61
|
# 'icon-name',
|
115
62
|
# url: 'https://solidus.io/'
|
116
63
|
# )
|
64
|
+
|
65
|
+
# Custom frontend product path
|
66
|
+
#
|
67
|
+
# config.frontend_product_path = ->(template_context, product) {
|
68
|
+
# template_context.spree.product_path(product)
|
69
|
+
# }
|
117
70
|
end
|
118
71
|
<% end -%>
|
119
72
|
|
@@ -123,7 +76,9 @@ Spree::Api::Config.configure do |config|
|
|
123
76
|
end
|
124
77
|
<% end -%>
|
125
78
|
|
126
|
-
|
79
|
+
<% if options[:user_class].present? -%>
|
80
|
+
Spree.user_class = <%= options[:user_class].inspect %>
|
81
|
+
<% end -%>
|
127
82
|
|
128
83
|
# Rules for avoiding to store the current path into session for redirects
|
129
84
|
# When at least one rule is matched, the request path will not be stored
|
data/lib/generators/solidus/install/templates/vendor/assets/javascripts/spree/backend/all.js
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
// This is a manifest file that'll be compiled into including all the files listed below.
|
2
|
-
// Add new JavaScript
|
2
|
+
// Add new JavaScript code in separate files in this directory and they'll automatically
|
3
3
|
// be included in the compiled file accessible from http://example.com/assets/application.js
|
4
4
|
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
5
5
|
// the compiled file.
|
6
6
|
//
|
7
|
-
//= require
|
7
|
+
//= require jquery3
|
8
8
|
//= require rails-ujs
|
9
9
|
//= require spree/backend
|
10
10
|
//= require_tree .
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# This initializer lets you preview the defaults that have changed on the new
|
2
|
+
# Solidus version.
|
3
|
+
#
|
4
|
+
# It allows you to enable them one by one while you adapt your application.
|
5
|
+
# When you're done with all of them, you can safely remove this file and add
|
6
|
+
# the updated `load_defaults` calls to the top of the config blocks in your
|
7
|
+
# Solidus main initializer. You can also call `Spree.load_defaults(version)` to
|
8
|
+
# target all components at once.
|
9
|
+
|
10
|
+
Spree.config do |config|
|
11
|
+
<%= @core_changes %>
|
12
|
+
end
|
13
|
+
|
14
|
+
<% if defined?(Spree::Frontend::Engine) -%>
|
15
|
+
Spree::Frontend::Config.configure do |config|
|
16
|
+
<%= @frontend_changes %>
|
17
|
+
end
|
18
|
+
<% end -%>
|
19
|
+
|
20
|
+
<% if defined?(Spree::Backend::Engine) -%>
|
21
|
+
Spree::Backend::Config.configure do |config|
|
22
|
+
<%= @backend_changes %>
|
23
|
+
end
|
24
|
+
<% end -%>
|
25
|
+
|
26
|
+
<% if defined?(Spree::Api::Engine) -%>
|
27
|
+
Spree::Api::Config.configure do |config|
|
28
|
+
<%= @api_changes %>
|
29
|
+
end
|
30
|
+
<% end -%>
|