Class: Spree::AppConfiguration

Inherits:
Preferences::Configuration show all
Defined in:
lib/spree/app_configuration.rb

Instance Attribute Summary collapse

Attributes inherited from Preferences::Configuration

#load_defaults_called, #loaded_defaults, #preference_store

Instance Method Summary collapse

Methods inherited from Preferences::Configuration

#check_load_defaults_called, class_name_attribute, #configure, inherited, #initialize, #load_defaults, preference, #reset, #set, #use_legacy_db_preferences!, #use_static_preferences!, versioned_preference

Methods included from Preferences::Preferable

#admin_form_preference_names, #default_preferences, #defined_preferences, #get_preference, #has_preference!, #has_preference?, #preference_default, #preference_type, #set_preference

Constructor Details

This class inherits a constructor from Spree::Preferences::Configuration

Instance Attribute Details

#add_payment_sources_to_wallet_classClass

Allows providing your own class for adding payment sources to a user’s “wallet” after an order moves to the complete state.



460
# File 'lib/spree/app_configuration.rb', line 460

class_name_attribute :add_payment_sources_to_wallet_class, default: 'Spree::Wallet::AddPaymentSourcesToWallet'

#address_requires_phoneBoolean



32
# File 'lib/spree/app_configuration.rb', line 32

preference :address_requires_phone, :boolean, default: true

#address_requires_stateBoolean



36
# File 'lib/spree/app_configuration.rb', line 36

preference :address_requires_state, :boolean, default: true

#admin_interface_logoString



40
# File 'lib/spree/app_configuration.rb', line 40

preference :admin_interface_logo, :string, default: 'logo/solidus.svg'

#admin_products_per_pageInteger



44
# File 'lib/spree/app_configuration.rb', line 44

preference :admin_products_per_page, :integer, default: 10

#admin_variants_per_pageInteger



48
# File 'lib/spree/app_configuration.rb', line 48

preference :admin_variants_per_page, :integer, default: 20

#admin_vat_country_isoString?

Set this if you want to enter prices in the backend including value added tax.



54
# File 'lib/spree/app_configuration.rb', line 54

preference :admin_vat_country_iso, :string, default: nil

#allow_checkout_on_gateway_errorBoolean



58
# File 'lib/spree/app_configuration.rb', line 58

preference :allow_checkout_on_gateway_error, :boolean, default: false

#allow_guest_checkoutBoolean



62
# File 'lib/spree/app_configuration.rb', line 62

preference :allow_guest_checkout, :boolean, default: true

#allow_promotions_any_match_policyBoolean



67
# File 'lib/spree/app_configuration.rb', line 67

preference :allow_promotions_any_match_policy, :boolean, default: false

#allow_return_item_amount_editingBoolean



75
# File 'lib/spree/app_configuration.rb', line 75

preference :allow_return_item_amount_editing, :boolean, default: false

#allowed_image_mime_typesArray

