has_versions 0.4.0 → 0.4.1

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.
@@ -5,7 +5,7 @@ module HasVersions
5
5
 
6
6
  def initialize(&block)
7
7
  self.attributes = []
8
- instance_eval(&block)
8
+ instance_eval(&block) if block_given?
9
9
  end
10
10
 
11
11
  def attribute(name)
@@ -1,4 +1,4 @@
1
1
  module HasVersions
2
- VERSION = "0.4.0"
2
+ VERSION = "0.4.1"
3
3
  end
4
4
 
@@ -15,6 +15,11 @@ module HasVersions
15
15
  self.version_class = version_class
16
16
  end
17
17
 
18
+ def versioned_attribute(name)
19
+ self.versioning_configuration ||= HasVersions::Configuration.new
20
+ versioning_configuration.attribute(name)
21
+ end
22
+
18
23
  def is_versioned?
19
24
  !versioning_configuration.blank?
20
25
  end
@@ -5,12 +5,12 @@ class VersionedObject
5
5
 
6
6
  attr_accessor :name
7
7
  attr_accessor :time
8
+ attr_accessor :color
8
9
  end
9
10
 
10
11
  class VersionedObjectVersion < Version; end
11
12
 
12
13
  describe VersionedObject do
13
-
14
14
  it { should respond_to(:versioning_configuration) }
15
15
  it { should respond_to(:version_class) }
16
16
 
@@ -22,8 +22,10 @@ describe VersionedObject do
22
22
  subject do
23
23
  described_class.has_versions(VersionedObjectVersion) do
24
24
  attribute :name
25
- attribute :time, encoder: lambda { |value| value.strftime("%I:%M%p") }
25
+ attribute :time
26
26
  end
27
+ described_class.versioned_attribute(:color)
28
+
27
29
  described_class
28
30
  end
29
31
 
@@ -31,9 +33,12 @@ describe VersionedObject do
31
33
  subject.is_versioned?.should be_true
32
34
  end
33
35
 
34
- its(:version_class) { should be(VersionedObjectVersion) }
35
- its(:versioning_configuration) { should be_a(HasVersions::Configuration) }
36
+ it 'should have attributes' do
37
+ subject.versioning_configuration.attributes.should == ["name", "time", "color"]
38
+ end
36
39
 
40
+ its(:version_class) { should be(VersionedObjectVersion) }
41
+ its(:versioning_configuration) { should be_a(HasVersions::Configuration) }
37
42
  end
38
43
 
39
44
  describe "configured instance" do
@@ -51,9 +56,5 @@ describe VersionedObject do
51
56
  it 'should set attributes in to_version' do
52
57
  subject.to_version.snapshot.should include(name: 'foo')
53
58
  end
54
-
55
- it 'should encode attributes' do
56
- subject.to_version.snapshot.should include(time: "02:43AM")
57
- end
58
59
  end
59
60
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: has_versions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-10-10 00:00:00.000000000Z
12
+ date: 2011-11-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: i18n
16
- requirement: &70120472609720 !ruby/object:Gem::Requirement
16
+ requirement: &70274998603500 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70120472609720
24
+ version_requirements: *70274998603500
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activesupport
27
- requirement: &70120472608780 !ruby/object:Gem::Requirement
27
+ requirement: &70274998602980 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '3.0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70120472608780
35
+ version_requirements: *70274998602980
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: simple_uuid
38
- requirement: &70120472607900 !ruby/object:Gem::Requirement
38
+ requirement: &70274998602500 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70120472607900
46
+ version_requirements: *70274998602500
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
- requirement: &70120472607200 !ruby/object:Gem::Requirement
49
+ requirement: &70274998602020 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '2.0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70120472607200
57
+ version_requirements: *70274998602020
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: yard
60
- requirement: &70120472606420 !ruby/object:Gem::Requirement
60
+ requirement: &70274998601540 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 0.6.0
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70120472606420
68
+ version_requirements: *70274998601540
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bundler
71
- requirement: &70120472605360 !ruby/object:Gem::Requirement
71
+ requirement: &70274998601060 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: 1.0.0
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70120472605360
79
+ version_requirements: *70274998601060
80
80
  description: ActiveModel versioning
81
81
  email:
82
82
  - grantr@gmail.com