solidus_core 3.0.2 → 3.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (54) 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 +11 -6
  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 -0
  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/shipping_rate_tax.rb +1 -1
  18. data/app/models/spree/stock/availability.rb +11 -3
  19. data/app/models/spree/stock/simple_coordinator.rb +0 -10
  20. data/app/models/spree/stock_location.rb +1 -1
  21. data/app/models/spree/store_credit.rb +6 -1
  22. data/app/models/spree/tax_calculator/shipping_rate.rb +1 -1
  23. data/app/models/spree/taxon/active_storage_attachment.rb +2 -2
  24. data/app/models/spree/taxon/paperclip_attachment.rb +3 -3
  25. data/app/models/spree/variant/price_selector.rb +16 -3
  26. data/app/models/spree/variant.rb +26 -16
  27. data/config/locales/en.yml +2 -0
  28. data/db/migrate/20210312061050_change_column_null_on_prices.rb +7 -0
  29. data/lib/generators/solidus/install/install_generator.rb +1 -1
  30. data/lib/generators/solidus/install/templates/config/initializers/spree.rb.tt +3 -1
  31. data/lib/generators/solidus/update/templates/config/initializers/new_solidus_defaults.rb.tt +30 -0
  32. data/lib/generators/solidus/update/update_generator.rb +112 -0
  33. data/lib/generators/spree/dummy/templates/rails/application.rb.tt +0 -1
  34. data/lib/generators/spree/dummy/templates/rails/database.yml +78 -35
  35. data/lib/spree/app_configuration.rb +62 -0
  36. data/lib/spree/core/engine.rb +16 -9
  37. data/lib/spree/core/product_filters.rb +1 -1
  38. data/lib/spree/core/search/base.rb +1 -1
  39. data/lib/spree/core/state_machines/order.rb +1 -1
  40. data/lib/spree/core/version.rb +5 -1
  41. data/lib/spree/core/versioned_value.rb +75 -0
  42. data/lib/spree/core.rb +28 -0
  43. data/lib/spree/permitted_attributes.rb +1 -1
  44. data/lib/spree/preferences/configuration.rb +62 -0
  45. data/lib/spree/preferences/preferable.rb +8 -0
  46. data/lib/spree/preferences/preferable_class_methods.rb +37 -4
  47. data/lib/spree/preferences/preference_differentiator.rb +28 -0
  48. data/lib/spree/testing_support/dummy_app/database.yml +42 -22
  49. data/lib/spree/testing_support/dummy_app.rb +33 -18
  50. data/lib/tasks/solidus/delete_prices_with_nil_amount.rake +8 -0
  51. data/solidus_core.gemspec +6 -1
  52. metadata +17 -8
  53. data/app/models/spree/tax/shipping_rate_taxer.rb +0 -24
  54. 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
@@ -74,7 +74,7 @@ module Spree
74
74
  @@product_properties_attributes = [:property_name, :value, :position]
75
75
 
76
76
  @@product_attributes = [
77
- :name, :description, :available_on, :discontinue_on, :permalink, :meta_description,
77
+ :name, :description, :available_on, :discontinue_on, :meta_description,
78
78
  :meta_keywords, :price, :sku, :deleted_at,
79
79
  :option_values_hash, :weight, :height, :width, :depth,
80
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,35 +46,53 @@ module DummyApp
46
46
  end
47
47
 
48
48
  class Application < ::Rails::Application
49
- config.has_many_inverse = true
50
- config.eager_load = false
49
+ config.load_defaults("#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}")
50
+ # Make the test environment more production-like:
51
51
  config.cache_classes = true
52
- config.cache_store = :memory_store
53
- config.serve_static_assets = true
54
- config.public_file_server.headers = { 'Cache-Control' => 'public, max-age=3600' }
55
- config.whiny_nils = true
56
- config.consider_all_requests_local = true
57
52
  config.action_controller.allow_forgery_protection = false
58
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
59
61
  config.action_controller.perform_caching = false
62
+
63
+ # Make debugging easier:
64
+ config.consider_all_requests_local = true
60
65
  config.action_dispatch.show_exceptions = false
61
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.
62
78
  config.action_mailer.delivery_method = :test
63
- config.active_support.deprecation = :stderr
79
+
80
+ # No need to use credentials file in a test environment.
64
81
  config.secret_key_base = 'SECRET_TOKEN'
65
82
 
66
- config.action_mailer.delivery_job = "ActionMailer::MailDeliveryJob" if RAILS_6_OR_ABOVE
83
+ # Set the preview path within the dummy app:
67
84
  config.action_mailer.preview_path = File.expand_path('dummy_app/mailer_previews', __dir__)
68
- config.active_record.sqlite3.represent_boolean_as_integer = true unless RAILS_6_OR_ABOVE
69
85
 
70
- 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
71
88
 
89
+ # Configure active storage to use storage within tmp folder
72
90
  unless ENV['DISABLE_ACTIVE_STORAGE']
73
91
  initializer 'solidus.active_storage' do
74
92
  config.active_storage.service_configurations = {
75
93
  test: {
76
94
  service: 'Disk',
77
- root: config.storage_path
95
+ root: Rails.root.join('tmp', 'storage')
78
96
  }
79
97
  }
80
98
  config.active_storage.service = :test
@@ -95,12 +113,8 @@ module DummyApp
95
113
  config.paths['db/migrate'] = migration_dirs
96
114
  ActiveRecord::Migrator.migrations_paths = migration_dirs
97
115
 
98
- config.action_controller.include_all_helpers = false
99
-
100
- if config.respond_to?(:assets)
101
- config.assets.paths << File.expand_path('dummy_app/assets/javascripts', __dir__)
102
- config.assets.paths << File.expand_path('dummy_app/assets/stylesheets', __dir__)
103
- 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__)
104
118
 
105
119
  config.paths["config/database"] = File.expand_path('dummy_app/database.yml', __dir__)
106
120
  config.paths['app/views'] = File.expand_path('dummy_app/views', __dir__)
@@ -117,6 +131,7 @@ ActiveSupport.on_load(:action_controller) do
117
131
  end
118
132
 
119
133
  Spree.user_class = 'Spree::LegacyUser'
134
+ Spree.load_defaults(Spree.solidus_version)
120
135
  Spree.config do |config|
121
136
  config.mails_from = "store@example.com"
122
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.2
4
+ version: 3.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Solidus Team
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-10 00:00:00.000000000 Z
11
+ date: 2021-11-17 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,8 +953,8 @@ 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.2.20
948
- signing_key:
956
+ rubygems_version: 3.1.2
957
+ signing_key:
949
958
  specification_version: 4
950
959
  summary: Essential models, mailers, and classes for the Solidus e-commerce project.
951
960
  test_files: []
@@ -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