validates_timeliness 3.0.7 → 3.0.8
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +4 -0
- data/lib/validates_timeliness/attribute_methods.rb +5 -8
- data/lib/validates_timeliness/extensions/date_time_select.rb +20 -23
- data/lib/validates_timeliness/orm/active_record.rb +3 -6
- data/lib/validates_timeliness/orm/mongoid.rb +11 -4
- data/lib/validates_timeliness/version.rb +1 -1
- data/spec/validates_timeliness/orm/mongoid_spec.rb +7 -7
- data/validates_timeliness.gemspec +1 -1
- metadata +7 -7
data/CHANGELOG.rdoc
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
= 3.0.8 [2011-12-24]
|
2
|
+
* Remove deprecated InstanceMethods module when using AS::Concern
|
3
|
+
* Update Mongoid shim for v2.3 compatability.
|
4
|
+
|
1
5
|
= 3.0.7 [2011-09-21]
|
2
6
|
* Fix ActiveRecord before_type_cast extension for non-dirty attributes.
|
3
7
|
* Don't override AR before_type_cast for >= 3.1.0 which now has it's own implementation for date/time attributes.
|
@@ -65,15 +65,12 @@ module ValidatesTimeliness
|
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
68
|
-
|
69
|
-
|
70
|
-
@timeliness_cache && @timeliness_cache[attr_name.to_s]
|
71
|
-
end
|
72
|
-
|
73
|
-
def _clear_timeliness_cache
|
74
|
-
@timeliness_cache = {}
|
75
|
-
end
|
68
|
+
def _timeliness_raw_value_for(attr_name)
|
69
|
+
@timeliness_cache && @timeliness_cache[attr_name.to_s]
|
76
70
|
end
|
77
71
|
|
72
|
+
def _clear_timeliness_cache
|
73
|
+
@timeliness_cache = {}
|
74
|
+
end
|
78
75
|
end
|
79
76
|
end
|
@@ -15,11 +15,11 @@ module ValidatesTimeliness
|
|
15
15
|
|
16
16
|
class TimelinessDateTime
|
17
17
|
attr_accessor :year, :month, :day, :hour, :min, :sec
|
18
|
-
|
18
|
+
|
19
19
|
def initialize(year, month, day, hour, min, sec)
|
20
20
|
@year, @month, @day, @hour, @min, @sec = year, month, day, hour, min, sec
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
# adapted from activesupport/lib/active_support/core_ext/date_time/calculations.rb, line 36 (3.0.7)
|
24
24
|
def change(options)
|
25
25
|
TimelinessDateTime.new(
|
@@ -30,35 +30,32 @@ module ValidatesTimeliness
|
|
30
30
|
options[:min] || (options[:hour] ? 0 : min),
|
31
31
|
options[:sec] || ((options[:hour] || options[:min]) ? 0 : sec)
|
32
32
|
)
|
33
|
-
end
|
33
|
+
end
|
34
34
|
end
|
35
35
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
end
|
36
|
+
def datetime_selector_with_timeliness(*args)
|
37
|
+
@timeliness_date_or_time_tag = true
|
38
|
+
datetime_selector_without_timeliness(*args)
|
39
|
+
end
|
41
40
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
@template_object.params[@object_name]
|
41
|
+
def value_with_timeliness(object)
|
42
|
+
unless @timeliness_date_or_time_tag && @template_object.params[@object_name]
|
43
|
+
return value_without_timeliness(object)
|
44
|
+
end
|
48
45
|
|
49
|
-
|
50
|
-
return value_without_timeliness(object) if pairs.empty?
|
46
|
+
@template_object.params[@object_name]
|
51
47
|
|
52
|
-
|
53
|
-
|
54
|
-
position = param.scan(/\((\d+)\w+\)/).first.first
|
55
|
-
values[position.to_i-1] = value.to_i
|
56
|
-
end
|
48
|
+
pairs = @template_object.params[@object_name].select {|k,v| k =~ /^#{@method_name}\(/ }
|
49
|
+
return value_without_timeliness(object) if pairs.empty?
|
57
50
|
|
58
|
-
|
51
|
+
values = [nil] * 6
|
52
|
+
pairs.map do |(param, value)|
|
53
|
+
position = param.scan(/\((\d+)\w+\)/).first.first
|
54
|
+
values[position.to_i-1] = value.to_i
|
59
55
|
end
|
60
|
-
end
|
61
56
|
|
57
|
+
TimelinessDateTime.new(*values)
|
58
|
+
end
|
62
59
|
end
|
63
60
|
end
|
64
61
|
end
|
@@ -31,6 +31,10 @@ module ValidatesTimeliness
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
+
def reload
|
35
|
+
_clear_timeliness_cache
|
36
|
+
super
|
37
|
+
end
|
34
38
|
end
|
35
39
|
end
|
36
40
|
end
|
@@ -39,9 +43,12 @@ module Mongoid::Document
|
|
39
43
|
include ValidatesTimeliness::AttributeMethods
|
40
44
|
include ValidatesTimeliness::ORM::Mongoid
|
41
45
|
|
42
|
-
|
43
|
-
|
44
|
-
|
46
|
+
# Pre-2.3 reload
|
47
|
+
if instance_methods.include?('reload')
|
48
|
+
def reload_with_timeliness
|
49
|
+
_clear_timeliness_cache
|
50
|
+
reload_without_timeliness
|
51
|
+
end
|
52
|
+
alias_method_chain :reload, :timeliness
|
45
53
|
end
|
46
|
-
alias_method_chain :reload, :timeliness
|
47
54
|
end
|
@@ -69,22 +69,22 @@ describe ValidatesTimeliness, 'Mongoid' do
|
|
69
69
|
end
|
70
70
|
|
71
71
|
context "for a date column" do
|
72
|
-
it 'should store a
|
72
|
+
it 'should store a Date value after parsing string' do
|
73
73
|
r = Article.new
|
74
74
|
r.publish_date = '2010-01-01'
|
75
75
|
|
76
|
-
r.publish_date.should be_kind_of(
|
76
|
+
r.publish_date.should be_kind_of(Date)
|
77
77
|
r.publish_date.should == Date.new(2010, 1, 1)
|
78
78
|
end
|
79
79
|
end
|
80
80
|
|
81
81
|
context "for a datetime column" do
|
82
|
-
it 'should parse string into
|
82
|
+
it 'should parse string into DateTime value' do
|
83
83
|
r = Article.new
|
84
84
|
r.publish_datetime = '2010-01-01 12:00'
|
85
85
|
|
86
|
-
r.publish_datetime.should be_kind_of(
|
87
|
-
r.publish_datetime.should ==
|
86
|
+
r.publish_datetime.should be_kind_of(DateTime)
|
87
|
+
r.publish_datetime.should == DateTime.new(2010,1,1,12,0)
|
88
88
|
end
|
89
89
|
end
|
90
90
|
end
|
@@ -108,6 +108,6 @@ end
|
|
108
108
|
|
109
109
|
rescue LoadError
|
110
110
|
puts "Mongoid specs skipped. Mongoid not installed"
|
111
|
-
rescue StandardError
|
112
|
-
puts "Mongoid specs skipped. MongoDB connection failed."
|
111
|
+
rescue StandardError => e
|
112
|
+
puts "Mongoid specs skipped. MongoDB connection failed with error: #{e.message}"
|
113
113
|
end
|
@@ -16,5 +16,5 @@ Gem::Specification.new do |s|
|
|
16
16
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
17
|
s.extra_rdoc_files = ["README.rdoc", "CHANGELOG.rdoc", "LICENSE"]
|
18
18
|
|
19
|
-
s.add_runtime_dependency(%q<timeliness>, ["~> 0.3.
|
19
|
+
s.add_runtime_dependency(%q<timeliness>, ["~> 0.3.4"])
|
20
20
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: validates_timeliness
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 3
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 3.0.
|
9
|
+
- 8
|
10
|
+
version: 3.0.8
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Adam Meehan
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-12-24 00:00:00 +11:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -26,12 +26,12 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
hash:
|
29
|
+
hash: 27
|
30
30
|
segments:
|
31
31
|
- 0
|
32
32
|
- 3
|
33
|
-
-
|
34
|
-
version: 0.3.
|
33
|
+
- 4
|
34
|
+
version: 0.3.4
|
35
35
|
type: :runtime
|
36
36
|
version_requirements: *id001
|
37
37
|
description: Adds validation methods to ActiveModel for validating dates and times. Works with multiple ORMS.
|