laserlemon-vestal_versions 0.5.0 → 0.6.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.
- data/VERSION +1 -1
- data/lib/vestal_versions.rb +13 -8
- data/test/changes_test.rb +2 -2
- data/vestal_versions.gemspec +2 -2
- metadata +2 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.6.0
|
data/lib/vestal_versions.rb
CHANGED
@@ -8,7 +8,7 @@ module LaserLemon
|
|
8
8
|
|
9
9
|
module ClassMethods
|
10
10
|
def versioned
|
11
|
-
has_many :versions, :as => :versioned, :order => 'versions.number ASC', :dependent => :
|
11
|
+
has_many :versions, :as => :versioned, :order => 'versions.number ASC', :dependent => :delete_all do
|
12
12
|
def between(from_value, to_value)
|
13
13
|
from, to = number_at(from_value), number_at(to_value)
|
14
14
|
return [] if from.nil? || to.nil?
|
@@ -37,7 +37,9 @@ module LaserLemon
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
|
-
|
40
|
+
after_create :create_initial_version
|
41
|
+
after_update :create_initial_version, :if => :needs_initial_version?
|
42
|
+
after_update :create_version, :if => :needs_version?
|
41
43
|
|
42
44
|
include InstanceMethods
|
43
45
|
alias_method_chain :reload, :versions
|
@@ -46,6 +48,10 @@ module LaserLemon
|
|
46
48
|
|
47
49
|
module InstanceMethods
|
48
50
|
private
|
51
|
+
def needs_initial_version?
|
52
|
+
versions.empty?
|
53
|
+
end
|
54
|
+
|
49
55
|
def needs_version?
|
50
56
|
!changed.empty?
|
51
57
|
end
|
@@ -55,13 +61,12 @@ module LaserLemon
|
|
55
61
|
@version = new_version
|
56
62
|
end
|
57
63
|
|
58
|
-
def
|
59
|
-
|
60
|
-
|
61
|
-
else
|
62
|
-
versions.create(:changes => changes, :number => (last_version + 1))
|
63
|
-
end
|
64
|
+
def create_initial_version
|
65
|
+
versions.create(:changes => nil, :number => 1)
|
66
|
+
end
|
64
67
|
|
68
|
+
def create_version
|
69
|
+
versions.create(:changes => changes, :number => (last_version + 1))
|
65
70
|
reset_version
|
66
71
|
end
|
67
72
|
|
data/test/changes_test.rb
CHANGED
@@ -6,8 +6,8 @@ class ChangesTest < Test::Unit::TestCase
|
|
6
6
|
@user = User.create(:name => 'Steve Richert')
|
7
7
|
end
|
8
8
|
|
9
|
-
should "initially
|
10
|
-
|
9
|
+
should "initially be blank" do
|
10
|
+
assert @user.versions.first.changes.blank?
|
11
11
|
end
|
12
12
|
|
13
13
|
should 'contain all changed attributes' do
|
data/vestal_versions.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{vestal_versions}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.6.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["laserlemon"]
|
12
|
-
s.date = %q{2009-09-
|
12
|
+
s.date = %q{2009-09-05}
|
13
13
|
s.description = %q{Keep a DRY history of your ActiveRecord models' changes}
|
14
14
|
s.email = %q{steve@laserlemon.com}
|
15
15
|
s.extra_rdoc_files = [
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: laserlemon-vestal_versions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- laserlemon
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-09-
|
12
|
+
date: 2009-09-05 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|