Module: Spree

Defined in:
lib/spree/core/current_store.rb,
lib/spree/i18n.rb,
lib/spree/core.rb,
lib/spree/money.rb,
lib/spree/responder.rb,
lib/spree/migrations.rb,
lib/spree/core/engine.rb,
lib/spree/deprecation.rb,
app/models/spree/zone.rb,
app/models/spree/role.rb,
lib/spree/core/version.rb,
app/models/spree/order.rb,
app/models/spree/asset.rb,
app/models/spree/image.rb,
app/models/spree/taxon.rb,
app/models/spree/state.rb,
app/models/spree/price.rb,
app/models/spree/store.rb,
lib/spree/core/importer.rb,
app/models/spree/refund.rb,
app/models/spree/ability.rb,
app/models/spree/country.rb,
app/models/spree/gateway.rb,
app/models/spree/payment.rb,
app/models/spree/address.rb,
app/models/spree/product.rb,
app/models/spree/variant.rb,
lib/spree/core/permalinks.rb,
app/models/spree/exchange.rb,
app/models/spree/shipment.rb,
app/models/spree/tax_rate.rb,
app/models/spree/taxonomy.rb,
app/models/spree/property.rb,
lib/spree/core/search/base.rb,
lib/spree/core/environment.rb,
lib/spree/localized_number.rb,
app/models/spree/line_item.rb,
app/models/spree/promotion.rb,
app/models/spree/log_entry.rb,
app/models/spree/role_user.rb,
lib/spree/promo/environment.rb,
lib/spree/migration_helpers.rb,
app/models/spree/stock_item.rb,
app/models/spree/calculator.rb,
app/models/spree/adjustment.rb,
app/models/spree/legacy_user.rb,
app/models/spree/return_item.rb,
app/models/spree/zone_member.rb,
app/models/spree/option_type.rb,
app/models/spree/credit_card.rb,
app/models/spree/order_mutex.rb,
lib/spree/core/importer/order.rb,
lib/spree/core/search/variant.rb,
lib/spree/core/price_migrator.rb,
app/helpers/spree/base_helper.rb,
app/mailers/spree/test_mailer.rb,
app/mailers/spree/base_mailer.rb,
app/models/spree/option_value.rb,
app/models/spree/order_merger.rb,
app/models/spree/state_change.rb,
app/models/spree/stock/packer.rb,
app/models/spree/tax_category.rb,
app/models/spree/user_address.rb,
lib/spree/core/product_filters.rb,
lib/spree/permission_sets/base.rb,
lib/spree/testing_support/i18n.rb,
lib/spree/permitted_attributes.rb,
app/helpers/spree/store_helper.rb,
app/mailers/spree/order_mailer.rb,
app/models/spree/gateway/bogus.rb,
app/models/spree/order_updater.rb,
app/models/spree/refund_reason.rb,
app/models/spree/reimbursement.rb,
app/models/spree/return_reason.rb,
app/models/spree/shipping_rate.rb,
app/models/spree/stock/package.rb,
app/models/spree/transfer_item.rb,
lib/spree/core/importer/product.rb,
lib/spree/testing_support/flash.rb,
app/helpers/spree/orders_helper.rb,
app/helpers/spree/taxons_helper.rb,
app/mailers/spree/carton_mailer.rb,
app/models/spree/classification.rb,
app/models/spree/order/payments.rb,
app/models/spree/order/checkout.rb,
app/models/spree/order_contents.rb,
app/models/spree/stock_location.rb,
app/models/spree/payment_source.rb,
app/models/spree/payment_method.rb,
app/models/spree/product/scopes.rb,
app/models/spree/promotion_rule.rb,
app/models/spree/stock/adjuster.rb,
app/models/spree/stock_transfer.rb,
app/models/spree/stock_movement.rb,
app/models/spree/variant/scopes.rb,
app/models/spree/payment_create.rb,
app/models/spree/inventory_unit.rb,
app/models/spree/customer_return.rb,
app/models/spree/order_inventory.rb,
app/models/spree/order_promotion.rb,
app/models/spree/tax/tax_helpers.rb,
app/models/spree/shipping_method.rb,
app/models/spree/stock/estimator.rb,
lib/spree/core/role_configuration.rb,
lib/spree/core/product_duplicator.rb,
lib/spree/core/class_constantizer.rb,
lib/spree/testing_support/caching.rb,
app/helpers/spree/checkout_helper.rb,
app/helpers/spree/products_helper.rb,
app/models/spree/line_item_action.rb,
app/models/spree/product_property.rb,
app/models/spree/promotion_action.rb,
app/models/spree/tax/tax_location.rb,
app/models/spree/stock/quantifier.rb,
lib/spree/core/stock_configuration.rb,
app/models/spree/adjustment_reason.rb,
app/models/spree/promotion_chooser.rb,
app/models/spree/app_configuration.rb,
app/models/spree/tax/item_adjuster.rb,
app/models/spree/shipping_category.rb,
app/models/spree/stock/prioritizer.rb,
app/models/spree/stock/coordinator.rb,
app/models/spree/store_credit_type.rb,
app/models/spree/user_class_handle.rb,
app/models/spree/shipping_rate_tax.rb,
app/models/spree/payment/processing.rb,
app/models/spree/promotion_category.rb,
app/models/spree/reimbursement_type.rb,
app/models/spree/returns_calculator.rb,
app/models/spree/tax/order_adjuster.rb,
app/models/spree/stock/content_item.rb,
app/models/spree/store_credit_event.rb,
lib/spree/core/environment_extension.rb,
lib/spree/permission_sets/super_user.rb,
app/models/concerns/spree/named_type.rb,
app/models/spree/billing_integration.rb,
app/models/spree/product_option_type.rb,
app/models/spree/promotion_rule_user.rb,
app/models/spree/shipping_calculator.rb,
app/models/spree/stock/splitter/base.rb,
app/models/spree/user_stock_location.rb,
app/models/spree/promotion_rule_role.rb,
lib/spree/testing_support/url_helpers.rb,
lib/spree/testing_support/preferences.rb,
app/models/spree/calculator/flat_rate.rb,
app/models/spree/gateway/bogus_simple.rb,
app/models/spree/order_stock_location.rb,
app/models/spree/payment_method/check.rb,
app/models/spree/promotion/rules/user.rb,
app/models/spree/reimbursement/credit.rb,
app/models/spree/return_authorization.rb,
app/models/spree/shipping_method_zone.rb,
app/models/spree/stock/differentiator.rb,
app/models/spree/store_payment_method.rb,
app/models/spree/promotion_rule_taxon.rb,
app/models/spree/promotion_code_batch.rb,
lib/spree/core/controller_helpers/auth.rb,
lib/spree/core/environment/calculators.rb,
lib/spree/permission_sets/user_display.rb,
app/mailers/spree/reimbursement_mailer.rb,
app/models/concerns/spree/user_methods.rb,
app/models/spree/calculator/price_sack.rb,
app/models/spree/calculator/flexi_rate.rb,
app/models/spree/option_values_variant.rb,
app/models/spree/payment_capture_event.rb,
app/models/spree/promotion/rules/taxon.rb,
app/models/spree/stock/splitter/weight.rb,
app/models/spree/variant_property_rule.rb,
lib/spree/core/controller_helpers/store.rb,
lib/spree/core/controller_helpers/order.rb,
lib/spree/mailer_previews/order_preview.rb,
lib/spree/permission_sets/order_display.rb,
lib/spree/permission_sets/stock_display.rb,
app/models/concerns/spree/display_money.rb,
app/models/concerns/spree/default_price.rb,
app/models/spree/calculator/default_tax.rb,
app/models/spree/product_promotion_rule.rb,
app/models/spree/promotion_handler/cart.rb,
app/models/spree/promotion_handler/page.rb,
app/models/spree/variant/price_selector.rb,
app/jobs/spree/promotion_code_batch_job.rb,
lib/spree/core/controller_helpers/search.rb,
lib/spree/core/controller_helpers/common.rb,
lib/spree/mailer_previews/carton_preview.rb,
lib/spree/permission_sets/report_display.rb,
app/models/concerns/spree/user_reporting.rb,
app/models/spree/order_update_attributes.rb,
app/models/spree/promotion/rules/product.rb,
app/models/spree/reimbursement_performer.rb,
app/models/spree/tax/shipping_rate_taxer.rb,
app/models/spree/variant/pricing_options.rb,
lib/spree/core/controller_helpers/pricing.rb,
lib/spree/permission_sets/user_management.rb,
lib/spree/permission_sets/product_display.rb,
app/models/spree/calculator/free_shipping.rb,
app/models/spree/promotion_handler/coupon.rb,
app/models/spree/shipping_method_category.rb,
lib/generators/spree/dummy/dummy_generator.rb,
lib/spree/permission_sets/order_management.rb,
lib/spree/permission_sets/stock_management.rb,
lib/spree/permission_sets/default_customer.rb,
app/models/spree/calculator/tiered_percent.rb,
app/models/spree/promotion/rules/nth_order.rb,
app/models/spree/promotion/rules/user_role.rb,
app/models/spree/reimbursement_type/credit.rb,
app/models/spree/stock/inventory_validator.rb,
lib/spree/permission_sets/dashboard_display.rb,
lib/spree/permission_sets/promotion_display.rb,
app/models/concerns/spree/adjustment_source.rb,
app/models/concerns/spree/user_address_book.rb,
app/models/spree/promotion/rules/item_total.rb,
app/models/spree/stock/splitter/backordered.rb,
app/models/spree/stock/shipping_rate_sorter.rb,
lib/spree/permission_sets/product_management.rb,
app/models/spree/calculator/percent_per_item.rb,
app/models/spree/calculator/tiered_flat_rate.rb,
app/models/spree/payment_method/store_credit.rb,
app/models/spree/promotion/rules/first_order.rb,
app/models/spree/variant/vat_price_generator.rb,
app/models/spree/variant_property_rule_value.rb,
lib/spree/testing_support/controller_requests.rb,
app/mailers/spree/promotion_code_batch_mailer.rb,
app/models/concerns/spree/user_payment_source.rb,
app/models/spree/calculator/shipping/per_item.rb,
app/models/spree/promotion/rules/option_value.rb,
app/models/spree/reimbursement_tax_calculator.rb,
app/models/spree/stock/shipping_rate_selector.rb,
app/models/spree/stock/inventory_unit_builder.rb,
app/models/spree/stock/availability_validator.rb,
lib/generators/spree/install/install_generator.rb,
lib/spree/core/controller_helpers/respond_with.rb,
lib/spree/permission_sets/promotion_management.rb,
app/models/spree/calculator/shipping/flat_rate.rb,
lib/spree/mailer_previews/reimbursement_preview.rb,
lib/spree/permission_sets/configuration_display.rb,
lib/spree/testing_support/authorization_helpers.rb,
app/models/spree/calculator/shipping/flexi_rate.rb,
app/models/spree/calculator/shipping/price_sack.rb,
app/models/spree/promotion/rules/user_logged_in.rb,
lib/spree/permission_sets/stock_transfer_display.rb,
app/models/concerns/spree/calculated_adjustments.rb,
app/models/spree/calculator/percent_on_line_item.rb,
app/models/spree/promotion/actions/free_shipping.rb,
app/models/spree/promotion_handler/free_shipping.rb,
app/models/spree/variant_property_rule_condition.rb,
app/models/concerns/spree/user_api_authentication.rb,
app/models/spree/promotion/rules/one_use_per_user.rb,
app/models/spree/stock/splitter/shipping_category.rb,
lib/spree/permission_sets/restricted_stock_display.rb,
lib/spree/permission_sets/configuration_management.rb,
lib/spree/core/controller_helpers/strong_parameters.rb,
lib/spree/permission_sets/stock_transfer_management.rb,
app/models/spree/calculator/flat_percent_item_total.rb,
lib/spree/core/controller_helpers/payment_parameters.rb,
app/models/spree/preferences/statically_configurable.rb,
app/models/spree/promotion/actions/create_adjustment.rb,
lib/spree/permission_sets/restricted_stock_management.rb,
app/models/concerns/spree/ordered_property_value_list.rb,
app/models/spree/preferences/static_model_preferences.rb,
lib/generators/spree/custom_user/custom_user_generator.rb,
app/models/spree/reimbursement/reimbursement_type_engine.rb,
app/models/spree/validations/db_maximum_length_validator.rb,
app/models/spree/calculator/returns/default_refund_amount.rb,
app/models/spree/reimbursement_type/reimbursement_helpers.rb,
app/models/spree/promotion/actions/create_item_adjustments.rb,
app/models/spree/return_item/eligibility_validator/default.rb,
lib/spree/permission_sets/restricted_stock_transfer_display.rb,
app/models/spree/reimbursement/reimbursement_type_validator.rb,
app/models/spree/calculator/shipping/flat_percent_item_total.rb,
app/models/spree/promotion/rules/first_repeat_purchase_since.rb,
lib/spree/permission_sets/restricted_stock_transfer_management.rb,
app/models/spree/return_item/eligibility_validator/rma_required.rb,
app/models/spree/return_item/eligibility_validator/base_validator.rb,
app/models/spree/return_item/eligibility_validator/order_completed.rb,
app/models/spree/return_item/eligibility_validator/inventory_shipped.rb,
app/models/spree/return_item/eligibility_validator/no_reimbursements.rb,
app/models/spree/return_item/eligibility_validator/time_since_purchase.rb,
app/models/spree/return_item/exchange_variant_eligibility/same_product.rb,
app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb

