From 3af2f5156bb73eeeeb5d1cdc8d8b44bac4f53789 Mon Sep 17 00:00:00 2001 From: "Emery A. Miller" Date: Mon, 1 Jun 2015 11:13:58 -0400 Subject: [PATCH] Use Time instead of DateTime in Revocable concern to play nice with AR Fixes NoMethodError - undefined method 'getlocal' when calling the /oauth/token path. Active record works better with Time, as opposed to DateTime objects, see issue #668 for more details. Also see https://gist.github.com/pixeltrix/e2298822dd89d854444b for more about when to use DateTime. --- NEWS.md | 6 ++++++ lib/doorkeeper/models/concerns/revocable.rb | 4 ++-- spec/lib/models/revocable_spec.rb | 4 ++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/NEWS.md b/NEWS.md index 7fc6e7ffd..73525f635 100644 --- a/NEWS.md +++ b/NEWS.md @@ -4,6 +4,12 @@ User-visible changes worth mentioning. --- +## 3.0.0 (rc2) + +- [#671] Fixes NoMethodError - undefined method 'getlocal' when calling + the /oauth/token path. Switch from using a DateTime object to update + AR to using a Time object. (Issue #668) + ## 3.0.0 (rc1) ### Backward incompatible changes diff --git a/lib/doorkeeper/models/concerns/revocable.rb b/lib/doorkeeper/models/concerns/revocable.rb index 07b8ce8a2..96b70e1fc 100644 --- a/lib/doorkeeper/models/concerns/revocable.rb +++ b/lib/doorkeeper/models/concerns/revocable.rb @@ -1,12 +1,12 @@ module Doorkeeper module Models module Revocable - def revoke(clock = DateTime) + def revoke(clock = Time) update_attribute :revoked_at, clock.now end def revoked? - !!(revoked_at && revoked_at <= DateTime.now) + !!(revoked_at && revoked_at <= Time.now) end end end diff --git a/spec/lib/models/revocable_spec.rb b/spec/lib/models/revocable_spec.rb index 9664ba8c3..e5413d5c1 100644 --- a/spec/lib/models/revocable_spec.rb +++ b/spec/lib/models/revocable_spec.rb @@ -19,12 +19,12 @@ describe :revoked? do it 'is revoked if :revoked_at has passed' do - allow(subject).to receive(:revoked_at).and_return(DateTime.now - 1000) + allow(subject).to receive(:revoked_at).and_return(Time.now - 1000) expect(subject).to be_revoked end it 'is not revoked if :revoked_at has not passed' do - allow(subject).to receive(:revoked_at).and_return(DateTime.now + 1000) + allow(subject).to receive(:revoked_at).and_return(Time.now + 1000) expect(subject).not_to be_revoked end