Sha256: d458012c028a0abbd4c91d7388da623df0c0bceea709aabb21d7d1f42d5dbf6e

Contents?: true

Size: 1.99 KB

Versions: 32

Compression:

Stored size: 1.99 KB

Contents

module Spree::Preferences
  # This takes the preferrable methods and adds some
  # syntatic sugar to access the preferences
  #
  #   class App < Configuration
  #     preference :color, :string
  #   end
  #
  #   a = App.new
  #
  # Provides the following setters:
  #
  #   a.color = :blue
  #   a[:color] = :blue
  #   a.set color: :blue
  #   a.preferred_color = :blue
  #
  # and the following getters:
  #
  #   a.color
  #   a[:color]
  #   a.get :color
  #   a.preferred_color
  #
  class Configuration
    include Spree::Preferences::Preferable

    # @yield [config] Yields this configuration object to a block
    def configure
      yield(self)
    end

    # @!attribute preference_store
    # Storage method for preferences. Default is {ScopedStore}
    attr_writer :preference_store
    def preference_store
      @preference_store ||= ScopedStore.new(self.class.name.underscore)
    end

    # Replace the default legacy preference store, which stores preferences in
    # the spree_preferences table, with a plain in memory hash. This is faster
    # and less error prone.
    #
    # This will set all preferences to their default values.
    #
    # These won't be loaded from or persisted to the database, so any desired
    # changes must be made each time the application is started, such as in an
    # initializer.
    def use_static_preferences!
      @preference_store = default_preferences
    end

    alias_method :preferences, :preference_store

    # Reset all preferences to their default values.
    def reset
      set(default_preferences)
    end

    alias :[] :get_preference
    alias :[]= :set_preference

    alias :get :get_preference

    # @param preferences [Hash] a hash of preferences to set
    def set(preferences)
      preferences.each do |name, value|
        set_preference name, value
      end
    end

    def self.preference(name, type, options = {})
      super
      alias_method name.to_s, "preferred_#{name}"
      alias_method "#{name}=", "preferred_#{name}="
    end
  end
end

Version data entries

32 entries across 32 versions & 1 rubygems

Version Path
solidus_core-2.1.0.beta1 app/models/spree/preferences/configuration.rb
solidus_core-2.0.0 app/models/spree/preferences/configuration.rb
solidus_core-1.4.0 app/models/spree/preferences/configuration.rb
solidus_core-2.0.0.rc1 app/models/spree/preferences/configuration.rb
solidus_core-1.4.0.rc1 app/models/spree/preferences/configuration.rb
solidus_core-2.0.0.beta1 app/models/spree/preferences/configuration.rb
solidus_core-1.4.0.beta1 app/models/spree/preferences/configuration.rb
solidus_core-1.3.1 app/models/spree/preferences/configuration.rb
solidus_core-1.3.0 app/models/spree/preferences/configuration.rb
solidus_core-1.3.0.rc2 app/models/spree/preferences/configuration.rb
solidus_core-1.3.0.rc1 app/models/spree/preferences/configuration.rb
solidus_core-1.3.0.beta1 app/models/spree/preferences/configuration.rb