openfoodfoundation/openfoodnetwork

View on GitHub
lib/spree/core/environment_extension.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

module Spree
  module Core
    module EnvironmentExtension
      extend ActiveSupport::Concern

      def add_class(name)
        instance_variable_set "@#{name}", Set.new

        create_method( :"#{name}=" ) { |val|
          instance_variable_set( "@" + name, val)
        }

        create_method(name.to_sym) do
          instance_variable_get( "@" + name )
        end
      end

      private

      def create_method(name, &)
        self.class.__send__(:define_method, name, &)
      end
    end
  end
end