From a4e54a7b05b59aca33725b5866e2ead1f64f3d50 Mon Sep 17 00:00:00 2001 From: Raphael Sofaer Date: Tue, 9 Aug 2011 14:03:44 -0700 Subject: [PATCH] Protect ourselves from problems with youtube title serialization by rescuing type mismatches in the marshaller. --- app/models/status_message.rb | 12 ++++++++++++ spec/lib/youtube_titles_spec.rb | 6 ++++++ 2 files changed, 18 insertions(+) diff --git a/app/models/status_message.rb b/app/models/status_message.rb index fd460f245..c3c75c09d 100644 --- a/app/models/status_message.rb +++ b/app/models/status_message.rb @@ -131,6 +131,18 @@ class StatusMessage < Post end end + def unserialize_attribute attr_name + if attr_name == "youtube_titles" + begin + super + rescue ActiveRecord::SerializationTypeMismatch + {} + end + else + super + end + end + protected def message_or_photos_present? diff --git a/spec/lib/youtube_titles_spec.rb b/spec/lib/youtube_titles_spec.rb index 82e6ec107..7153d2324 100644 --- a/spec/lib/youtube_titles_spec.rb +++ b/spec/lib/youtube_titles_spec.rb @@ -45,6 +45,12 @@ describe YoutubeTitles do StatusMessage.find(@post.id).youtube_titles }.should_not raise_error end + it 'can be re-marshalled if it is serializaed incorrectly' do + StatusMessage.where(:id => @post.id).update_all(:youtube_titles => "this is not yaml") + lambda { + StatusMessage.find(@post.id).youtube_titles + }.should_not raise_error + end end describe "YOUTUBE_ID_REGEX" do