From 45e4d86631efbbfb81eb4f4dcf71a67456160880 Mon Sep 17 00:00:00 2001 From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com> Date: Wed, 6 Jan 2021 17:16:16 +0000 Subject: [PATCH 1/3] Merge money_decorator.rb with money.rb The #rounded method was left out, as it appears to be dead code. --- app/helpers/spree/reports_helper.rb | 2 +- lib/spree/money.rb | 11 ++++++++++- lib/spree/money_decorator.rb | 25 ------------------------- 3 files changed, 11 insertions(+), 27 deletions(-) delete mode 100644 lib/spree/money_decorator.rb diff --git a/app/helpers/spree/reports_helper.rb b/app/helpers/spree/reports_helper.rb index 3f299c8250..eb1c60cd3c 100644 --- a/app/helpers/spree/reports_helper.rb +++ b/app/helpers/spree/reports_helper.rb @@ -1,4 +1,4 @@ -require 'spree/money_decorator' +require 'spree/money' module Spree module ReportsHelper diff --git a/lib/spree/money.rb b/lib/spree/money.rb index 413c2f0e8c..5994db42b5 100644 --- a/lib/spree/money.rb +++ b/lib/spree/money.rb @@ -21,6 +21,11 @@ module Spree @options[:symbol_position] = @options[:symbol_position].to_sym end + # Return the currency symbol (on its own) for the current default currency + def self.currency_symbol + ::Money.new(0, Spree::Config[:currency]).symbol + end + def to_s @money.format(@options) end @@ -30,11 +35,15 @@ module Spree if options[:html] # 1) prevent blank, breaking spaces # 2) prevent escaping of HTML character entities - output = output.gsub(" ", " ").html_safe + output = output.sub(" ", " ").html_safe end output end + def format(options = {}) + @money.format(@options.merge!(options)) + end + def ==(other) @money == other.money end diff --git a/lib/spree/money_decorator.rb b/lib/spree/money_decorator.rb deleted file mode 100644 index 10ecce8034..0000000000 --- a/lib/spree/money_decorator.rb +++ /dev/null @@ -1,25 +0,0 @@ -Spree::Money.class_eval do - # return the currency symbol (on its own) for the current default currency - def self.currency_symbol - Money.new(0, Spree::Config[:currency]).symbol - end - - def rounded - @options[:no_cents] = true if @money.dollars % 1 == 0 - to_s - end - - def to_html(options = { html: true }) - output = @money.format(@options.merge(options)) - if options[:html] - # 1) prevent blank, breaking spaces - # 2) prevent escaping of HTML character entities - output = output.sub(" ", " ").html_safe - end - output - end - - def format(options = {}) - @money.format(@options.merge!(options)) - end -end From 3387bf58216741a2325c834510e4584577b73062 Mon Sep 17 00:00:00 2001 From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com> Date: Wed, 6 Jan 2021 17:22:06 +0000 Subject: [PATCH 2/3] Switch from direct dependency on `money` gem to `monetize` gem This change is actually made around Spree 2.0, but we missed it. The `monetize` gem also installs the `money` gem. --- Gemfile | 2 +- Gemfile.lock | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index a85b6c93aa..b4225b8a7a 100644 --- a/Gemfile +++ b/Gemfile @@ -27,7 +27,7 @@ gem 'cancan', '~> 1.6.10' gem 'ffaker' gem 'highline', '2.0.3' # Necessary for the install generator gem 'json' -gem 'money', '< 6.1.0' +gem 'monetize', '~> 1.1' gem 'paranoia', '~> 2.4' gem 'ransack', '~> 1.8.10' gem 'state_machines-activerecord' diff --git a/Gemfile.lock b/Gemfile.lock index 08abe4d639..d642f28980 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -448,9 +448,10 @@ GEM mini_racer (0.2.15) libv8 (> 7.3) minitest (5.14.3) - money (5.0.0) - i18n (~> 0.4) - json + monetize (1.9.4) + money (~> 6.12) + money (6.13.8) + i18n (>= 0.6.4, <= 2) msgpack (1.3.3) multi_json (1.15.0) multi_xml (0.6.0) @@ -781,7 +782,7 @@ DEPENDENCIES knapsack letter_opener (>= 1.4.1) mini_racer (= 0.2.15) - money (< 6.1.0) + monetize (~> 1.1) oauth2 (~> 1.4.4) ofn-qz! oj From cc88611b15f2581e01c030422b2a8142dc5e6eaa Mon Sep 17 00:00:00 2001 From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com> Date: Wed, 6 Jan 2021 19:18:58 +0000 Subject: [PATCH 3/3] Update Spree::Money to use Monetize#parse instead of Money#parse This method was removed from the money gem without replacement. It's now provided by the monetize gem. --- lib/spree/money.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spree/money.rb b/lib/spree/money.rb index 5994db42b5..8ff14ce203 100644 --- a/lib/spree/money.rb +++ b/lib/spree/money.rb @@ -9,7 +9,7 @@ module Spree delegate :cents, to: :money def initialize(amount, options = {}) - @money = ::Money.parse([amount, (options[:currency] || Spree::Config[:currency])].join) + @money = ::Monetize.parse([amount, (options[:currency] || Spree::Config[:currency])].join) @options = {} @options[:with_currency] = Spree::Config[:display_currency] @options[:symbol_position] = Spree::Config[:currency_symbol_position].to_sym