From c586c791e7670f992afea6f4d3512a65062f970e Mon Sep 17 00:00:00 2001 From: Masatoshi N Date: Wed, 2 Feb 2022 14:35:44 -0500 Subject: [PATCH 1/5] Define currently undefined GigoCoder::SerializationTypeMismatch error --- lib/gigo/active_record/base.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/gigo/active_record/base.rb b/lib/gigo/active_record/base.rb index d77c67c..4354fba 100644 --- a/lib/gigo/active_record/base.rb +++ b/lib/gigo/active_record/base.rb @@ -44,6 +44,9 @@ def gigo_coder_for(klass) class GigoCoder attr_reader :klass + class SerializationTypeMismatch < StandardError + end + def initialize(klass) @klass = klass @default_internal = Encoding.default_internal @@ -74,4 +77,3 @@ def dump(value) end ActiveRecord::Base.extend GIGO::ActiveRecord::Base - From f3738abba123c5043e340a59ec04e3586273e00e Mon Sep 17 00:00:00 2001 From: Masatoshi N Date: Wed, 2 Feb 2022 15:13:30 -0500 Subject: [PATCH 2/5] Fix SerializationTypeMismatch error message --- lib/gigo/active_record/base.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/gigo/active_record/base.rb b/lib/gigo/active_record/base.rb index 4354fba..28965ca 100644 --- a/lib/gigo/active_record/base.rb +++ b/lib/gigo/active_record/base.rb @@ -57,7 +57,7 @@ def load(yaml) Encoding.default_internal = GIGO.encoding value = YAML.load(GIGO.load(yaml)) unless value.is_a?(klass) - raise SerializationTypeMismatch, "Attribute was supposed to be a #{klass.to_s}, but was a #{hash.class}." + raise SerializationTypeMismatch, "Attribute was supposed to be a #{klass.to_s}, but was a #{value.class}." end value ensure From 991a5c7aae4eb8f987488f6c09fdfd10ab68dc02 Mon Sep 17 00:00:00 2001 From: Masatoshi N Date: Wed, 2 Feb 2022 15:23:47 -0500 Subject: [PATCH 3/5] Include a value in the error message for debuging ease --- lib/gigo/active_record/base.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/gigo/active_record/base.rb b/lib/gigo/active_record/base.rb index 28965ca..8b22c35 100644 --- a/lib/gigo/active_record/base.rb +++ b/lib/gigo/active_record/base.rb @@ -57,7 +57,7 @@ def load(yaml) Encoding.default_internal = GIGO.encoding value = YAML.load(GIGO.load(yaml)) unless value.is_a?(klass) - raise SerializationTypeMismatch, "Attribute was supposed to be a #{klass.to_s}, but was a #{value.class}." + raise SerializationTypeMismatch, "Attribute was supposed to be a #{klass.to_s}, but was a #{value.class}: #{value.inspect}" end value ensure @@ -67,7 +67,7 @@ def load(yaml) def dump(value) return klass.new.to_yaml if value.nil? unless value.is_a?(klass) - raise SerializationTypeMismatch, "Attribute was supposed to be a #{klass.to_s}, but was a #{value.class}." + raise SerializationTypeMismatch, "Attribute was supposed to be a #{klass.to_s}, but was a #{value.class}: #{value.inspect}" end value.to_yaml end From 5aab2ec0481935d4b8a9c0120f9c6de484cbb558 Mon Sep 17 00:00:00 2001 From: Masatoshi N Date: Wed, 2 Feb 2022 15:33:40 -0500 Subject: [PATCH 4/5] Use ActiveRecord::SerializationTypeMismatch instead of custom GigoCoder::SerializationTypeMismatch --- lib/gigo/active_record/base.rb | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/lib/gigo/active_record/base.rb b/lib/gigo/active_record/base.rb index 8b22c35..8e298a8 100644 --- a/lib/gigo/active_record/base.rb +++ b/lib/gigo/active_record/base.rb @@ -44,9 +44,6 @@ def gigo_coder_for(klass) class GigoCoder attr_reader :klass - class SerializationTypeMismatch < StandardError - end - def initialize(klass) @klass = klass @default_internal = Encoding.default_internal @@ -57,7 +54,7 @@ def load(yaml) Encoding.default_internal = GIGO.encoding value = YAML.load(GIGO.load(yaml)) unless value.is_a?(klass) - raise SerializationTypeMismatch, "Attribute was supposed to be a #{klass.to_s}, but was a #{value.class}: #{value.inspect}" + raise ::ActiveRecord::SerializationTypeMismatch, "Attribute was supposed to be a #{klass.to_s}, but was a #{value.class}: #{value.inspect}" end value ensure @@ -67,7 +64,7 @@ def load(yaml) def dump(value) return klass.new.to_yaml if value.nil? unless value.is_a?(klass) - raise SerializationTypeMismatch, "Attribute was supposed to be a #{klass.to_s}, but was a #{value.class}: #{value.inspect}" + raise ::ActiveRecord::SerializationTypeMismatch, "Attribute was supposed to be a #{klass.to_s}, but was a #{value.class}: #{value.inspect}" end value.to_yaml end From 6f0996c4e2af44b00746d486402dcf62637f32f2 Mon Sep 17 00:00:00 2001 From: Masatoshi N Date: Thu, 3 Feb 2022 09:51:33 -0500 Subject: [PATCH 5/5] Bump version to 2.0.2 --- gemfiles/activerecord42.gemfile.lock | 2 +- gemfiles/activerecord50.gemfile.lock | 2 +- gemfiles/activerecord51.gemfile.lock | 2 +- gemfiles/activerecord52.gemfile.lock | 2 +- lib/gigo/active_record/version.rb | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/gemfiles/activerecord42.gemfile.lock b/gemfiles/activerecord42.gemfile.lock index 9e29a4d..4dc6182 100644 --- a/gemfiles/activerecord42.gemfile.lock +++ b/gemfiles/activerecord42.gemfile.lock @@ -1,7 +1,7 @@ PATH remote: .. specs: - gigo-activerecord (2.0.1) + gigo-activerecord (2.0.2) activerecord (>= 4.2.0) gigo diff --git a/gemfiles/activerecord50.gemfile.lock b/gemfiles/activerecord50.gemfile.lock index 087d00d..6723502 100644 --- a/gemfiles/activerecord50.gemfile.lock +++ b/gemfiles/activerecord50.gemfile.lock @@ -1,7 +1,7 @@ PATH remote: .. specs: - gigo-activerecord (2.0.1) + gigo-activerecord (2.0.2) activerecord (>= 4.2.0) gigo diff --git a/gemfiles/activerecord51.gemfile.lock b/gemfiles/activerecord51.gemfile.lock index d8be9c9..ac2b36c 100644 --- a/gemfiles/activerecord51.gemfile.lock +++ b/gemfiles/activerecord51.gemfile.lock @@ -1,7 +1,7 @@ PATH remote: .. specs: - gigo-activerecord (2.0.1) + gigo-activerecord (2.0.2) activerecord (>= 4.2.0) gigo diff --git a/gemfiles/activerecord52.gemfile.lock b/gemfiles/activerecord52.gemfile.lock index 758f3f9..8656d08 100644 --- a/gemfiles/activerecord52.gemfile.lock +++ b/gemfiles/activerecord52.gemfile.lock @@ -1,7 +1,7 @@ PATH remote: .. specs: - gigo-activerecord (2.0.1) + gigo-activerecord (2.0.2) activerecord (>= 4.2.0) gigo diff --git a/lib/gigo/active_record/version.rb b/lib/gigo/active_record/version.rb index ae13708..590d803 100644 --- a/lib/gigo/active_record/version.rb +++ b/lib/gigo/active_record/version.rb @@ -1,5 +1,5 @@ module GIGO module ActiveRecord - VERSION = "2.0.1" + VERSION = "2.0.2" end end