Defines which MIME types are allowed for images ‘%w(image/jpeg image/jpg image/png image/gif).freeze` is the default.



522
# File 'lib/spree/app_configuration.rb', line 522

class_name_attribute :allowed_image_mime_types, default: %w(image/jpeg image/jpg image/png image/gif).freeze

#alternative_billing_phoneBoolean



79
# File 'lib/spree/app_configuration.rb', line 79

preference :alternative_billing_phone, :boolean, default: false

#alternative_shipping_phoneBoolean



83
# File 'lib/spree/app_configuration.rb', line 83

preference :alternative_shipping_phone, :boolean, default: false

#always_put_site_name_in_titleBoolean



87
# File 'lib/spree/app_configuration.rb', line 87

preference :always_put_site_name_in_title, :boolean, default: true

#auto_captureBoolean

Note:

Setting this to true is not recommended. Performing an authorize and later capture has far superior error handing. VISA and MasterCard also require that shipments are sent within a certain time of the card being charged.

Returns Automatically capture the credit card (as opposed to just authorize and capture later) (default: false).



95
# File 'lib/spree/app_configuration.rb', line 95

preference :auto_capture, :boolean, default: false

#auto_capture_exchangesBoolean



99
# File 'lib/spree/app_configuration.rb', line 99

preference :auto_capture_exchanges, :boolean, default: false

#automatic_default_addressBoolean

The default value of true preserves existing backwards compatible feature of treating the most recently used address in checkout as the user’s default address. Setting to false means that the user should manage their own default via some custom UI that uses AddressBookController.



107
# File 'lib/spree/app_configuration.rb', line 107

preference :automatic_default_address, :boolean, default: true

#available_currenciesArray



316
# File 'lib/spree/app_configuration.rb', line 316

attr_writer :available_currencies

#billing_address_requiredBoolean

Controls whether billing address is required or not in the checkout process by default, can be overridden at order level. (default: false)



114
# File 'lib/spree/app_configuration.rb', line 114

preference :billing_address_required, :boolean, default: false

#can_restrict_stock_managementBoolean



118
# File 'lib/spree/app_configuration.rb', line 118

preference :can_restrict_stock_management, :boolean, default: false

#carton_shipped_email_classActionMailer::Base

Allows providing your own Mailer for shipped cartons.



404
# File 'lib/spree/app_configuration.rb', line 404

class_name_attribute :carton_shipped_email_class, default: 'Spree::CartonMailer'

#checkout_zoneString



122
# File 'lib/spree/app_configuration.rb', line 122

preference :checkout_zone, :string, default: nil

#companyBoolean



126
# File 'lib/spree/app_configuration.rb', line 126

preference :company, :boolean, default: false

#completable_order_created_cutoffInteger



130
# File 'lib/spree/app_configuration.rb', line 130

preference :completable_order_created_cutoff_days, :integer, default: nil

#countries_that_use_nested_subregionsArray

of the default subregions that come with Carmen. Will be used on store creation to ensure the correct states are generated, and when running the states regenerate rake task. (default: [‘IT’])



265
# File 'lib/spree/app_configuration.rb', line 265

preference :countries_that_use_nested_subregions, :array, default: ['IT']

#credit_to_new_allocationBoolean



138
# File 'lib/spree/app_configuration.rb', line 138

preference :credit_to_new_allocation, :boolean, default: false

#currencyString

Currency to use by default when not defined on the site (default: “USD”)



143
# File 'lib/spree/app_configuration.rb', line 143

preference :currency, :string, default: "USD"

#current_store_selector_classClass

Allows providing your own class for choosing which store to use.



483
# File 'lib/spree/app_configuration.rb', line 483

class_name_attribute :current_store_selector_class, default: 'Spree::StoreSelector::ByServerName'

#customer_returns_per_pageInteger



147
# File 'lib/spree/app_configuration.rb', line 147

preference :customer_returns_per_page, :integer, default: 15

#default_country_isoString

Default customer country ISO code



152
# File 'lib/spree/app_configuration.rb', line 152

preference :default_country_iso, :string, default: 'US'

#default_email_regexpRegexp



156
# File 'lib/spree/app_configuration.rb', line 156

preference :default_email_regexp, :regexp, default: URI::MailTo::EMAIL_REGEXP

#default_payment_builder_classClass

Allows providing your own class for adding default payments to a user’s order from their “wallet”.



419
# File 'lib/spree/app_configuration.rb', line 419

class_name_attribute :default_payment_builder_class, default: 'Spree::Wallet::DefaultPaymentBuilder'

#generate_api_key_for_all_rolesBoolean

at role_user creation for all roles. (default: false)



161
# File 'lib/spree/app_configuration.rb', line 161

preference :generate_api_key_for_all_roles, :boolean, default: false


71
# File 'lib/spree/app_configuration.rb', line 71

preference :guest_token_cookie_options, :hash, default: {}

#image_attachment_moduleModule

Allows switching attachment library for Image

‘Spree::Image::ActiveStorageAttachment` is the default and provides the Active Storage implementation.

Enumerable of images adhering to the present_image_class interface



514
# File 'lib/spree/app_configuration.rb', line 514

class_name_attribute :image_attachment_module, default: Spree::RailsCompatibility.default_image_attachment_module

#inventory_cache_thresholdInteger