Overview

The reason for variant properties not being associated with variants (either directly or through an association table) is performance.

Variant properties are intended to be applied to a group of variants based on their option values. If there were thousands of variants that shared the same option value, attempting to associate a variant property with that group of variants would be problematic in terms of performance.

An added benefit to this approach is not having to associate existing variant properties with newly created variants. If the variant has the option values targeted by the rule, the properties will automatically apply to the variant.

Defined Under Namespace

Modules: AdjustmentSource, BaseHelper, CalculatedAdjustments, CheckoutHelper, Core, DefaultPrice, DisplayMoney, DummyGeneratorHelper, MigrationHelpers, NamedType, OrderedPropertyValueList, OrdersHelper, PermissionSets, PermittedAttributes, Preferences, ProductsHelper, Promo, PromotionHandler, RansackableAttributes, Stock, StoreHelper, Tax, TaxonsHelper, TestingSupport, UserAddressBook, UserApiAuthentication, UserMethods, UserPaymentSource, UserReporting, Validations Classes: Ability, Address, Adjustment, AdjustmentReason, AppConfiguration, Asset, Base, BaseController, BaseMailer, BillingIntegration, Calculator, Carton, CartonMailer, Classification, Country, CreditCard, CustomUserGenerator, CustomerReturn, DummyGenerator, Exchange, Gateway, Image, InstallGenerator, InventoryUnit, LegacyUser, LineItem, LineItemAction, LocalizedNumber, LogEntry, MailerPreviews, Migrations, Money, OptionType, OptionValue, OptionValuesVariant, Order, OrderCancellations, OrderCapturing, OrderCapturingFailures, OrderContents, OrderInventory, OrderMailer, OrderMerger, OrderMutex, OrderPromotion, OrderShipping, OrderStockLocation, OrderUpdateAttributes, OrderUpdater, Payment, PaymentCaptureEvent, PaymentCreate, PaymentMethod, PaymentSource, Preference, Price, PriceMigrator, Product, ProductDuplicator, ProductOptionType, ProductPromotionRule, ProductProperty, Promotion, PromotionAction, PromotionCategory, PromotionChooser, PromotionCode, PromotionCodeBatch, PromotionCodeBatchJob, PromotionCodeBatchMailer, PromotionRule, PromotionRuleRole, PromotionRuleTaxon, PromotionRuleUser, Property, Refund, RefundReason, Reimbursement, ReimbursementMailer, ReimbursementPerformer, ReimbursementTaxCalculator, ReimbursementType, Responder, ReturnAuthorization, ReturnItem, ReturnReason, ReturnsCalculator, Role, RoleConfiguration, RoleUser, Shipment, ShippingCalculator, ShippingCategory, ShippingManifest, ShippingMethod, ShippingMethodCategory, ShippingMethodStockLocation, ShippingMethodZone, ShippingRate, ShippingRateTax, State, StateChange, StockItem, StockLocation, StockMovement, StockTransfer, Store, StoreCredit, StoreCreditCategory, StoreCreditEvent, StoreCreditType, StoreCreditUpdateReason, StorePaymentMethod, TaxCategory, TaxRate, Taxon, Taxonomy, TestMailer, TransferItem, TranslationHelperWrapper, UnitCancel, UserAddress, UserClassHandle, UserStockLocation, Variant, VariantPropertyRule, VariantPropertyRuleCondition, VariantPropertyRuleValue, Wallet, WalletPaymentSource, Zone, ZoneMember

