From 907fd3e4393f605bfb97dfae0dcb4e8f379f97d8 Mon Sep 17 00:00:00 2001 From: Adam Meehan Date: Sat, 10 Dec 2011 17:46:35 +1100 Subject: [PATCH] Fix for Mongoid shim for reload which was nicely moved into a module to allow super --- Gemfile | 2 +- lib/validates_timeliness/orm/mongoid.rb | 15 +++++++++++---- spec/validates_timeliness/orm/mongoid_spec.rb | 14 +++++++------- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/Gemfile b/Gemfile index 1f6bb2b..b38badc 100644 --- a/Gemfile +++ b/Gemfile @@ -11,7 +11,7 @@ gem 'ruby-debug', :platforms => [:ruby_18, :jruby] gem 'ruby-debug19', :platforms => [:ruby_19] group :mongoid do - gem 'mongoid', '2.2.0' + gem 'mongoid', '~> 2.3.0' gem 'bson_ext' gem 'system_timer', :platforms => [:ruby_18] end diff --git a/lib/validates_timeliness/orm/mongoid.rb b/lib/validates_timeliness/orm/mongoid.rb index 3ac254e..0647530 100644 --- a/lib/validates_timeliness/orm/mongoid.rb +++ b/lib/validates_timeliness/orm/mongoid.rb @@ -31,6 +31,10 @@ module ValidatesTimeliness end end + def reload + _clear_timeliness_cache + super + end end end end @@ -39,9 +43,12 @@ module Mongoid::Document include ValidatesTimeliness::AttributeMethods include ValidatesTimeliness::ORM::Mongoid - def reload_with_timeliness - _clear_timeliness_cache - reload_without_timeliness + # Pre-2.3 reload + if instance_methods.include?('reload') + def reload_with_timeliness + _clear_timeliness_cache + reload_without_timeliness + end + alias_method_chain :reload, :timeliness end - alias_method_chain :reload, :timeliness end diff --git a/spec/validates_timeliness/orm/mongoid_spec.rb b/spec/validates_timeliness/orm/mongoid_spec.rb index a978785..aaccd30 100644 --- a/spec/validates_timeliness/orm/mongoid_spec.rb +++ b/spec/validates_timeliness/orm/mongoid_spec.rb @@ -69,22 +69,22 @@ describe ValidatesTimeliness, 'Mongoid' do end context "for a date column" do - it 'should store a Time value after parsing string' do + it 'should store a Date value after parsing string' do r = Article.new r.publish_date = '2010-01-01' - r.publish_date.should be_kind_of(Time) + r.publish_date.should be_kind_of(Date) r.publish_date.should == Date.new(2010, 1, 1) end end context "for a datetime column" do - it 'should parse string into Time value' do + it 'should parse string into DateTime value' do r = Article.new r.publish_datetime = '2010-01-01 12:00' - r.publish_datetime.should be_kind_of(Time) - r.publish_datetime.should == Time.utc(2010,1,1,12,0) + r.publish_datetime.should be_kind_of(DateTime) + r.publish_datetime.should == DateTime.new(2010,1,1,12,0) end end end @@ -108,6 +108,6 @@ end rescue LoadError puts "Mongoid specs skipped. Mongoid not installed" -rescue StandardError - puts "Mongoid specs skipped. MongoDB connection failed." +rescue StandardError => e + puts "Mongoid specs skipped. MongoDB connection failed with error: #{e.message}" end