Only invalidate product caches when the count on hand for a stock item falls below or rises about the inventory_cache_threshold. When undefined, the product caches will be invalidated anytime the count on hand is changed.



168
# File 'lib/spree/app_configuration.rb', line 168

preference :inventory_cache_threshold, :integer

#layoutString



172
# File 'lib/spree/app_configuration.rb', line 172

preference :layout, :string, default: 'spree/layouts/spree_application'

#log_entry_allow_aliasesBoolean



192
# File 'lib/spree/app_configuration.rb', line 192

preference :log_entry_allow_aliases, :boolean, default: true

#log_entry_permitted_classesArray<String>

Returns An array of extra classes that are allowed to be loaded from a serialized YAML as details in LogEntry (defaults to a non-frozen empty array, so that extensions can add their own classes).

Examples:

config.log_entry_permitted_classes = ['Date']


185
# File 'lib/spree/app_configuration.rb', line 185

preference :log_entry_permitted_classes, :array, default: []

#logoString



176
# File 'lib/spree/app_configuration.rb', line 176

preference :logo, :string, default: 'logo/solidus.svg'

#mails_fromString

Deprecated.

Spree::Store#mail_from_address is used instead

Returns Email address used as From: field in transactional emails.



197
# File 'lib/spree/app_configuration.rb', line 197

preference :mails_from, :string, default: '[email protected]'

#max_level_in_taxons_menuInteger



210
# File 'lib/spree/app_configuration.rb', line 210

preference :max_level_in_taxons_menu, :integer, default: 1

#migration_pathPathname

Configures the absolute path that contains the Solidus engine migrations. This will be checked at app boot to confirm that all Solidus migrations are installed.



589
# File 'lib/spree/app_configuration.rb', line 589

attr_writer :migration_path

#order_bill_address_usedBoolean

bill addresses on payment sources. (default: true)



215
# File 'lib/spree/app_configuration.rb', line 215

preference :order_bill_address_used, :boolean, default: true

#order_cancellations_classClass

Allows providing your own class for managing the inventory units of a completed order.



441
# File 'lib/spree/app_configuration.rb', line 441

class_name_attribute :order_cancellations_class, default: 'Spree::OrderCancellations'

#order_capturing_time_windowInteger



219
# File 'lib/spree/app_configuration.rb', line 219

preference :order_capturing_time_window, :integer, default: 14

#order_contents_classClass

Allows providing your own class for managing the contents of an order.



426
# File 'lib/spree/app_configuration.rb', line 426

class_name_attribute :order_contents_class, default: 'Spree::OrderContents'

#order_mailer_classActionMailer::Base

Allows providing your own Mailer for order mailer.



379
# File 'lib/spree/app_configuration.rb', line 379

class_name_attribute :order_mailer_class, default: 'Spree::OrderMailer'

#order_merger_classClass

Allows providing your own class for merging two orders.



411
# File 'lib/spree/app_configuration.rb', line 411

class_name_attribute :order_merger_class, default: 'Spree::OrderMerger'

#order_mutex_max_ageInteger



223
# File 'lib/spree/app_configuration.rb', line 223

preference :order_mutex_max_age, :integer, default: 120

#order_number_generatorClass

Allows providing your own class instance for generating order numbers.



600
# File 'lib/spree/app_configuration.rb', line 600

attr_writer :order_number_generator

#order_shipping_classClass

Allows providing your own class for shipping an order.



433
# File 'lib/spree/app_configuration.rb', line 433

class_name_attribute :order_shipping_class, default: 'Spree::OrderShipping'

#orders_per_pageInteger



227
# File 'lib/spree/app_configuration.rb', line 227

preference :orders_per_page, :integer, default: 15

#payment_cancellerClass

Allows providing your own class for canceling payments.



447
# File 'lib/spree/app_configuration.rb', line 447

attr_writer :payment_canceller

Allows providing your own class for image galleries on Products

Enumerable of images adhering to the present_image_class interface



504
# File 'lib/spree/app_configuration.rb', line 504

class_name_attribute :product_gallery_class, default: 'Spree::Gallery::ProductGallery'

#product_image_style_defaultSymbol

Defines which style to default to when style is not provided :product is the default.



