require 'action_controller/railtie' require 'action_view/railtie' require 'active_job/railtie' require 'active_model/railtie' require 'active_record/railtie' require 'active_storage/engine' require 'active_merchant' require 'acts_as_list' require 'auto_strip_attributes' require 'awesome_nested_set' require 'cancan' require 'friendly_id' require 'kaminari' require 'monetize' require 'paranoia' require 'mini_magick' require 'ransack' require 'state_machines-activerecord' require 'active_storage_validations' require 'activerecord-typedstore' # This is required because ActiveModel::Validations#invalid? conflicts with the # invalid state of a Payment. In the future this should be removed. StateMachines::Machine.ignore_method_conflicts = true module Spree mattr_accessor :user_class, :admin_user_class, :private_storage_service_name def self.user_class(constantize: true) if @@user_class.is_a?(Class) raise 'Spree.user_class MUST be a String or Symbol object, not a Class object.' elsif @@user_class.is_a?(String) || @@user_class.is_a?(Symbol) constantize ? @@user_class.to_s.constantize : @@user_class.to_s end end def self.admin_user_class(constantize: true) @@admin_user_class ||= @@user_class if @@admin_user_class.is_a?(Class) raise 'Spree.admin_user_class MUST be a String or Symbol object, not a Class object.' elsif @@admin_user_class.is_a?(String) || @@admin_user_class.is_a?(Symbol) constantize ? @@admin_user_class.to_s.constantize : @@admin_user_class.to_s end end def self.private_storage_service_name if @@private_storage_service_name if @@private_storage_service_name.is_a?(String) || @@private_storage_service_name.is_a?(Symbol) @@private_storage_service_name.to_sym else raise 'Spree.private_storage_service_name MUST be a String or Symbol object.' end end end # Used to configure Spree. # # Example: # # Spree.config do |config| # config.track_inventory_levels = false # end # # This method is defined within the core gem on purpose. # Some people may only wish to use the Core part of Spree. def self.config yield(Spree::Config) end # Used to set dependencies for Spree. # # Example: # # Spree.dependencies do |dependency| # dependency.cart_add_item_service = MyCustomAddToCart # end # # This method is defined within the core gem on purpose. # Some people may only wish to use the Core part of Spree. def self.dependencies yield(Spree::Dependencies) end module Core autoload :ProductFilters, 'spree/core/product_filters' autoload :TokenGenerator, 'spree/core/token_generator' class GatewayError < RuntimeError; end class DestroyWithOrdersError < StandardError; end end end require 'spree/core/version' require 'spree/core/number_generator' require 'spree/migrations' require 'spree/core/engine' require 'spree/i18n' require 'spree/localized_number' require 'spree/money' require 'spree/permitted_attributes' require 'spree/service_module' require 'spree/database_type_utilities' require 'spree/core/dependencies_helper' require 'spree/core/app_dependencies' require 'spree/core/importer' require 'spree/core/query_filters' require 'spree/core/product_duplicator' require 'spree/core/controller_helpers/auth' require 'spree/core/controller_helpers/common' require 'spree/core/controller_helpers/order' require 'spree/core/controller_helpers/search' require 'spree/core/controller_helpers/store' require 'spree/core/controller_helpers/strong_parameters' require 'spree/core/controller_helpers/locale' require 'spree/core/controller_helpers/currency'