-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
/
core.rb
146 lines (127 loc) 路 4.92 KB
/
core.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# frozen_string_literal: true
require "action_controller/railtie"
require "action_mailer/railtie"
require "action_view/railtie"
require "active_job/railtie"
require "active_model/railtie"
require "active_record/railtie"
require "active_storage/engine"
require "sprockets/railtie"
require 'acts_as_list'
require 'awesome_nested_set'
require 'cancan'
require 'friendly_id'
require 'kaminari/activerecord'
require 'mail'
require 'monetize'
require 'paperclip'
require 'ransack'
require 'state_machines-activerecord'
require 'spree/deprecation'
require 'spree/rails_compatibility'
# This is required because ActiveModel::Validations#invalid? conflicts with the
# invalid state of a Payment. In the future this should be removed.
StateMachines::Machine.ignore_method_conflicts = true
module Spree
mattr_accessor :user_class, default: 'Spree::LegacyUser'
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
# Load the same version defaults for all available Solidus components
#
# @see Spree::Preferences::Configuration#load_defaults
def self.load_defaults(version)
Spree::Config.load_defaults(version)
Spree::Frontend::Config.load_defaults(version) if defined?(Spree::Frontend::Config)
Spree::Backend::Config.load_defaults(version) if defined?(Spree::Backend::Config)
Spree::Api::Config.load_defaults(version) if defined?(Spree::Api::Config)
end
# 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.
def self.config(&_block)
yield(Spree::Config)
end
module Core
# @api private
def self.has_install_generator_been_run?(rails_paths: Rails.application.paths, initializer_name: 'spree.rb', dummy_app_name: 'DummyApp::Application')
does_spree_initializer_exist?(rails_paths, initializer_name) ||
running_solidus_test_suite_with_dummy_app?(dummy_app_name)
end
def self.running_solidus_test_suite_with_dummy_app?(dummy_app_name)
Rails.env.test? && Rails.application.class.name == dummy_app_name
end
private_class_method :running_solidus_test_suite_with_dummy_app?
def self.does_spree_initializer_exist?(rails_paths, initializer_name)
rails_paths['config/initializers'].any? do |path|
File.exist?(Pathname.new(path).join(initializer_name))
end
end
private_class_method :does_spree_initializer_exist?
class GatewayError < RuntimeError; end
end
end
if Gem::Version.new(RUBY_VERSION) < Gem::Version.new("2.7")
Spree::Deprecation.warn <<~HEREDOC
Ruby 2.5 & Ruby 2.6 (both EOL) are deprecated and will not be supported anymore from the next Solidus version.
Please, upgrade to a more recent Ruby version.
Read more on the release notes for different Ruby versions here:
https://www.ruby-lang.org/en/downloads/releases/
HEREDOC
end
if Gem::Version.new(Rails.version) < Gem::Version.new('6.0')
Spree::Deprecation.warn <<~HEREDOC
Rails 5.2 (EOL) is deprecated and will not be supported anymore from the next Solidus version.
Please, upgrade to a more recent Rails version.
Read more on upgrading from Rails 5.2 to Rails 6.0 here:
https://guides.rubyonrails.org/upgrading_ruby_on_rails.html#upgrading-from-rails-5-2-to-rails-6-0
HEREDOC
end
require 'spree/core/version'
require 'spree/core/active_merchant_dependencies'
require 'spree/core/class_constantizer'
require 'spree/core/environment_extension'
require 'spree/core/environment/calculators'
require 'spree/core/environment/promotions'
require 'spree/core/environment'
require 'spree/migrations'
require 'spree/migration_helpers'
require 'spree/event'
require 'spree/bus'
require 'spree/core/engine'
require 'spree/i18n'
require 'spree/localized_number'
require 'spree/money'
require 'spree/permitted_attributes'
require 'spree/core/importer'
require 'spree/core/permalinks'
require 'spree/core/product_duplicator'
require 'spree/core/controller_helpers/auth'
require 'spree/core/controller_helpers/common'
require 'spree/core/controller_helpers/current_host'
require 'spree/core/controller_helpers/order'
require 'spree/core/controller_helpers/payment_parameters'
require 'spree/core/controller_helpers/pricing'
require 'spree/core/controller_helpers/search'
require 'spree/core/controller_helpers/store'
require 'spree/core/controller_helpers/strong_parameters'
require 'spree/core/role_configuration'
require 'spree/core/state_machines'
require 'spree/core/stock_configuration'
require 'spree/core/validators/email'
require 'spree/permission_sets'
require 'spree/user_class_handle'
require 'spree/preferences/store'
require 'spree/preferences/static_model_preferences'
require 'spree/preferences/scoped_store'