summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/generators/solidus_subscriptions/install/templates/initializer.rb4
-rw-r--r--lib/solidus_subscriptions.rb13
-rw-r--r--lib/solidus_subscriptions/config.rb56
-rw-r--r--lib/solidus_subscriptions/configuration.rb72
-rw-r--r--lib/solidus_subscriptions/engine.rb2
-rw-r--r--lib/solidus_subscriptions/permitted_attributes.rb4
6 files changed, 90 insertions, 61 deletions
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