solidus_core 3.0.1 → 3.1.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of solidus_core might be problematic. Click here for more details.

Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/app/helpers/spree/base_helper.rb +1 -1
  3. data/app/helpers/spree/products_helper.rb +1 -1
  4. data/app/models/concerns/spree/default_price.rb +63 -10
  5. data/app/models/spree/adjustment.rb +6 -5
  6. data/app/models/spree/customer_return.rb +3 -2
  7. data/app/models/spree/image/active_storage_attachment.rb +2 -7
  8. data/app/models/spree/image/paperclip_attachment.rb +2 -2
  9. data/app/models/spree/line_item.rb +2 -2
  10. data/app/models/spree/order.rb +12 -7
  11. data/app/models/spree/price.rb +1 -1
  12. data/app/models/spree/product/scopes.rb +5 -5
  13. data/app/models/spree/product.rb +12 -1
  14. data/app/models/spree/promotion/rules/item_total.rb +50 -6
  15. data/app/models/spree/promotion.rb +2 -2
  16. data/app/models/spree/promotion_code.rb +1 -1
  17. data/app/models/spree/return_item.rb +2 -3
  18. data/app/models/spree/shipping_rate_tax.rb +1 -1
  19. data/app/models/spree/stock/availability.rb +11 -3
  20. data/app/models/spree/stock/simple_coordinator.rb +6 -11
  21. data/app/models/spree/stock_location.rb +1 -1
  22. data/app/models/spree/store_credit.rb +6 -1
  23. data/app/models/spree/tax_calculator/shipping_rate.rb +1 -1
  24. data/app/models/spree/taxon/active_storage_attachment.rb +2 -2
  25. data/app/models/spree/taxon/paperclip_attachment.rb +3 -3
  26. data/app/models/spree/variant/price_selector.rb +16 -3
  27. data/app/models/spree/variant.rb +27 -17
  28. data/config/locales/en.yml +2 -0
  29. data/db/migrate/20210312061050_change_column_null_on_prices.rb +7 -0
  30. data/lib/generators/solidus/install/install_generator.rb +1 -1
  31. data/lib/generators/solidus/install/templates/config/initializers/spree.rb.tt +3 -1
  32. data/lib/generators/solidus/update/templates/config/initializers/new_solidus_defaults.rb.tt +30 -0
  33. data/lib/generators/solidus/update/update_generator.rb +112 -0
  34. data/lib/generators/spree/dummy/templates/rails/application.rb.tt +0 -1
  35. data/lib/generators/spree/dummy/templates/rails/database.yml +78 -35
  36. data/lib/spree/app_configuration.rb +62 -0
  37. data/lib/spree/core/engine.rb +10 -11
  38. data/lib/spree/core/product_filters.rb +1 -1
  39. data/lib/spree/core/search/base.rb +1 -1
  40. data/lib/spree/core/state_machines/order.rb +1 -1
  41. data/lib/spree/core/validators/email.rb +1 -1
  42. data/lib/spree/core/version.rb +5 -1
  43. data/lib/spree/core/versioned_value.rb +75 -0
  44. data/lib/spree/core.rb +28 -0
  45. data/lib/spree/permitted_attributes.rb +8 -2
  46. data/lib/spree/preferences/configuration.rb +62 -0
  47. data/lib/spree/preferences/preferable.rb +8 -0
  48. data/lib/spree/preferences/preferable_class_methods.rb +37 -4
  49. data/lib/spree/preferences/preference_differentiator.rb +28 -0
  50. data/lib/spree/testing_support/dummy_app/database.yml +42 -22
  51. data/lib/spree/testing_support/dummy_app.rb +33 -17
  52. data/lib/tasks/solidus/delete_prices_with_nil_amount.rake +8 -0
  53. data/solidus_core.gemspec +6 -1
  54. metadata +15 -6
  55. data/app/models/spree/tax/shipping_rate_taxer.rb +0 -24
  56. data/lib/tasks/upgrade.rake +0 -15
data/lib/spree/core.rb CHANGED
@@ -37,6 +37,16 @@ module Spree
37
37
  end
