From 19cd3c9e95d880b55a3a67fb4c3258becee31920 Mon Sep 17 00:00:00 2001 From: Alessandro Desantis Date: Thu, 24 Sep 2020 14:05:05 +0200 Subject: Use `.configure`/`.configuration` standard for config management --- .../install/templates/initializer.rb | 4 +- lib/solidus_subscriptions.rb | 13 ++++ lib/solidus_subscriptions/config.rb | 56 ----------------- lib/solidus_subscriptions/configuration.rb | 72 ++++++++++++++++++++++ lib/solidus_subscriptions/engine.rb | 2 +- lib/solidus_subscriptions/permitted_attributes.rb | 4 +- 6 files changed, 90 insertions(+), 61 deletions(-) delete mode 100644 lib/solidus_subscriptions/config.rb create mode 100644 lib/solidus_subscriptions/configuration.rb (limited to 'lib') diff --git a/lib/generators/solidus_subscriptions/install/templates/initializer.rb b/lib/generators/solidus_subscriptions/install/templates/initializer.rb index 3de5182..987b922 100644 --- a/lib/generators/solidus_subscriptions/install/templates/initializer.rb +++ b/lib/generators/solidus_subscriptions/install/templates/initializer.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -SolidusSubscriptions::Config.tap do |config| +SolidusSubscriptions.configure do |config| # These handlers are pluggable, however it is highly encouraged that # you subclass from the the dispatcher you are replacing, and call # `super` from within the #dispatch method (if you override it). @@ -47,7 +47,7 @@ SolidusSubscriptions::Config.tap do |config| # date of a subscription, set this: # # ``` - # SolidusSubscriptions::Config.subscription_line_item_attributes = [ + # SolidusSubscriptions.configuration.subscription_line_item_attributes = [ # :quantity, # :subscribable_id, # :interval_length, diff --git a/lib/solidus_subscriptions.rb b/lib/solidus_subscriptions.rb index 69c7b7a..a6b2edf 100644 --- a/lib/solidus_subscriptions.rb +++ b/lib/solidus_subscriptions.rb @@ -6,6 +6,19 @@ require 'solidus_support' require 'deface' require 'state_machines' +require 'solidus_subscriptions/configuration' require 'solidus_subscriptions/ability' require 'solidus_subscriptions/version' require 'solidus_subscriptions/engine' + +module SolidusSubscriptions + class << self + def configure + yield configuration + end + + def configuration + @configuration ||= Configuration.new + end + end +end diff --git a/lib/solidus_subscriptions/config.rb b/lib/solidus_subscriptions/config.rb deleted file mode 100644 index 20ebd20..0000000 --- a/lib/solidus_subscriptions/config.rb +++ /dev/null @@ -1,56 +0,0 @@ -module SolidusSubscriptions - module Config - class << self - attr_writer :success_dispatcher_class - def success_dispatcher_class - @success_dispatcher_class ||= ::SolidusSubscriptions::SuccessDispatcher - end - - attr_writer :failure_dispatcher_class - def failure_dispatcher_class - @failure_dispatcher_class ||= ::SolidusSubscriptions::FailureDispatcher - end - - attr_writer :payment_failed_dispatcher_class - def payment_failed_dispatcher_class - @payment_failed_dispatcher_class ||= ::SolidusSubscriptions::PaymentFailedDispatcher - end - - attr_writer :out_of_stock_dispatcher - def out_of_stock_dispatcher_class - @out_of_stock_dispatcher_class ||= ::SolidusSubscriptions::OutOfStockDispatcher - end - end - - mattr_accessor(:maximum_successive_skips) { 1 } - - mattr_accessor(:maximum_total_skips) { nil } - - mattr_accessor(:reprocessing_interval) { 1.day } - - mattr_accessor(:minimum_cancellation_notice) { 1.day } - - mattr_accessor(:processing_queue) { :default } - - mattr_accessor(:subscription_line_item_attributes) do - [ - :quantity, - :subscribable_id, - :interval_length, - :interval_units, - :end_date, - ] - end - - mattr_accessor(:subscription_attributes) do - [ - :interval_length, - :interval_units, - :end_date, - :actionable_date, - shipping_address_attributes: Spree::PermittedAttributes.address_attributes, - billing_address_attributes: Spree::PermittedAttributes.address_attributes, - ] - end - end -end diff --git a/lib/solidus_subscriptions/configuration.rb b/lib/solidus_subscriptions/configuration.rb new file mode 100644 index 0000000..d128198 --- /dev/null +++ b/lib/solidus_subscriptions/configuration.rb @@ -0,0 +1,72 @@ +module SolidusSubscriptions + class Configuration + attr_writer :success_dispatcher_class + def success_dispatcher_class + @success_dispatcher_class ||= 'SolidusSubscriptions::SuccessDispatcher' + @success_dispatcher_class.constantize + end + + attr_writer :failure_dispatcher_class + def failure_dispatcher_class + @failure_dispatcher_class ||= 'SolidusSubscriptions::FailureDispatcher' + @failure_dispatcher_class.constantize + end + + attr_writer :payment_failed_dispatcher_class + def payment_failed_dispatcher_class + @payment_failed_dispatcher_class ||= 'SolidusSubscriptions::PaymentFailedDispatcher' + @payment_failed_dispatcher_class.constantize + end + + attr_writer :out_of_stock_dispatcher + def out_of_stock_dispatcher_class + @out_of_stock_dispatcher_class ||= 'SolidusSubscriptions::OutOfStockDispatcher' + @out_of_stock_dispatcher_class.constantize + end + + attr_writer :maximum_successive_skips + def maximum_successive_skips + @maximum_successive_skips ||= 1 + end + + attr_accessor :maximum_total_skips + + attr_writer :reprocessing_interval + def reprocessing_interval + @reprocessing_interval ||= 1.day + end + + attr_writer :minimum_cancellation_notice + def minimum_cancellation_notice + @minimum_cancellation_notice ||= 1.day + end + + attr_writer :processing_queue + def processing_queue + @processing_queue ||= :default + end + + attr_writer :subscription_line_item_attributes + def subscription_line_item_attributes + @subscription_line_item_attributes ||= [ + :quantity, + :subscribable_id, + :interval_length, + :interval_units, + :end_date, + ] + end + + attr_writer :subscription_attributes + def subscription_attributes + @subscription_attributes ||= [ + :interval_length, + :interval_units, + :end_date, + :actionable_date, + shipping_address_attributes: Spree::PermittedAttributes.address_attributes, + billing_address_attributes: Spree::PermittedAttributes.address_attributes, + ] + end + end +end diff --git a/lib/solidus_subscriptions/engine.rb b/lib/solidus_subscriptions/engine.rb index 8b5b083..0f18d95 100644 --- a/lib/solidus_subscriptions/engine.rb +++ b/lib/solidus_subscriptions/engine.rb @@ -4,7 +4,7 @@ require 'spree/core' require 'solidus_subscriptions' require 'solidus_subscriptions/permitted_attributes' -require 'solidus_subscriptions/config' +require 'solidus_subscriptions/configuration' require 'solidus_subscriptions/processor' module SolidusSubscriptions diff --git a/lib/solidus_subscriptions/permitted_attributes.rb b/lib/solidus_subscriptions/permitted_attributes.rb index d1ae5a1..f689e90 100644 --- a/lib/solidus_subscriptions/permitted_attributes.rb +++ b/lib/solidus_subscriptions/permitted_attributes.rb @@ -5,11 +5,11 @@ module SolidusSubscriptions module PermittedAttributes class << self def subscription_line_item_attributes - [Config.subscription_line_item_attributes] + [SolidusSubscriptions.configuration.subscription_line_item_attributes] end def subscription_attributes - Config.subscription_attributes | [ + SolidusSubscriptions.configuration.subscription_attributes | [ line_items_attributes: (subscription_line_item_attributes | [:id] - [:subscribable_id]), ] end -- cgit v1.2.3