530
# File 'lib/spree/app_configuration.rb', line 530

class_name_attribute :product_image_style_default, default: :product

#product_image_stylesHash

Defines image styles/sizes hash for styles ‘{ mini: ’48x48>‘,

small: '400x400>',
product: '680x680>',
large: '1200x1200>' } is the default.


541
542
543
544
# File 'lib/spree/app_configuration.rb', line 541

class_name_attribute :product_image_styles, default: { mini: '48x48>',
small: '400x400>',
product: '680x680>',
large: '1200x1200>' }

#products_per_pageInteger



235
# File 'lib/spree/app_configuration.rb', line 235

preference :products_per_page, :integer, default: 12

#promotion_code_batch_mailer_classActionMailer::Base

Allows providing your own Mailer for promotion code batch mailer.



388
# File 'lib/spree/app_configuration.rb', line 388

class_name_attribute :promotion_code_batch_mailer_class, default: 'Spree::PromotionCodeBatchMailer'

#promotions_per_pageInteger



239
# File 'lib/spree/app_configuration.rb', line 239

preference :promotions_per_page, :integer, default: 15

#properties_per_pageInteger



231
# File 'lib/spree/app_configuration.rb', line 231

preference :properties_per_page, :integer, default: 15

#reimbursement_mailer_classActionMailer::Base

Allows providing your own Mailer for reimbursement mailer.



396
# File 'lib/spree/app_configuration.rb', line 396

class_name_attribute :reimbursement_mailer_class, default: 'Spree::ReimbursementMailer'

#require_master_priceBoolean



243
# File 'lib/spree/app_configuration.rb', line 243

preference :require_master_price, :boolean, default: true

#require_payment_to_shipBoolean



247
# File 'lib/spree/app_configuration.rb', line 247

preference :require_payment_to_ship, :boolean, default: true

#return_eligibility_number_of_daysInteger



251
# File 'lib/spree/app_configuration.rb', line 251

preference :return_eligibility_number_of_days, :integer, default: 365

#roles_for_auto_api_keyArray

at role_user creation is desired when user has one of these roles. (default: [‘admin’])



257
# File 'lib/spree/app_configuration.rb', line 257

preference :roles_for_auto_api_key, :array, default: ['admin']

#send_core_emailsBoolean



269
# File 'lib/spree/app_configuration.rb', line 269

preference :send_core_emails, :boolean, default: true

#shipping_instructionsBoolean



273
# File 'lib/spree/app_configuration.rb', line 273

preference :shipping_instructions, :boolean, default: false

#shipping_rate_tax_calculator_classClass

Allows providing your own class for calculating taxes on a shipping rate.



370
# File 'lib/spree/app_configuration.rb', line 370

class_name_attribute :shipping_rate_tax_calculator_class, default: 'Spree::TaxCalculator::ShippingRate'

#show_only_complete_orders_by_defaultBoolean



277
# File 'lib/spree/app_configuration.rb', line 277

preference :show_only_complete_orders_by_default, :boolean, default: true

#show_products_without_priceBoolean



285
# File 'lib/spree/app_configuration.rb', line 285

preference :show_products_without_price, :boolean, default: false

#show_raw_product_descriptionBoolean



289
# File 'lib/spree/app_configuration.rb', line 289

preference :show_raw_product_description, :boolean, default: false

#show_variant_full_priceBoolean



281
# File 'lib/spree/app_configuration.rb', line 281

preference :show_variant_full_price, :boolean, default: false

#store_credit_prioritizer_classClass

Allows providing your own class for prioritizing store credit application to an order.



552
# File 'lib/spree/app_configuration.rb', line 552

class_name_attribute :store_credit_prioritizer_class, default: 'Spree::StoreCreditPrioritizer'

#tax_adjuster_classClass

Allows providing your own class for calculating taxes on an order.

This extension point is under development and may change in a future minor release.



469
# File 'lib/spree/app_configuration.rb', line 469

class_name_attribute :tax_adjuster_class, default: 'Spree::Tax::OrderAdjuster'

#tax_calculator_classClass

Allows providing your own class for calculating taxes on an order.



476
# File 'lib/spree/app_configuration.rb', line 476