Constant Summary

I18N_GENERIC_PLURAL =

This value is used as a count for the pluralization helpers related to I18n ex: Spree::Order.model_name.human(count: Spree::I18N_GENERIC_PLURAL) Related to Solidus issue #1164, this is needed to avoid problems with some pluralization calculators

2.1
Deprecation =
ActiveSupport::Deprecation.new('3.0', 'Solidus')

Class Attribute Summary (collapse)

Class Method Summary (collapse)

Class Attribute Details

+ (Object) missing_translation_messages

Returns the value of attribute missing_translation_messages



13
14
15
# File 'lib/spree/testing_support/i18n.rb', line 13

def missing_translation_messages
  @missing_translation_messages
end

+ (Object) unused_translation_messages

Returns the value of attribute unused_translation_messages



13
14
15
# File 'lib/spree/testing_support/i18n.rb', line 13

def unused_translation_messages
  @unused_translation_messages
end

+ (Object) unused_translations

Returns the value of attribute unused_translations



13
14
15
# File 'lib/spree/testing_support/i18n.rb', line 13

def unused_translations
  @unused_translations
end

+ (Object) used_translations

Returns the value of attribute used_translations



13
14
15
# File 'lib/spree/testing_support/i18n.rb', line 13

def used_translations
  @used_translations
