transient 1.0.2 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,8 @@
1
- = 1.0.2 2010--3-18
1
+ = 1.0.2 2010-03-18
2
2
 
3
3
  * Fixed bug where the effective_at date when implicitly set was not UTC.
4
+ * Started using the method calls (self.effective_at) as opposed to the self[:effective_at] whenever possible.
5
+ * Renamed the effective_at method to expires_at.
4
6
 
5
7
 
6
8
  = 1.0.1 2009-12-29
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.2
1
+ 1.1.0
@@ -22,36 +22,53 @@ module Transient
22
22
 
23
23
  module InstanceMethods
24
24
  def self.included( base ) #:nodoc:
25
+ base.instance_eval do
26
+ def is_active_record_3?
27
+ respond_to? :where
28
+ end
29
+
30
+ def scope_method_name
31
+ is_active_record_3? ?
32
+ :scope :
33
+ :named_scope
34
+ end
35
+ end
36
+
25
37
  base.validates_presence_of :effective_at
26
38
  #base.validates_presence_of :expiring_at
27
39
 
28
- base.named_scope :effective, lambda { { :conditions => ["effective_at <= ? AND (expiring_at IS NULL OR expiring_at > ?)",
29
- DateTime.now.utc, DateTime.now.utc] } }
40
+ base.send( base.scope_method_name, :effective,
41
+ lambda { { :conditions => ["effective_at <= ? AND (expiring_at IS NULL OR expiring_at > ?)",
42
+ DateTime.now.utc, DateTime.now.utc] } } )
30
43
 
31
- base.before_validation_on_create :check_and_set_effective_at
44
+ if base.is_active_record_3?
45
+ base.before_validation :check_and_set_effective_at, :on => :create
46
+ else
47
+ base.before_validation_on_create :check_and_set_effective_at
48
+ end
32
49
 
33
50
  protected
34
-
51
+
35
52
  def check_and_set_effective_at
36
53
  self.effective_at = Time.zone.now if self.effective_at.nil?
37
54
  end
38
-
55
+
39
56
  public
40
57
 
41
- # Validates this record's effective dates occur in correct sequence (ie. effective_at is before
42
- # expiring_at).
58
+ # Validates this record's effective dates occur in correct sequence (ie. effective_at is before
59
+ # expiring_at).
43
60
  #
44
- def validate
61
+ def validate
45
62
  return unless self.effective_at && self.expiring_at
46
63
 
47
- unless self.effective_at.to_datetime <= self.expiring_at.to_datetime
64
+ unless self.effective_at.to_datetime <= self.expires_at.to_datetime
48
65
  self.errors.add( :effective_through, "effective at should be earlier than expiring at" )
49
66
  end
50
67
 
51
- super
68
+ super unless self.class.is_active_record_3?
52
69
  end
53
70
 
54
- # The date this record expires. Returns DateTime.end_of for records that have a
71
+ # The date this record expires. Returns DateTime.end_of for records that have a
55
72
  # nil value in the database.
56
73
  #
57
74
  def expires_at
@@ -61,7 +78,7 @@ module Transient
61
78
  # The range this record is effective wihtin.
62
79
  #
63
80
  def effective_through
64
- self.effective_at.to_datetime..self.expiring_at.to_datetime
81
+ self.effective_at.to_datetime..self.expires_at.to_datetime
65
82
  end
66
83
 
67
84
  # Sets the range this record is effective within.
@@ -86,7 +103,7 @@ module Transient
86
103
  # Returns true if this record is expired, otherwise false.
87
104
  #
88
105
  def expired?
89
- self.expiring_at.to_datetime < DateTime.now
106
+ self.expires_at.to_datetime < DateTime.now
90
107
  end
91
108
 
92
109
  # Expires and saves this record.
@@ -98,7 +115,7 @@ module Transient
98
115
  after_expire! if self.respond_to?( :after_expire! )
99
116
  end
100
117
 
101
- # Returns true if this record is not yet effective, but will become effective at some point in the
118
+ # Returns true if this record is not yet effective, but will become effective at some point in the
102
119
  # future, otherwise false.
103
120
  #
104
121
  def future?
@@ -122,9 +139,9 @@ module Transient
122
139
  module SingleActive
123
140
  def self.included( base ) #:nodoc:
124
141
  base.before_create :expire_current_active
125
-
142
+
126
143
  private
127
-
144
+
128
145
  def expire_current_active
129
146
  #if self.transient_options[:check_exists]
130
147
  # exists_conditions = {}
@@ -132,7 +149,7 @@ module Transient
132
149
  # #cur = self.class.current.find( :first, :conditions => exists_conditions )
133
150
  # return true if self.class.current.exists?( exists_conditions )