class_name_attribute :tax_calculator_class, default: 'Spree::TaxCalculator::Default'

#tax_using_ship_addressBoolean



293
# File 'lib/spree/app_configuration.rb', line 293

preference :tax_using_ship_address, :boolean, default: true

#taxon_attachment_moduleModule

Allows switching attachment library for Taxon

‘Spree::Taxon::ActiveStorageAttachment` is the default and provides the Active Storage implementation.

Enumerable of taxons adhering to the present_taxon_class interface



581
# File 'lib/spree/app_configuration.rb', line 581

class_name_attribute :taxon_attachment_module, default: Spree::RailsCompatibility.default_taxon_attachment_module

#taxon_image_style_defaultSymbol

Defines which style to default to when style is not provided :mini is the default.



560
# File 'lib/spree/app_configuration.rb', line 560

class_name_attribute :taxon_image_style_default, default: :mini

#taxon_stylesHash

Defines taxon styles/sizes hash for styles ‘{ mini: ’48x48>‘,

small: '400x400>',
product: '680x680>',
large: '1200x1200>' } is the default.


571
# File 'lib/spree/app_configuration.rb', line 571

class_name_attribute :taxon_image_styles, default: { mini: '32x32>', normal: '128x128>' }

#taxon_url_parametizer_classClass

Allows providing your own class for creating urls on taxons

returns a String



490
# File 'lib/spree/app_configuration.rb', line 490

class_name_attribute :taxon_url_parametizer_class, default: 'ActiveSupport::Inflector'

#track_inventory_levelsObject

Determines whether to track on_hand values for variants / products. If you do not track inventory, or have effectively unlimited inventory for all products you can turn this on.



300
# File 'lib/spree/app_configuration.rb', line 300

preference :track_inventory_levels, :boolean, default: true

#use_legacy_eventsBoolean

Before v3.2, Solidus used a custom pub/sub implementation based on ActiveSupport::Notifications. Now, we internally use and recommend [Omnes](github.com/nebulab/omnes). This preference allows falling back to the old system.



308
# File 'lib/spree/app_configuration.rb', line 308

versioned_preference :use_legacy_events, :boolean, initial_value: true, boundaries: { "3.2.0.alpha" => false }

Allows providing your own class for image galleries on Variants

Enumerable of images adhering to the present_image_class interface



497
# File 'lib/spree/app_configuration.rb', line 497

class_name_attribute :variant_gallery_class, default: 'Spree::Gallery::VariantGallery'

#variant_price_selector_classClass

Allows implementing custom pricing for variants



329
# File 'lib/spree/app_configuration.rb', line 329

class_name_attribute :variant_price_selector_class, default: 'Spree::Variant::PriceSelector'

#variant_vat_prices_generator_classClass

Allows implementing custom vat prices generation



351
# File 'lib/spree/app_configuration.rb', line 351

class_name_attribute :variant_vat_prices_generator_class, default: 'Spree::Variant::VatPriceGenerator'

Instance Method Details

#admin_vat_locationSpree::Tax::TaxLocation

Default admin VAT location

An object that responds to :state_id and :country_id so it can double as a Spree::Address in Spree::Zone.for_address. Takes the ‘admin_vat_country_iso` as input.



717
718
719
720
721
# File 'lib/spree/app_configuration.rb', line 717

def admin_vat_location
  @default_tax_location ||= Spree::Tax::TaxLocation.new(
    country: Spree::Country.find_by(iso: admin_vat_country_iso)
  )
end

#default_pricing_optionsvariant_price_selector_class

Shortcut for the default pricing options



339
340
341
# File 'lib/spree/app_configuration.rb', line 339

def default_pricing_options
  pricing_options_class.new
end

#environmentObject



634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
# File 'lib/spree/app_configuration.rb', line 634