38
38
  end
39
39
 
40
+ # Load the same version defaults for all available Solidus components
41
+ #
42
+ # @see Spree::Preferences::Configuration#load_defaults
43
+ def self.load_defaults(version)
44
+ Spree::Config.load_defaults(version)
45
+ Spree::Frontend::Config.load_defaults(version) if defined?(Spree::Frontend::Config)
46
+ Spree::Backend::Config.load_defaults(version) if defined?(Spree::Backend::Config)
47
+ Spree::Api::Config.load_defaults(version) if defined?(Spree::Api::Config)
48
+ end
49
+
40
50
  # Used to configure Spree.
41
51
  #
42
52
  # Example:
@@ -52,6 +62,24 @@ module Spree
52
62
  end
53
63
 
54
64
  module Core
65
+ # @api private
66
+ def self.has_install_generator_been_run?(rails_paths: Rails.application.paths, initializer_name: 'spree.rb', dummy_app_name: 'DummyApp::Application')
67
+ does_spree_initializer_exist?(rails_paths, initializer_name) ||
68
+ running_solidus_test_suite_with_dummy_app?(dummy_app_name)
69
+ end
70
+
71
+ def self.running_solidus_test_suite_with_dummy_app?(dummy_app_name)
72
+ Rails.env.test? && Rails.application.class.name == dummy_app_name
73
+ end
74
+ private_class_method :running_solidus_test_suite_with_dummy_app?
75
+
76
+ def self.does_spree_initializer_exist?(rails_paths, initializer_name)
77
+ rails_paths['config/initializers'].any? do |path|
78
+ File.exist?(Pathname.new(path).join(initializer_name))
79
+ end
80
+ end
81
+ private_class_method :does_spree_initializer_exist?
82
+
55
83
  class GatewayError < RuntimeError; end
56
84
  end
57
85
  end
@@ -51,7 +51,13 @@ module Spree
51
51
  :month, :year, :expiry, :first_name, :last_name, :name
52
52
  ]
53
53
 
54
- @@customer_return_attributes = [:stock_location_id, return_items_attributes: [:id, :inventory_unit_id, :return_authorization_id, :returned, :amount, :reception_status_event, :acceptance_status, :exchange_variant_id, :resellable]]
54
+ @@customer_return_attributes = [
55
+ :stock_location_id, return_items_attributes: [
56
+ :id, :inventory_unit_id, :return_authorization_id, :returned, :amount,
57
+ :reception_status_event, :acceptance_status, :exchange_variant_id,
58
+ :resellable, :return_reason_id
59
+ ]
60
+ ]
55
61
 
56
62
  @@image_attributes = [:alt, :attachment, :position, :viewable_type, :viewable_id]
57
63
 
@@ -68,7 +74,7 @@ module Spree
68
74
  @@product_properties_attributes = [:property_name, :value, :position]
69
75
 