134
151
  #end
135
-
152
+
136
153
  conditions = {}
137
154
  self.transient_options[:single_active].each { |attr| conditions.merge!( attr.to_sym => attributes[attr] ) }
138
155
  old = self.class.effective.first( :conditions => conditions )
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{transient}
8
- s.version = "1.0.2"
8
+ s.version = "1.1.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["C. Jason Harrelson (midas)"]
12
- s.date = %q{2010-03-18}
12
+ s.date = %q{2011-04-20}
13
13
  s.description = %q{Provides an API for making any ActiveRecord object transient. In addition, provides functionality for models where only a single instance of the model can be current at one time.}
14
14
  s.email = %q{jason@lookforwardenterprises.com}
15
15
  s.extra_rdoc_files = [
@@ -41,7 +41,7 @@ Gem::Specification.new do |s|
41
41
  s.homepage = %q{http://github.com/midas/transient}
42
42
  s.rdoc_options = ["--charset=UTF-8"]
43
43
  s.require_paths = ["lib"]
44
- s.rubygems_version = %q{1.3.5}
44
+ s.rubygems_version = %q{1.3.7}
45
45
  s.summary = %q{Provides an API for making any ActiveRecord object transient.}
46
46
  s.test_files = [
47
47
  "spec/date_time_extensions_spec.rb",
@@ -56,7 +56,7 @@ Gem::Specification.new do |s|
56
56
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
57
57
  s.specification_version = 3
58
58
 
59
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
59
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
60
60
  s.add_runtime_dependency(%q<activerecord>, [">= 2.3"])
61
61
  s.add_runtime_dependency(%q<activesupport>, [">= 2.3"])
62
62
  s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: transient
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ hash: 19
5
+ prerelease: false
6
+ segments:
7
+ - 1
8
+ - 1
9
+ - 0
10
+ version: 1.1.0
5
11
  platform: ruby
6
12
  authors:
7
13
  - C. Jason Harrelson (midas)
@@ -9,39 +15,55 @@ autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
17
 
12
- date: 2010-03-18 00:00:00 -05:00
18
+ date: 2011-04-20 00:00:00 -05:00
13
19
  default_executable:
14
20
  dependencies:
15
21
  - !ruby/object:Gem::Dependency
16
22
  name: activerecord
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
20
26
  requirements:
21
27
  - - ">="
22
28
  - !ruby/object:Gem::Version
29
+ hash: 5
30
+ segments:
31
+ - 2
32
+ - 3
23
33
  version: "2.3"
24
- version:
34
+ type: :runtime
35
+ version_requirements: *id001
25
36
  - !ruby/object:Gem::Dependency
26
37
  name: activesupport
27
- type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
38
+ prerelease: false
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
30
41
  requirements:
31
42
  - - ">="
32
43
  - !ruby/object:Gem::Version
44
+ hash: 5
45
+ segments:
46
+ - 2
47
+ - 3
33
48
  version: "2.3"
34
- version:
49
+ type: :runtime
50
+ version_requirements: *id002
35
51
  - !ruby/object:Gem::Dependency
36
52
  name: rspec
37
- type: :development
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
53
+ prerelease: false
54
+ requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
40
56
  requirements:
41
57
  - - ">="
42
58
  - !ruby/object:Gem::Version
59
+ hash: 13
60
+ segments:
61
+ - 1
62
+ - 2
63
+ - 9
43
64
  version: 1.2.9
44
- version:
65
+ type: :development
66
+ version_requirements: *id003
45
67
  description: Provides an API for making any ActiveRecord object transient. In addition, provides functionality for models where only a single instance of the model can be current at one time.
46
68
  email: jason@lookforwardenterprises.com
47
69
  executables: []
@@ -82,21 +104,27 @@ rdoc_options:
82
104
  require_paths:
83
105
  - lib
84
106
  required_ruby_version: !ruby/object:Gem::Requirement
107
+ none: false
85
108
  requirements:
86
109
  - - ">="
87
110
  - !ruby/object:Gem::Version
111
+ hash: 3
112
+ segments:
113
+ - 0
88
114
  version: "0"
89
- version:
90
115
  required_rubygems_version: !ruby/object:Gem::Requirement
116
+ none: false
91
117
  requirements:
92
118
  - - ">="
93
119
  - !ruby/object:Gem::Version
120
+ hash: 3
121
+ segments:
122
+ - 0
94
123
  version: "0"
95
- version:
96
124
  requirements: []
97
125
 
98
126
  rubyforge_project:
99
- rubygems_version: 1.3.5
127
+ rubygems_version: 1.3.7
100
128
  signing_key:
101
129
  specification_version: 3
102
130
  summary: Provides an API for making any ActiveRecord object transient.