From 0a62178c5445ebae906c758eb25cf7fa05d0f4f0 Mon Sep 17 00:00:00 2001 From: Anthony Dmitriyev Date: Fri, 30 Dec 2016 11:12:20 +0000 Subject: [PATCH 1/7] Add ruby 2.4.0 as a build traget --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 8496a44d2c..fb6b3c50dd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,6 +11,7 @@ rvm: - 2.1.8 - 2.2.4 - 2.3.0 + - 2.4.0 # FIXME: failing native extensions #- ruby-head # TODO: investigate failure From 6e7d2688e31d4d04bb8bd3c728e7bbbfb7c3c65d Mon Sep 17 00:00:00 2001 From: Romain Sempe Date: Mon, 9 Jan 2017 15:06:33 +0100 Subject: [PATCH 2/7] Remove ruby 1.9.2 useless references for Travis --- .travis.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index fb6b3c50dd..07a7468c5e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -30,10 +30,6 @@ gemfile: - gemfiles/rails50.gemfile matrix: exclude: - - rvm: 1.9.2 - gemfile: gemfiles/mongoid3.gemfile - - rvm: 1.9.2 - gemfile: gemfiles/rails4.gemfile - rvm: 1.9.3 gemfile: gemfiles/rails50.gemfile - rvm: 2.0.0 From 166b6cef60ec450c2ef5d24197812de88192fa10 Mon Sep 17 00:00:00 2001 From: Romain Sempe Date: Mon, 9 Jan 2017 15:16:05 +0100 Subject: [PATCH 3/7] Configure Travis to run specs with Ruby 2.4.0 --- .travis.yml | 14 ++++++++++++++ lib/money-rails/active_record/monetizable.rb | 5 +---- lib/money-rails/mongoid/money.rb | 2 +- lib/money-rails/mongoid/two.rb | 2 +- money-rails.gemspec | 4 ++-- spec/active_record/monetizable_spec.rb | 6 +++--- spec/mongoid/five_spec.rb | 4 ++-- spec/mongoid/four_spec.rb | 4 ++-- spec/mongoid/three_spec.rb | 4 ++-- spec/mongoid/two_spec.rb | 2 +- 10 files changed, 29 insertions(+), 18 deletions(-) diff --git a/.travis.yml b/.travis.yml index 07a7468c5e..c957c9e46c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -36,6 +36,20 @@ matrix: gemfile: gemfiles/rails50.gemfile - rvm: 2.1.8 gemfile: gemfiles/rails50.gemfile + - rvm: 2.4.0 + gemfile: gemfiles/mongoid2.gemfile + - rvm: 2.4.0 + gemfile: gemfiles/mongoid3.gemfile + - rvm: 2.4.0 + gemfile: gemfiles/mongoid4.gemfile + - rvm: 2.4.0 + gemfile: gemfiles/rails3.gemfile + - rvm: 2.4.0 + gemfile: gemfiles/rails4.gemfile + - rvm: 2.4.0 + gemfile: gemfiles/rails41.gemfile + - rvm: 2.4.0 + gemfile: gemfiles/rails42.gemfile notifications: recipients: - andreas@aloop.org diff --git a/lib/money-rails/active_record/monetizable.rb b/lib/money-rails/active_record/monetizable.rb index 3735950f86..1753835763 100644 --- a/lib/money-rails/active_record/monetizable.rb +++ b/lib/money-rails/active_record/monetizable.rb @@ -232,10 +232,7 @@ def write_monetized(name, subunit_name, value, validation_enabled, instance_curr money = value.to_money(public_send("currency_for_#{name}")) rescue NoMethodError return nil - rescue ArgumentError - raise if MoneyRails.raise_error_on_money_parsing - return nil - rescue Money::Currency::UnknownCurrency + rescue Money::Currency::UnknownCurrency, Monetize::ParseError raise if MoneyRails.raise_error_on_money_parsing return nil end diff --git a/lib/money-rails/mongoid/money.rb b/lib/money-rails/mongoid/money.rb index f218cd7053..e5a23ef2fd 100644 --- a/lib/money-rails/mongoid/money.rb +++ b/lib/money-rails/mongoid/money.rb @@ -41,7 +41,7 @@ def mongoize(object) when object.respond_to?(:to_money) then begin object.to_money.mongoize - rescue ArgumentError, Money::Currency::UnknownCurrency + rescue Money::Currency::UnknownCurrency, Monetize::ParseError raise if MoneyRails.raise_error_on_money_parsing nil end diff --git a/lib/money-rails/mongoid/two.rb b/lib/money-rails/mongoid/two.rb index 0157b6b06d..dddcf62ad8 100644 --- a/lib/money-rails/mongoid/two.rb +++ b/lib/money-rails/mongoid/two.rb @@ -25,7 +25,7 @@ def serialize(object) when object.respond_to?(:to_money) begin serialize(object.to_money) - rescue ArgumentError + rescue Monetize::ParseError raise if MoneyRails.raise_error_on_money_parsing nil end diff --git a/money-rails.gemspec b/money-rails.gemspec index e7b2207b8f..fa467ef262 100644 --- a/money-rails.gemspec +++ b/money-rails.gemspec @@ -26,8 +26,8 @@ Gem::Specification.new do |s| s.require_path = "lib" - s.add_dependency "money", "~> 6.7" - s.add_dependency "monetize", "~> 1.4.0" + s.add_dependency "money", "~> 6.8.1" + s.add_dependency "monetize", "~> 1.6.0" s.add_dependency "activesupport", ">= 3.0" s.add_dependency "railties", ">= 3.0" s.add_dependency "mime-types", "< 3" if RUBY_VERSION < '2.0' # mime-types > 3 depends on mime-types-data, which doesn't support ruby 1.9 diff --git a/spec/active_record/monetizable_spec.rb b/spec/active_record/monetizable_spec.rb index 3552f465a8..b92d8e0194 100644 --- a/spec/active_record/monetizable_spec.rb +++ b/spec/active_record/monetizable_spec.rb @@ -154,7 +154,7 @@ class SubProduct < Product after { MoneyRails.raise_error_on_money_parsing = false } it "raises exception when a String value with hyphen is assigned" do - expect { product.accessor_price = "10-235" }.to raise_error ArgumentError + expect { product.accessor_price = "10-235" }.to raise_error Monetize::ParseError end it "raises an exception if it can't change currency" do @@ -935,10 +935,10 @@ class SubProduct < Product before { MoneyRails.raise_error_on_money_parsing = true } after { MoneyRails.raise_error_on_money_parsing = false } - it "raises an ArgumentError when given an invalid value" do + it "raises a Monetize::ParseError when given an invalid value" do expect { product.write_monetized :price, :price_cents, '10-50', false, nil, {} - }.to raise_error(ArgumentError) + }.to raise_error(Monetize::ParseError) end it "raises a Money::Currency::UnknownCurrency error when trying to set invalid currency" do diff --git a/spec/mongoid/five_spec.rb b/spec/mongoid/five_spec.rb index 543f32bff0..c421dd774e 100644 --- a/spec/mongoid/five_spec.rb +++ b/spec/mongoid/five_spec.rb @@ -41,11 +41,11 @@ after { MoneyRails.raise_error_on_money_parsing = false } it "raises exception if the mongoized value is a String with a hyphen" do - expect { priceable_from_string_with_hyphen }.to raise_error ArgumentError + expect { priceable_from_string_with_hyphen }.to raise_error Monetize::ParseError end it "raises exception if the mongoized value is a String with an unknown currency" do - expect { priceable_from_string_with_unknown_currency }.to raise_error ArgumentError + expect { priceable_from_string_with_unknown_currency }.to raise_error Monetize::ParseError end end diff --git a/spec/mongoid/four_spec.rb b/spec/mongoid/four_spec.rb index e628da2fcf..fb4a17e43e 100644 --- a/spec/mongoid/four_spec.rb +++ b/spec/mongoid/four_spec.rb @@ -46,11 +46,11 @@ after { MoneyRails.raise_error_on_money_parsing = false } it "raises exception if the mongoized value is a String with a hyphen" do - expect { priceable_from_string_with_hyphen }.to raise_error ArgumentError + expect { priceable_from_string_with_hyphen }.to raise_error Monetize::ParseError end it "raises exception if the mongoized value is a String with an unknown currency" do - expect { priceable_from_string_with_unknown_currency }.to raise_error ArgumentError + expect { priceable_from_string_with_unknown_currency }.to raise_error Monetize::ParseError end end diff --git a/spec/mongoid/three_spec.rb b/spec/mongoid/three_spec.rb index 4cd42809e9..48d811a9eb 100644 --- a/spec/mongoid/three_spec.rb +++ b/spec/mongoid/three_spec.rb @@ -46,11 +46,11 @@ after { MoneyRails.raise_error_on_money_parsing = false } it "raises exception if the mongoized value is a String with a hyphen" do - expect { priceable_from_string_with_hyphen }.to raise_error ArgumentError + expect { priceable_from_string_with_hyphen }.to raise_error Monetize::ParseError end it "raises exception if the mongoized value is a String with an unknown currency" do - expect { priceable_from_string_with_unknown_currency }.to raise_error ArgumentError + expect { priceable_from_string_with_unknown_currency }.to raise_error Monetize::ParseError end end diff --git a/spec/mongoid/two_spec.rb b/spec/mongoid/two_spec.rb index 499f2b8eec..50309e21b8 100644 --- a/spec/mongoid/two_spec.rb +++ b/spec/mongoid/two_spec.rb @@ -50,7 +50,7 @@ after { MoneyRails.raise_error_on_money_parsing = false } it "raises exception if the mongoized value is a String with a hyphen" do - expect { priceable_from_string_with_hyphen }.to raise_error ArgumentError + expect { priceable_from_string_with_hyphen }.to raise_error Monetize::ParseError end end From b62cfa6bb8a4d53edceda30687759e7aac2ded86 Mon Sep 17 00:00:00 2001 From: Romain Sempe Date: Mon, 9 Jan 2017 18:26:28 +0100 Subject: [PATCH 4/7] Fix nokogiri to version 1.6.8 --- gemfiles/rails42.gemfile | 1 + 1 file changed, 1 insertion(+) diff --git a/gemfiles/rails42.gemfile b/gemfiles/rails42.gemfile index d2c04f4bb0..7db814deaf 100644 --- a/gemfiles/rails42.gemfile +++ b/gemfiles/rails42.gemfile @@ -1,6 +1,7 @@ source 'https://rubygems.org' gem 'rails', '~> 4.2.0' +gem 'nokogiri', '~> 1.6.8.1' platforms :jruby do gem "activerecord-jdbc-adapter" From 9bf06e5c6b73fec74bc4522a699464218c0513b1 Mon Sep 17 00:00:00 2001 From: Romain Sempe Date: Tue, 10 Jan 2017 15:58:45 +0100 Subject: [PATCH 5/7] Run tests on Travis for Rails 4.2 and Ruby 2.4 --- .travis.yml | 2 -- gemfiles/rails42.gemfile | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index c957c9e46c..e56a0c8281 100644 --- a/.travis.yml +++ b/.travis.yml @@ -48,8 +48,6 @@ matrix: gemfile: gemfiles/rails4.gemfile - rvm: 2.4.0 gemfile: gemfiles/rails41.gemfile - - rvm: 2.4.0 - gemfile: gemfiles/rails42.gemfile notifications: recipients: - andreas@aloop.org diff --git a/gemfiles/rails42.gemfile b/gemfiles/rails42.gemfile index 7db814deaf..051f8e856e 100644 --- a/gemfiles/rails42.gemfile +++ b/gemfiles/rails42.gemfile @@ -1,6 +1,6 @@ source 'https://rubygems.org' -gem 'rails', '~> 4.2.0' +gem 'rails', github: 'rails/rails', branch: '4-2-stable' gem 'nokogiri', '~> 1.6.8.1' platforms :jruby do From a48b3d882579dd1641522d1a8b28b09d680cf989 Mon Sep 17 00:00:00 2001 From: Romain Sempe Date: Mon, 9 Jan 2017 15:58:45 +0100 Subject: [PATCH 6/7] Bump version from 1.7.0 to 1.8.0 --- CHANGELOG.md | 6 ++++++ lib/money-rails/version.rb | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 763f429a48..c169c15fba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 1.8.0 + +- Ruby 2.4 support +- Upgrade Money dependency from 6.7 to 6.8.1 +- Upgrade Monetize dependency from 1.4.0 to 1.6.0 + ## 1.7.0 - Rails 5 support diff --git a/lib/money-rails/version.rb b/lib/money-rails/version.rb index 2ebdf5d8e9..5275335a1b 100644 --- a/lib/money-rails/version.rb +++ b/lib/money-rails/version.rb @@ -1,3 +1,3 @@ module MoneyRails - VERSION = '1.7.0' + VERSION = '1.8.0' end From ef061e60a7f42b01c66b02af3f06fea29ebbfd80 Mon Sep 17 00:00:00 2001 From: Anthony Dmitriyev Date: Mon, 23 Jan 2017 22:47:55 +0000 Subject: [PATCH 7/7] Raise MoneyRails::Error intead of the original error (#471) --- lib/money-rails.rb | 1 + lib/money-rails/active_record/monetizable.rb | 6 +++--- lib/money-rails/errors.rb | 3 +++ lib/money-rails/mongoid/money.rb | 4 ++-- lib/money-rails/mongoid/two.rb | 4 ++-- spec/active_record/monetizable_spec.rb | 12 ++++++------ spec/mongoid/five_spec.rb | 4 ++-- spec/mongoid/four_spec.rb | 4 ++-- spec/mongoid/three_spec.rb | 4 ++-- spec/mongoid/two_spec.rb | 2 +- 10 files changed, 24 insertions(+), 20 deletions(-) create mode 100644 lib/money-rails/errors.rb diff --git a/lib/money-rails.rb b/lib/money-rails.rb index 0d7424c3ea..be0715a6cd 100644 --- a/lib/money-rails.rb +++ b/lib/money-rails.rb @@ -5,6 +5,7 @@ require "money-rails/money" require "money-rails/version" require 'money-rails/hooks' +require 'money-rails/errors' module MoneyRails extend Configuration diff --git a/lib/money-rails/active_record/monetizable.rb b/lib/money-rails/active_record/monetizable.rb index 1753835763..826493255f 100644 --- a/lib/money-rails/active_record/monetizable.rb +++ b/lib/money-rails/active_record/monetizable.rb @@ -5,7 +5,7 @@ module MoneyRails module ActiveRecord module Monetizable - class ReadOnlyCurrencyException < StandardError; end + class ReadOnlyCurrencyException < MoneyRails::Error; end extend ActiveSupport::Concern module ClassMethods @@ -232,8 +232,8 @@ def write_monetized(name, subunit_name, value, validation_enabled, instance_curr money = value.to_money(public_send("currency_for_#{name}")) rescue NoMethodError return nil - rescue Money::Currency::UnknownCurrency, Monetize::ParseError - raise if MoneyRails.raise_error_on_money_parsing + rescue Money::Currency::UnknownCurrency, Monetize::ParseError => e + raise MoneyRails::Error, e.message if MoneyRails.raise_error_on_money_parsing return nil end end diff --git a/lib/money-rails/errors.rb b/lib/money-rails/errors.rb new file mode 100644 index 0000000000..f973794b4e --- /dev/null +++ b/lib/money-rails/errors.rb @@ -0,0 +1,3 @@ +module MoneyRails + class Error < StandardError; end +end diff --git a/lib/money-rails/mongoid/money.rb b/lib/money-rails/mongoid/money.rb index e5a23ef2fd..3d02da899a 100644 --- a/lib/money-rails/mongoid/money.rb +++ b/lib/money-rails/mongoid/money.rb @@ -41,8 +41,8 @@ def mongoize(object) when object.respond_to?(:to_money) then begin object.to_money.mongoize - rescue Money::Currency::UnknownCurrency, Monetize::ParseError - raise if MoneyRails.raise_error_on_money_parsing + rescue Money::Currency::UnknownCurrency, Monetize::ParseError => e + raise MoneyRails::Error, e.message if MoneyRails.raise_error_on_money_parsing nil end else object diff --git a/lib/money-rails/mongoid/two.rb b/lib/money-rails/mongoid/two.rb index dddcf62ad8..cdbdc3eca8 100644 --- a/lib/money-rails/mongoid/two.rb +++ b/lib/money-rails/mongoid/two.rb @@ -25,8 +25,8 @@ def serialize(object) when object.respond_to?(:to_money) begin serialize(object.to_money) - rescue Monetize::ParseError - raise if MoneyRails.raise_error_on_money_parsing + rescue Monetize::ParseError => e + raise MoneyRails::Error, e.message if MoneyRails.raise_error_on_money_parsing nil end else nil diff --git a/spec/active_record/monetizable_spec.rb b/spec/active_record/monetizable_spec.rb index b92d8e0194..5729ebf308 100644 --- a/spec/active_record/monetizable_spec.rb +++ b/spec/active_record/monetizable_spec.rb @@ -154,7 +154,7 @@ class SubProduct < Product after { MoneyRails.raise_error_on_money_parsing = false } it "raises exception when a String value with hyphen is assigned" do - expect { product.accessor_price = "10-235" }.to raise_error Monetize::ParseError + expect { product.accessor_price = "10-235" }.to raise_error MoneyRails::Error end it "raises an exception if it can't change currency" do @@ -935,17 +935,17 @@ class SubProduct < Product before { MoneyRails.raise_error_on_money_parsing = true } after { MoneyRails.raise_error_on_money_parsing = false } - it "raises a Monetize::ParseError when given an invalid value" do + it "raises a MoneyRails::Error when given an invalid value" do expect { product.write_monetized :price, :price_cents, '10-50', false, nil, {} - }.to raise_error(Monetize::ParseError) + }.to raise_error(MoneyRails::Error) end - it "raises a Money::Currency::UnknownCurrency error when trying to set invalid currency" do + it "raises a MoneyRails::Error error when trying to set invalid currency" do allow(product).to receive(:currency_for_price).and_return('INVALID_CURRENCY') expect { product.write_monetized :price, :price_cents, 10, false, nil, {} - }.to raise_error(Money::Currency::UnknownCurrency) + }.to raise_error(MoneyRails::Error) end end @@ -956,7 +956,7 @@ class SubProduct < Product expect(product.price).to eq(old_price_value) end - it "raises a Money::Currency::UnknownCurrency error when trying to set invalid currency" do + it "raises a MoneyRails::Error error when trying to set invalid currency" do allow(product).to receive(:currency_for_price).and_return('INVALID_CURRENCY') product.write_monetized :price, :price_cents, 10, false, nil, {} diff --git a/spec/mongoid/five_spec.rb b/spec/mongoid/five_spec.rb index c421dd774e..9bf5411098 100644 --- a/spec/mongoid/five_spec.rb +++ b/spec/mongoid/five_spec.rb @@ -41,11 +41,11 @@ after { MoneyRails.raise_error_on_money_parsing = false } it "raises exception if the mongoized value is a String with a hyphen" do - expect { priceable_from_string_with_hyphen }.to raise_error Monetize::ParseError + expect { priceable_from_string_with_hyphen }.to raise_error MoneyRails::Error end it "raises exception if the mongoized value is a String with an unknown currency" do - expect { priceable_from_string_with_unknown_currency }.to raise_error Monetize::ParseError + expect { priceable_from_string_with_unknown_currency }.to raise_error MoneyRails::Error end end diff --git a/spec/mongoid/four_spec.rb b/spec/mongoid/four_spec.rb index fb4a17e43e..a6a9764aa4 100644 --- a/spec/mongoid/four_spec.rb +++ b/spec/mongoid/four_spec.rb @@ -46,11 +46,11 @@ after { MoneyRails.raise_error_on_money_parsing = false } it "raises exception if the mongoized value is a String with a hyphen" do - expect { priceable_from_string_with_hyphen }.to raise_error Monetize::ParseError + expect { priceable_from_string_with_hyphen }.to raise_error MoneyRails::Error end it "raises exception if the mongoized value is a String with an unknown currency" do - expect { priceable_from_string_with_unknown_currency }.to raise_error Monetize::ParseError + expect { priceable_from_string_with_unknown_currency }.to raise_error MoneyRails::Error end end diff --git a/spec/mongoid/three_spec.rb b/spec/mongoid/three_spec.rb index 48d811a9eb..777f4a27be 100644 --- a/spec/mongoid/three_spec.rb +++ b/spec/mongoid/three_spec.rb @@ -46,11 +46,11 @@ after { MoneyRails.raise_error_on_money_parsing = false } it "raises exception if the mongoized value is a String with a hyphen" do - expect { priceable_from_string_with_hyphen }.to raise_error Monetize::ParseError + expect { priceable_from_string_with_hyphen }.to raise_error MoneyRails::Error end it "raises exception if the mongoized value is a String with an unknown currency" do - expect { priceable_from_string_with_unknown_currency }.to raise_error Monetize::ParseError + expect { priceable_from_string_with_unknown_currency }.to raise_error MoneyRails::Error end end diff --git a/spec/mongoid/two_spec.rb b/spec/mongoid/two_spec.rb index 50309e21b8..e4efa966f6 100644 --- a/spec/mongoid/two_spec.rb +++ b/spec/mongoid/two_spec.rb @@ -50,7 +50,7 @@ after { MoneyRails.raise_error_on_money_parsing = false } it "raises exception if the mongoized value is a String with a hyphen" do - expect { priceable_from_string_with_hyphen }.to raise_error Monetize::ParseError + expect { priceable_from_string_with_hyphen }.to raise_error MoneyRails::Error end end