end

Class Method Details

+ (Object) check_missing_translations



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/spree/testing_support/i18n.rb', line 29

def self.check_missing_translations
  self.missing_translation_messages = []
  self.used_translations ||= []
  used_translations.map { |a| a.split('.') }.each do |translation_keys|
    root = translations
    processed_keys = []
    translation_keys.each do |key|
      begin
        root = root.fetch(key.to_sym)
        processed_keys << key.to_sym
      rescue KeyError
        error = "#{(processed_keys << key).join('.')} (#{I18n.locale})"
        unless Spree.missing_translation_messages.include?(error)
          Spree.missing_translation_messages << error
        end
      end
    end
  end
end

+ (Object) check_unused_translations



49
50
51
52
53
54
55
56
57
58
# File 'lib/spree/testing_support/i18n.rb', line 49

def self.check_unused_translations
  self.used_translations ||= []
  self.unused_translation_messages = []
  self.unused_translations = []
  load_translations(translations)
  translation_diff = unused_translations - used_translations
  translation_diff.each do |translation|
    Spree.unused_translation_messages << "#{translation} (#{I18n.locale})"
  end
end

+ (Object) config {|Spree::Config| ... }

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.

Yields:

  • (Spree::Config)


42
43
44
# File 'lib/spree/core.rb', line 42