70
76
  @@product_attributes = [
71
- :name, :description, :available_on, :discontinue_on, :permalink, :meta_description,
77
+ :name, :description, :available_on, :discontinue_on, :meta_description,
72
78
  :meta_keywords, :price, :sku, :deleted_at,
73
79
  :option_values_hash, :weight, :height, :width, :depth,
74
80
  :shipping_category_id, :tax_category_id,
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'spree/core/versioned_value'
3
4
  require 'spree/preferences/preferable'
4
5
 
5
6
  module Spree::Preferences
@@ -29,6 +30,44 @@ module Spree::Preferences
29
30
  class Configuration
30
31
  include Spree::Preferences::Preferable
31
32
 
33
+ # @!attribute [r] loaded_defaults
34
+ # @return [String]
35
+ # Some configuration defaults can be added or changed when a new Solidus
36
+ # version is released. Setting this to an older Solidus version allows keeping
37
+ # backward compatibility until the application code is updated to the new
38
+ # defaults. Set via {#load_defaults}
39
+ attr_reader :loaded_defaults
40
+
41
+ attr_reader :load_defaults_called
42
+
43
+ def initialize
44
+ @loaded_defaults = Spree.solidus_version
45
+ @load_defaults_called = false
46
+ end
47
+
48
+ # @param [String] Solidus version from which take defaults when not
49
+ # overriden.
50
+ # @see #load_defaults
51
+ def load_defaults(version)
52
+ @loaded_defaults = version
53
+ @load_defaults_called = true
54
+ reset
55
+ end
56
+
57
+ def check_load_defaults_called(instance_constant_name = nil)
58
+ return if load_defaults_called || !Spree::Core.has_install_generator_been_run?
59
+
60
+ target_name = instance_constant_name || "#{self.class.name}.new"
61
+ Spree::Deprecation.warn <<~MSG
62
+ It's recommended that you explicitly load the default configuration for
63
+ your current Solidus version. You can do it by adding the following call
64
+ to your Solidus initializer within the #{target_name} block:
65
+
66
+ config.load_defaults('#{Spree.solidus_version}')
67
+
68
+ MSG
69
+ end
70
+
32
71
  # @yield [config] Yields this configuration object to a block
33
72
  def configure
34
73
  yield(self)
@@ -79,6 +118,23 @@ module Spree::Preferences
79
118
  end
80
119
  end
81
120
 
121
+ # Generates a different preference default depending on {#version_defaults}
122
+ #
123
+ # This method is meant to be used in the `default:` keyword argument for
124
+ # {.preference}. For instance, in the example, `foo`'s default was `true`
125
+ # until version 3.0.0.alpha, when it became `false`:
126
+ #
127
+ # @example
128
+ # preference :foo, :boolean, default: by_version(true, "3.0.0.alpha" => false)
129
+ #
130
+ # @see #loaded_defaults
131
+ # @see Spree::Core::VersionedValue
132
+ def self.by_version(*args)
133
+ proc do |loaded_defaults|
134
+ Spree::Core::VersionedValue.new(*args).call(loaded_defaults)
135
+ end
136
+ end
137
+
82
138
  def self.preference(name, type, options = {})
83
139
  super
84
140
  alias_method name.to_s, "preferred_#{name}"
@@ -103,5 +159,11 @@ module Spree::Preferences
103
159
  class_name
104
160
  end
105
161
  end
162
+
163
+ private
164
+
165
+ def context_for_default
166
+ [loaded_defaults]
167
+ end
106
168
  end
107
169
  end
@@ -11,6 +11,10 @@ module Spree
11
11
  # A class including Preferable must implement #preferences which should return
12
12
  # an object responding to .fetch(key), []=(key, val), and .delete(key).
13
13
  #
14
+ # It may also define a `#context_for_default` method. It should return an
15
+ # array with the arguments to be provided to a proc used as the `default:`
16
+ # keyword for a preference.
17
+ #
14
18
  # The generated writer method performs typecasting before assignment into the
15
19
  # preferences object.
16
20
  #
@@ -176,6 +180,10 @@ module Spree
176
180
  value
177
181
  end
178
182
  end
183
+
184
+ def context_for_default
185
+ [].freeze
186
+ end
179
187
  end
180
188
  end
181
189
  end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'spree/deprecation'
3
4
  require 'spree/encryptor'
4
5
 
5
6
  module Spree::Preferences
@@ -26,8 +27,38 @@ module Spree::Preferences
26
27
  options[:default] = preference_encryptor.encrypt(options[:default])
27
28
  end
28
29
 
29
- default = options[:default]
30
- default = ->{ options[:default] } unless default.is_a?(Proc)
30
+ default = begin
31
+ given = options[:default]
32
+ if ancestors.include?(Spree::Preferences::Configuration) &&
33
+ given.is_a?(Proc) &&
34
+ given.lambda? &&
35
+ given.arity.zero?
36
+ Spree::Deprecation.warn <<~MSG
37
+ The arity of a proc given as the default for a preference
38
+ has changed from 0 to 1 on Solidus 3.1. The Solidus
39
+ version for the loaded preference defaults is given as the
40
+ proc's argument from this point on.
41
+
42
+ If you don't need to return a different default value
43
+ depending on the loaded Solidus version, you can change
44
+ the proc so that it doesn't have lambda semantics (lambdas
45
+ raise when extra arguments are supplied, while raw procs
46
+ don't). E.g.:
47
+
48
+ preference :foo, :string, default: proc { true }
49
+
50
+ If you want to branch on the provided Solidus version, you can do like the following:
51
+
52
+ preference :foo, :string, default: by_version(true, "3.2.0" => false)
53
+
54
+ MSG
55
+ ->(_default_context) { given.call }
56
+ elsif given.is_a?(Proc)
57
+ given
58
+ else
59
+ proc { given }
60
+ end
61
+ end
31
62
 
32
63
  # The defined preferences on a class are all those defined directly on
33
64
  # that class as well as those defined on ancestors.
@@ -44,7 +75,7 @@ module Spree::Preferences
44
75
  # is a pending preference before going to default
45
76
  define_method preference_getter_method(name) do
46
77
  value = preferences.fetch(name) do
47
- default.call
78
+ default.call(*context_for_default)
48
79
  end
49
80
  value = preference_encryptor.decrypt(value) if preference_encryptor.present?
50
81
  value
@@ -60,7 +91,9 @@ module Spree::Preferences
60
91
  preferences_will_change! if respond_to?(:preferences_will_change!)
61
92
  end
62
93
 
63
- define_method preference_default_getter_method(name), &default
94
+ define_method preference_default_getter_method(name) do
95
+ default.call(*context_for_default)
96
+ end
64
97
 
65
98
  define_method preference_type_getter_method(name) do
66
99
  type
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree
4
+ module Preferences
5
+ class PreferenceDifferentiator
6
+ attr_reader :config_class
7
+
8
+ def initialize(config_class)
9
+ @config_class = config_class
10
+ end
11
+
12
+ def call(from:, to:)
13
+ preferences_from = config_class.new.load_defaults(from)
14
+ preferences_to = config_class.new.load_defaults(to)
15
+ preferences_from.reduce({}) do |changes, (pref_key, value_from)|
16
+ value_to = preferences_to[pref_key]
17
+ if value_from == value_to
18
+ changes
19
+ else
20
+ changes.merge(
21
+ pref_key => { from: value_from, to: value_to }
22
+ )
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -1,34 +1,54 @@
1
- <%
2
- database_prefix = ENV['LIB_NAME'].presence || "solidus"
3
- %>
4
- <% case ENV['DB']
1
+ <% db = case ENV['DB']
2
+ when 'mysql'
3
+ 'mysql'
4
+ when 'postgres', 'postgresql'
5
+ 'postgres'
6
+ when 'sqlite', '', nil
7
+ 'sqlite'
8
+ else
9
+ raise "Invalid DB specified: #{ENV['DB']}"
10
+ end %>
11
+ <% db_host = case db
12
+ when 'mysql'
13
+ ENV['DB_MYSQL_HOST'] || ENV['DB_HOST']
14
+ when 'postgres'
15
+ ENV['DB_POSTGRES_HOST'] || ENV['DB_HOST']
16
+ else
17
+ ENV['DB_HOST']
18
+ end %>
19
+ <% db_prefix = ENV['LIB_NAME'].presence || "solidus" %>
20
+ <% db_username = ENV['DB_USERNAME'] %>
21
+ <% db_password = ENV['DB_PASSWORD'] %>
22
+ <% case db
5
23
  when 'mysql' %>
6
24
  test:
7
25
  adapter: mysql2
8
- <% if ENV['CI'] %>
9
- username: root
10
- password:
26
+ database: <%= db_prefix %>_test
27
+ <% unless db_username.blank? %>
28
+ username: <%= db_username %>
11
29
  <% end %>
12
- database: <%= database_prefix %>_test
13
- encoding: utf8
14
- <% unless ENV['DB_HOST'].blank? %>
15
- host: <%= ENV['DB_HOST'] %>
30
+ <% unless db_password.blank? %>
31
+ password: <%= db_password %>
32
+ <% end %>
33
+ <% unless db_host.blank? %>
34
+ host: <%= db_host %>
16
35
  <% end %>
17
- <% when 'postgres', 'postgresql' %>
18
- <% db_host = ENV['DB_HOST'] %>
36
+ encoding: utf8
37
+ <% when 'postgres' %>
19
38
  test:
20
39
  adapter: postgresql
21
- database: <%= database_prefix %>_test
22
- username: postgres
23
- min_messages: warning
24
- <% unless db_host.blank? %>
40
+ database: <%= db_prefix %>_test
41
+ username: <%= db_username.presence || "postgres" %>
42
+ <% unless db_password.blank? %>
43
+ password: <%= db_password %>
44
+ <% end %>
45
+ <% unless db_host.blank? %>
25
46
  host: <%= db_host %>
26
- <% end %>
27
- <% when 'sqlite', '', nil %>
47
+ <% end %>
48
+ min_messages: warning
49
+ <% when 'sqlite' %>
28
50
  test:
29
51
  adapter: sqlite3
30
- database: db/<%= database_prefix %>_test.sqlite3
52
+ database: db/<%= db_prefix %>_test.sqlite3
31
53
  timeout: 10000
32
- <% else %>
33
- <% raise "Invalid DB specified: #{ENV['DB']}" %>
34
54
  <% end %>
@@ -46,34 +46,53 @@ module DummyApp
46
46
  end
47
47
 
48
48
  class Application < ::Rails::Application
49
- config.eager_load = false
49
+ config.load_defaults("#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}")
50
+ # Make the test environment more production-like:
50
51
  config.cache_classes = true
51
- config.cache_store = :memory_store
52
- config.serve_static_assets = true
53
- config.public_file_server.headers = { 'Cache-Control' => 'public, max-age=3600' }
54
- config.whiny_nils = true
55
- config.consider_all_requests_local = true
56
52
  config.action_controller.allow_forgery_protection = false
57
53
  config.action_controller.default_protect_from_forgery = false
54
+ config.action_mailer.perform_caching = false
55
+ config.i18n.fallbacks = true
56
+
57
+ # In the test environment, we use the `caching: true` RSpec metadata to
58
+ # enable caching on select specs. See
59
+ # core/lib/spree/testing_support/caching.rb. See also
60
+ # https://github.com/solidusio/solidus/issues/4110
58
61
  config.action_controller.perform_caching = false
62
+
63
+ # Make debugging easier:
64
+ config.consider_all_requests_local = true
59
65
  config.action_dispatch.show_exceptions = false
60
66
  config.active_support.deprecation = :stderr
67
+ config.log_level = :debug
68
+
69
+ # Improve test suite performance:
70
+ config.eager_load = false
71
+ config.public_file_server.headers = { 'Cache-Control' => 'public, max-age=3600' }
72
+ config.cache_store = :memory_store
73
+
74
+ # We don't use a web server, so we let Rails serve assets.
75
+ config.public_file_server.enabled = true
76
+
77
+ # We don't want to send email in the test environment.
61
78
  config.action_mailer.delivery_method = :test
62
- config.active_support.deprecation = :stderr
79
+
80
+ # No need to use credentials file in a test environment.
63
81
  config.secret_key_base = 'SECRET_TOKEN'
64
82
 
65
- config.action_mailer.delivery_job = "ActionMailer::MailDeliveryJob" if RAILS_6_OR_ABOVE
83
+ # Set the preview path within the dummy app:
66
84
  config.action_mailer.preview_path = File.expand_path('dummy_app/mailer_previews', __dir__)
67
- config.active_record.sqlite3.represent_boolean_as_integer = true unless RAILS_6_OR_ABOVE
68
85
 
69
- config.storage_path = Rails.root.join('tmp', 'storage')
86
+ config.active_record.sqlite3.represent_boolean_as_integer = true unless RAILS_6_OR_ABOVE
87
+ config.active_record.dump_schema_after_migration = false
70
88
 
89
+ # Configure active storage to use storage within tmp folder
71
90
  unless ENV['DISABLE_ACTIVE_STORAGE']
72
91
  initializer 'solidus.active_storage' do
73
92
  config.active_storage.service_configurations = {
74
93
  test: {
75
94
  service: 'Disk',
76
- root: config.storage_path
95
+ root: Rails.root.join('tmp', 'storage')
77
96
  }
78
97
  }
79
98
  config.active_storage.service = :test
@@ -94,12 +113,8 @@ module DummyApp
94
113
  config.paths['db/migrate'] = migration_dirs
95
114
  ActiveRecord::Migrator.migrations_paths = migration_dirs
96
115
 
97
- config.action_controller.include_all_helpers = false
98
-
99
- if config.respond_to?(:assets)
100
- config.assets.paths << File.expand_path('dummy_app/assets/javascripts', __dir__)
101
- config.assets.paths << File.expand_path('dummy_app/assets/stylesheets', __dir__)
102
- end
116
+ config.assets.paths << File.expand_path('dummy_app/assets/javascripts', __dir__)
117
+ config.assets.paths << File.expand_path('dummy_app/assets/stylesheets', __dir__)
103
118
 
104
119
  config.paths["config/database"] = File.expand_path('dummy_app/database.yml', __dir__)
105
120
  config.paths['app/views'] = File.expand_path('dummy_app/views', __dir__)
@@ -116,6 +131,7 @@ ActiveSupport.on_load(:action_controller) do
116
131
  end
117
132
 
118
133
  Spree.user_class = 'Spree::LegacyUser'
134
+ Spree.load_defaults(Spree.solidus_version)
119
135
  Spree.config do |config|
120
136
  config.mails_from = "store@example.com"
121
137
 
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ namespace :solidus do
4
+ desc "Delete Spree::Price records which amount field is NULL"
5
+ task delete_prices_with_nil_amount: :environment do
6
+ Spree::Price.where(amount: nil).delete_all
7
+ end
8
+ end
data/solidus_core.gemspec CHANGED
@@ -55,7 +55,12 @@ $ bin/rails g solidus:install
55
55
  If you are updating Solidus from an older version, please run
56
56
  the following commands to complete the update:
57
57
 
58
- $ bin/rails solidus:upgrade
58
+ $ bin/rails g solidus:update
59
+
60
+ Please, don't forget to look at the CHANGELOG to see what has changed and
61
+ whether you need to perform other tasks.
62
+
63
+ https://github.com/solidusio/solidus/blob/master/CHANGELOG.md
59
64
 
60
65
  Please report any issues at:
61
66
  - https://github.com/solidusio/solidus/issues
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solidus_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 3.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Solidus Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-10 00:00:00.000000000 Z
11
+ date: 2021-09-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionmailer
@@ -609,7 +609,6 @@ files:
609
609
  - app/models/spree/tax/item_tax.rb
610
610
  - app/models/spree/tax/order_adjuster.rb
611
611
  - app/models/spree/tax/order_tax.rb
612
- - app/models/spree/tax/shipping_rate_taxer.rb
613
612
  - app/models/spree/tax/tax_helpers.rb
614
613
  - app/models/spree/tax/tax_location.rb
615
614
  - app/models/spree/tax_calculator/default.rb
@@ -705,6 +704,7 @@ files:
705
704
  - db/migrate/20200530111458_add_bcc_email_to_spree_stores.rb
706
705
  - db/migrate/20201008213609_add_discontinue_on_to_spree_products.rb
707
706
  - db/migrate/20210122110141_add_name_to_spree_addresses.rb
707
+ - db/migrate/20210312061050_change_column_null_on_prices.rb
708
708
  - db/seeds.rb
709
709
  - lib/generators/solidus/install/install_generator.rb
710
710
  - lib/generators/solidus/install/templates/config/initializers/spree.rb.tt
@@ -712,6 +712,8 @@ files:
712
712
  - lib/generators/solidus/install/templates/vendor/assets/javascripts/spree/frontend/all.js
713
713
  - lib/generators/solidus/install/templates/vendor/assets/stylesheets/spree/backend/all.css
714
714
  - lib/generators/solidus/install/templates/vendor/assets/stylesheets/spree/frontend/all.css
715
+ - lib/generators/solidus/update/templates/config/initializers/new_solidus_defaults.rb.tt
716
+ - lib/generators/solidus/update/update_generator.rb
715
717
  - lib/generators/spree/custom_user/custom_user_generator.rb
716
718
  - lib/generators/spree/custom_user/templates/authentication_helpers.rb.tt
717
719
  - lib/generators/spree/custom_user/templates/migration.rb.tt
@@ -765,6 +767,7 @@ files:
765
767
  - lib/spree/core/stock_configuration.rb
766
768
  - lib/spree/core/validators/email.rb
767
769
  - lib/spree/core/version.rb
770
+ - lib/spree/core/versioned_value.rb
768
771
  - lib/spree/deprecation.rb
769
772
  - lib/spree/encryptor.rb
770
773
  - lib/spree/event.rb
@@ -804,6 +807,7 @@ files:
804
807
  - lib/spree/preferences/persistable.rb
805
808
  - lib/spree/preferences/preferable.rb
806
809
  - lib/spree/preferences/preferable_class_methods.rb
810
+ - lib/spree/preferences/preference_differentiator.rb
807
811
  - lib/spree/preferences/scoped_store.rb
808
812
  - lib/spree/preferences/static_model_preferences.rb
809
813
  - lib/spree/preferences/statically_configurable.rb
@@ -903,7 +907,7 @@ files:
903
907
  - lib/spree/testing_support/url_helpers.rb
904
908
  - lib/spree/user_class_handle.rb
905
909
  - lib/spree_core.rb
906
- - lib/tasks/upgrade.rake
910
+ - lib/tasks/solidus/delete_prices_with_nil_amount.rake
907
911
  - solidus_core.gemspec
908
912
  - vendor/assets/javascripts/jquery.payment.js
909
913
  - vendor/assets/javascripts/jsuri.js
@@ -924,7 +928,12 @@ post_install_message: |
924
928
  If you are updating Solidus from an older version, please run
925
929
  the following commands to complete the update:
926
930
 
927
- $ bin/rails solidus:upgrade
931
+ $ bin/rails g solidus:update
932
+
933
+ Please, don't forget to look at the CHANGELOG to see what has changed and
934
+ whether you need to perform other tasks.
935
+
936
+ https://github.com/solidusio/solidus/blob/master/CHANGELOG.md
928
937
 
929
938
  Please report any issues at:
930
939
  - https://github.com/solidusio/solidus/issues
@@ -944,7 +953,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
944
953
  - !ruby/object:Gem::Version
945
954
  version: 1.8.23
946
955
  requirements: []
947
- rubygems_version: 3.1.4
956
+ rubygems_version: 3.1.6
948
957
  signing_key:
949
958
  specification_version: 4
950
959
  summary: Essential models, mailers, and classes for the Solidus e-commerce project.
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Spree
4
- module Tax
5
- # Used to build shipping rate taxes
6
- class ShippingRateTaxer
7
- # Build shipping rate taxes for a shipping rate
8
- # Modifies the passed-in shipping rate with associated shipping rate taxes.
9
- # @param [Spree::ShippingRate] shipping_rate The shipping rate to add taxes to.
10
- # This parameter will be modified.
11
- # @return [Spree::ShippingRate] The shipping rate with associated tax objects
12
- def tax(shipping_rate)
13
- taxes = Spree::Config.shipping_rate_tax_calculator_class.new(shipping_rate.order).calculate(shipping_rate)
14
- taxes.each do |tax|
15
- shipping_rate.taxes.build(
16
- amount: tax.amount,
17
- tax_rate: tax.tax_rate
18
- )
19
- end
20
- shipping_rate
21
- end
22
- end
23
- end
24
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- namespace :solidus do
4
- namespace :upgrade do
5
- task three_point_zero: [
6
- 'railties:install:migrations',
7
- 'db:migrate'
8
- ] do
9
- puts "Your Solidus install is ready for Solidus 3.0"
10
- end
11
- end
12
-
13
- desc "Upgrade to the current Solidus version"
14
- task upgrade: 'upgrade:three_point_zero'
15
- end