def environment
  @environment ||= Spree::Core::Environment.new(self).tap do |env|
    env.calculators.promotion_actions_create_adjustments = %w[
      Spree::Calculator::FlatPercentItemTotal
      Spree::Calculator::FlatRate
      Spree::Calculator::FlexiRate
      Spree::Calculator::TieredPercent
      Spree::Calculator::TieredFlatRate
    ]

    env.calculators.promotion_actions_create_item_adjustments = %w[
      Spree::Calculator::DistributedAmount
      Spree::Calculator::FlatRate
      Spree::Calculator::FlexiRate
      Spree::Calculator::PercentOnLineItem
      Spree::Calculator::TieredPercent
    ]

    env.calculators.promotion_actions_create_quantity_adjustments = %w[
      Spree::Calculator::PercentOnLineItem
      Spree::Calculator::FlatRate
    ]

    env.calculators.shipping_methods = %w[
      Spree::Calculator::Shipping::FlatPercentItemTotal
      Spree::Calculator::Shipping::FlatRate
      Spree::Calculator::Shipping::FlexiRate
      Spree::Calculator::Shipping::PerItem
      Spree::Calculator::Shipping::PriceSack
    ]

    env.calculators.tax_rates = %w[
      Spree::Calculator::DefaultTax
      Spree::Calculator::FlatFee
    ]

    env.payment_methods = %w[
      Spree::PaymentMethod::BogusCreditCard
      Spree::PaymentMethod::SimpleBogusCreditCard
      Spree::PaymentMethod::StoreCredit
      Spree::PaymentMethod::Check
    ]

    env.promotions.rules = %w[
      Spree::Promotion::Rules::ItemTotal
      Spree::Promotion::Rules::Product
      Spree::Promotion::Rules::User
      Spree::Promotion::Rules::FirstOrder
      Spree::Promotion::Rules::UserLoggedIn
      Spree::Promotion::Rules::OneUsePerUser
      Spree::Promotion::Rules::Taxon
      Spree::Promotion::Rules::NthOrder
      Spree::Promotion::Rules::OptionValue
      Spree::Promotion::Rules::FirstRepeatPurchaseSince
      Spree::Promotion::Rules::UserRole
      Spree::Promotion::Rules::Store
    ]

    env.promotions.actions = %w[
      Spree::Promotion::Actions::CreateAdjustment
      Spree::Promotion::Actions::CreateItemAdjustments
      Spree::Promotion::Actions::CreateQuantityAdjustments
      Spree::Promotion::Actions::FreeShipping
    ]

    env.promotions.shipping_actions = %w[
      Spree::Promotion::Actions::FreeShipping
    ]

    env.stock_splitters = %w[
      Spree::Stock::Splitter::ShippingCategory
      Spree::Stock::Splitter::Backordered
    ]
  end
end

#eventsObject



624
625
626
# File 'lib/spree/app_configuration.rb', line 624

def events
  @events_configuration ||= Spree::Event::Configuration.new
end

#pricing_options_classClass

Shortcut for getting the variant price selector’s pricing options class



334
# File 'lib/spree/app_configuration.rb', line 334

delegate :pricing_options_class, to: :variant_price_selector_class

#rolesObject



617
618
619
620
621
622
# File 'lib/spree/app_configuration.rb', line 617

def roles
  @roles ||= Spree::RoleConfiguration.new.tap do |roles|
    roles.assign_permissions :default, ['Spree::PermissionSets::DefaultCustomer']
    roles.assign_permissions :admin, ['Spree::PermissionSets::SuperUser']
  end
end

#state_machinesObject



605
606
607
# File 'lib/spree/app_configuration.rb', line 605

def state_machines
  @state_machines ||= Spree::Core::StateMachines.new
end

#static_model_preferencesObject



609
610
611
# File 'lib/spree/app_configuration.rb', line 609

def static_model_preferences
  @static_model_preferences ||= Spree::Preferences::StaticModelPreferences.new
end

#stockObject



613
614
615
# File 'lib/spree/app_configuration.rb', line 613

def stock
  @stock_configuration ||= Spree::Core::StockConfiguration.new
end

#user_last_url_storer_rulesObject



628
629
630
631
632
# File 'lib/spree/app_configuration.rb', line 628

def user_last_url_storer_rules
  @user_last_url_storer_rules ||= ::Spree::Core::ClassConstantizer::Set.new.tap do |set|
    set << 'Spree::UserLastUrlStorer::Rules::AuthenticationRule'
  end
end