def self.config(&_block)
  yield(Spree::Config)
end

+ (Object) normal_t

Add spree namespace and delegate to Rails TranslationHelper for some nice extra functionality. e.g return reasonable strings for missing translations



15
16
17
18
# File 'lib/spree/testing_support/i18n.rb', line 15

def translate(key, options = {})
  options[:scope] = [:spree, *options[:scope]]
  TranslationHelperWrapper.new.translate(key, options)
end

+ (Object) solidus_gem_version



6
7
8
# File 'lib/spree/core/version.rb', line 6

def self.solidus_gem_version
  Gem::Version.new(solidus_version)
end

+ (Object) solidus_version



2
3
4
# File 'lib/spree/core/version.rb', line 2

def self.solidus_version
  "2.2.0.alpha"
end

+ (Object) translate(key, options = {}) Also known as: t

Add spree namespace and delegate to Rails TranslationHelper for some nice extra functionality. e.g return reasonable strings for missing translations



19
20
21
22
# File 'lib/spree/i18n.rb', line 19

def translate(key, options = {})
  options[:scope] = [:spree, *options[:scope]]
  TranslationHelperWrapper.new.translate(key, options)
end

+ (Object) user_class



24
25
26
27
28
29
30
# File 'lib/spree/core.rb', line 24

def self.user_class
  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)
    @@user_class.to_s.constantize
  end
end