vestal_versions 1.0.2 → 2.0.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/.gitignore +19 -20
- data/.travis.yml +22 -0
- data/CHANGELOG.md +7 -0
- data/Gemfile +10 -0
- data/README.rdoc +63 -36
- data/Rakefile +4 -43
- data/gemfiles/activerecord_3_0.gemfile +10 -0
- data/gemfiles/activerecord_3_1.gemfile +10 -0
- data/gemfiles/activerecord_3_2.gemfile +10 -0
- data/gemfiles/activerecord_4_0.gemfile +10 -0
- data/lib/generators/vestal_versions.rb +11 -0
- data/lib/generators/vestal_versions/migration/migration_generator.rb +17 -0
- data/{generators/vestal_versions → lib/generators/vestal_versions/migration}/templates/initializer.rb +0 -0
- data/{generators/vestal_versions → lib/generators/vestal_versions/migration}/templates/migration.rb +4 -3
- data/lib/vestal_versions.rb +39 -12
- data/lib/vestal_versions/changes.rb +43 -47
- data/lib/vestal_versions/conditions.rb +31 -43
- data/lib/vestal_versions/control.rb +162 -138
- data/lib/vestal_versions/creation.rb +67 -59
- data/lib/vestal_versions/deletion.rb +37 -0
- data/lib/vestal_versions/options.rb +6 -10
- data/lib/vestal_versions/reload.rb +7 -14
- data/lib/vestal_versions/reset.rb +15 -19
- data/lib/vestal_versions/reversion.rb +64 -52
- data/lib/vestal_versions/users.rb +36 -39
- data/lib/vestal_versions/version.rb +57 -2
- data/lib/vestal_versions/version_tagging.rb +51 -0
- data/lib/vestal_versions/versioned.rb +14 -17
- data/lib/vestal_versions/versions.rb +22 -7
- data/spec/spec_helper.rb +28 -0
- data/spec/support/models.rb +19 -0
- data/spec/support/schema.rb +25 -0
- data/spec/vestal_versions/changes_spec.rb +134 -0
- data/spec/vestal_versions/conditions_spec.rb +103 -0
- data/spec/vestal_versions/control_spec.rb +120 -0
- data/spec/vestal_versions/creation_spec.rb +90 -0
- data/spec/vestal_versions/deletion_spec.rb +86 -0
- data/spec/vestal_versions/options_spec.rb +45 -0
- data/spec/vestal_versions/reload_spec.rb +18 -0
- data/spec/vestal_versions/reset_spec.rb +111 -0
- data/spec/vestal_versions/reversion_spec.rb +103 -0
- data/spec/vestal_versions/users_spec.rb +21 -0
- data/spec/vestal_versions/version_spec.rb +61 -0
- data/spec/vestal_versions/version_tagging_spec.rb +39 -0
- data/spec/vestal_versions/versioned_spec.rb +16 -0
- data/spec/vestal_versions/versions_spec.rb +176 -0
- data/vestal_versions.gemspec +18 -100
- metadata +153 -102
- data/VERSION +0 -1
- data/generators/vestal_versions/vestal_versions_generator.rb +0 -10
- data/init.rb +0 -1
- data/lib/vestal_versions/configuration.rb +0 -40
- data/lib/vestal_versions/tagging.rb +0 -50
- data/test/changes_test.rb +0 -169
- data/test/conditions_test.rb +0 -137
- data/test/configuration_test.rb +0 -39
- data/test/control_test.rb +0 -152
- data/test/creation_test.rb +0 -110
- data/test/options_test.rb +0 -52
- data/test/reload_test.rb +0 -19
- data/test/reset_test.rb +0 -112
- data/test/reversion_test.rb +0 -68
- data/test/schema.rb +0 -43
- data/test/tagging_test.rb +0 -39
- data/test/test_helper.rb +0 -11
- data/test/users_test.rb +0 -25
- data/test/version_test.rb +0 -43
- data/test/versioned_test.rb +0 -18
- data/test/versions_test.rb +0 -172
@@ -0,0 +1,103 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe VestalVersions::Reversion do
|
4
|
+
subject{ User.new }
|
5
|
+
let(:attributes){ {} }
|
6
|
+
let(:first_version){ attributes.keys.min }
|
7
|
+
let(:last_version){ attributes.keys.max }
|
8
|
+
let(:times){ {} }
|
9
|
+
let(:names){
|
10
|
+
['Steve Richert', 'Stephen Richert', 'Stephen Jobs', 'Steve Jobs']
|
11
|
+
}
|
12
|
+
|
13
|
+
before do
|
14
|
+
time = names.size.hours.ago
|
15
|
+
|
16
|
+
names.each do |name|
|
17
|
+
subject.update_attribute(:name, name)
|
18
|
+
attributes[subject.version] = subject.attributes
|
19
|
+
time += 1.hour
|
20
|
+
|
21
|
+
subject.versions.last.try(:update_attribute, :created_at, time)
|
22
|
+
|
23
|
+
times[subject.version] = time
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'returns the new version number' do
|
28
|
+
subject.revert_to(first_version).should == first_version
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'changes the version number when saved' do
|
32
|
+
expect{ subject.revert_to! first_version }.to change{ subject.version }
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'does nothing for a invalid argument' do
|
36
|
+
[nil, :bogus, 'bogus', (1..2)].each do |invalid|
|
37
|
+
expect{ subject.revert_to(invalid) }.to_not change{ subject.version }
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'is able to target a version number' do
|
42
|
+
subject.revert_to(1)
|
43
|
+
subject.version.should == 1
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'is able to target a date and time' do
|
47
|
+
times.each do |version, time|
|
48
|
+
subject.revert_to(time + 1.second)
|
49
|
+
subject.version.should == version
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'is able to target a version object' do
|
54
|
+
subject.versions.each do |version|
|
55
|
+
subject.revert_to(version)
|
56
|
+
subject.version.should == version.number
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
it "correctly rolls back the model's attributes" do
|
61
|
+
except = %w(created_at created_on updated_at updated_on)
|
62
|
+
|
63
|
+
attributes.each do |version, attributes|
|
64
|
+
subject.revert_to!(version)
|
65
|
+
subject.attributes.except(*except).should == attributes.except(*except)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
it "stores the reverted_from pointing to the previous version" do
|
70
|
+
subject.revert_to!(1)
|
71
|
+
subject.versions.last.reverted_from.should == 1
|
72
|
+
end
|
73
|
+
|
74
|
+
it "does not store the reverted_from for subsequent saves" do
|
75
|
+
subject.revert_to!(1)
|
76
|
+
subject.update_attributes(:name => 'Bill Gates')
|
77
|
+
subject.versions.last.reverted_from.should be_nil
|
78
|
+
end
|
79
|
+
|
80
|
+
it "stores the reverted_from pointing to the version it was reverted from when save is called later" do
|
81
|
+
subject.revert_to(1)
|
82
|
+
subject.name = "Reverted"
|
83
|
+
subject.save
|
84
|
+
subject.versions.last.reverted_from.should == 1
|
85
|
+
end
|
86
|
+
|
87
|
+
it "does not store the reverted_from for subsequent saves when the revert_to-save is called later" do
|
88
|
+
subject.revert_to(1)
|
89
|
+
subject.name = "Reverted"
|
90
|
+
subject.save
|
91
|
+
subject.update_attributes(:name => 'Bill Gates')
|
92
|
+
subject.versions.last.reverted_from.should be_nil
|
93
|
+
end
|
94
|
+
|
95
|
+
it "clears the reverted_from if the model is reloaded after a revert_to without a save" do
|
96
|
+
subject.revert_to(1)
|
97
|
+
subject.reload
|
98
|
+
subject.update_attributes(:name => 'Bill Gates')
|
99
|
+
|
100
|
+
subject.versions.last.reverted_from.should be_nil
|
101
|
+
end
|
102
|
+
|
103
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe VestalVersions::Users do
|
4
|
+
let(:updated_by){ User.create(:name => 'Steve Jobs') }
|
5
|
+
let(:user){ User.create(:name => 'Steve Richert') }
|
6
|
+
|
7
|
+
it 'defaults to nil' do
|
8
|
+
user.update_attributes(:first_name => 'Stephen')
|
9
|
+
user.versions.last.user.should be_nil
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'accepts and returns an ActiveRecord user' do
|
13
|
+
user.update_attributes(:first_name => 'Stephen', :updated_by => updated_by)
|
14
|
+
user.versions.last.user.should == updated_by
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'accepts and returns a string user name' do
|
18
|
+
user.update_attributes(:first_name => 'Stephen', :updated_by => updated_by.name)
|
19
|
+
user.versions.last.user.should == updated_by.name
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe VestalVersions::Versions do
|
4
|
+
let(:user){ User.create(:name => 'Stephen Richert') }
|
5
|
+
|
6
|
+
before do
|
7
|
+
user.update_attribute(:name, 'Steve Jobs')
|
8
|
+
user.update_attribute(:last_name, 'Richert')
|
9
|
+
@first_version, @last_version = user.versions.first, user.versions.last
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'is comparable to another version based on version number' do
|
13
|
+
@first_version.should == @first_version
|
14
|
+
@last_version.should == @last_version
|
15
|
+
@first_version.should_not == @last_version
|
16
|
+
@last_version.should_not == @first_version
|
17
|
+
@first_version.should < @last_version
|
18
|
+
@last_version.should > @first_version
|
19
|
+
@first_version.should <= @last_version
|
20
|
+
@last_version.should >= @first_version
|
21
|
+
end
|
22
|
+
|
23
|
+
it "is not equal a separate model's version with the same number" do
|
24
|
+
other = User.create(:name => 'Stephen Richert')
|
25
|
+
other.update_attribute(:name, 'Steve Jobs')
|
26
|
+
other.update_attribute(:last_name, 'Richert')
|
27
|
+
first_version, last_version = other.versions.first, other.versions.last
|
28
|
+
|
29
|
+
@first_version.should_not == first_version
|
30
|
+
@last_version.should_not == last_version
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'defaults to ordering by number when finding through association' do
|
34
|
+
numbers = user.versions.map(&:number)
|
35
|
+
numbers.sort.should == numbers
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'returns true for the "initial?" method when the version number is 1' do
|
39
|
+
version = user.versions.build(:number => 1)
|
40
|
+
version.number.should == 1
|
41
|
+
version.should be_initial
|
42
|
+
end
|
43
|
+
|
44
|
+
it "sreturn the version number if it is not a revert" do
|
45
|
+
user.version.should == user.versions.last.original_number
|
46
|
+
end
|
47
|
+
|
48
|
+
it "return the reverted_version if it is a revert" do
|
49
|
+
user.revert_to!(1)
|
50
|
+
user.versions.last.original_number.should == 1
|
51
|
+
end
|
52
|
+
|
53
|
+
it "return the original version if it is a double revert" do
|
54
|
+
user.revert_to!(2)
|
55
|
+
version = user.version
|
56
|
+
user.update_attributes(:last_name => 'Gates')
|
57
|
+
user.revert_to!(version)
|
58
|
+
user.versions.last.original_number.should == 2
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe VestalVersions::VersionTagging do
|
4
|
+
let(:user){ User.create(:name => 'Steve Richert') }
|
5
|
+
|
6
|
+
before do
|
7
|
+
user.update_attribute(:last_name, 'Jobs')
|
8
|
+
end
|
9
|
+
|
10
|
+
context 'an untagged version' do
|
11
|
+
it "updates the version record's tag column" do
|
12
|
+
tag_name = 'TAG'
|
13
|
+
last_version = user.versions.last
|
14
|
+
|
15
|
+
last_version.tag.should_not == tag_name
|
16
|
+
user.tag_version(tag_name)
|
17
|
+
last_version.reload.tag.should == tag_name
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'creates a version record for an initial version' do
|
21
|
+
user.revert_to(1)
|
22
|
+
user.versions.at(1).should be_nil
|
23
|
+
|
24
|
+
user.tag_version('TAG')
|
25
|
+
user.versions.at(1).should_not be_nil
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context 'A tagged version' do
|
30
|
+
subject{ user.versions.last }
|
31
|
+
|
32
|
+
before do
|
33
|
+
user.tag_version('TAG')
|
34
|
+
end
|
35
|
+
|
36
|
+
it { should be_tagged }
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe VestalVersions::Versioned do
|
4
|
+
it 'respond to the "versioned?" method' do
|
5
|
+
ActiveRecord::Base.should respond_to(:versioned?)
|
6
|
+
User.should respond_to(:versioned?)
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'return true for the "versioned?" method if the model is versioned' do
|
10
|
+
User.should be_versioned
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'return false for the "versioned?" method if the model is not versioned' do
|
14
|
+
ActiveRecord::Base.should_not be_versioned
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,176 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe VestalVersions::Versions do
|
4
|
+
subject{ User.new }
|
5
|
+
let(:times){ {} }
|
6
|
+
let(:names){
|
7
|
+
['Steve Richert', 'Stephen Richert', 'Stephen Jobs', 'Steve Jobs']
|
8
|
+
}
|
9
|
+
|
10
|
+
before do
|
11
|
+
time = names.size.hours.ago
|
12
|
+
|
13
|
+
names.each do |name|
|
14
|
+
subject.update_attribute(:name, name)
|
15
|
+
subject.tag_version(subject.version.to_s)
|
16
|
+
time += 1.hour
|
17
|
+
|
18
|
+
subject.versions.last.update_attribute(:created_at, time)
|
19
|
+
times[subject.version] = time
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'is searchable between two valid version values' do
|
24
|
+
times.keys.each do |number|
|
25
|
+
times.values.each do |time|
|
26
|
+
subject.versions.between(number, number).should be_a(Array)
|
27
|
+
subject.versions.between(number, time).should be_a(Array)
|
28
|
+
subject.versions.between(time, number).should be_a(Array)
|
29
|
+
subject.versions.between(time, time).should be_a(Array)
|
30
|
+
subject.versions.between(number, number).should_not be_empty
|
31
|
+
subject.versions.between(number, time).should_not be_empty
|
32
|
+
subject.versions.between(time, number).should_not be_empty
|
33
|
+
subject.versions.between(time, time).should_not be_empty
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'returns an empty array when searching between a valid and an invalid version value' do
|
39
|
+
times.each do |number, time|
|
40
|
+
subject.versions.between(number, nil).should == []
|
41
|
+
subject.versions.between(time, nil).should == []
|
42
|
+
subject.versions.between(nil, number).should == []
|
43
|
+
subject.versions.between(nil, time).should == []
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'returns an empty array when searching between two invalid version values' do
|
48
|
+
subject.versions.between(nil, nil).should == []
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'is searchable before a valid version value' do
|
52
|
+
times.sort.each_with_index do |(number, time), i|
|
53
|
+
subject.versions.before(number).size.should == i
|
54
|
+
subject.versions.before(time).size.should == i
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'returns an empty array when searching before an invalid version value' do
|
59
|
+
subject.versions.before(nil).should == []
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'is searchable after a valid version value' do
|
63
|
+
times.sort.reverse.each_with_index do |(number, time), i|
|
64
|
+
subject.versions.after(number).size.should == i
|
65
|
+
subject.versions.after(time).size.should == i
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'returns an empty array when searching after an invalid version value' do
|
70
|
+
subject.versions.after(nil).should == []
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'is fetchable by version number' do
|
74
|
+
times.keys.each do |number|
|
75
|
+
subject.versions.at(number).should be_a(VestalVersions::Version)
|
76
|
+
subject.versions.at(number).number.should == number
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'is fetchable by tag' do
|
81
|
+
times.keys.map{|n| [n, n.to_s] }.each do |number, tag|
|
82
|
+
subject.versions.at(tag).should be_a(VestalVersions::Version)
|
83
|
+
subject.versions.at(tag).number.should == number
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
it "is fetchable by the exact time of a version's creation" do
|
88
|
+
times.each do |number, time|
|
89
|
+
subject.versions.at(time).should be_a(VestalVersions::Version)
|
90
|
+
subject.versions.at(time).number.should == number
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
it "is fetchable by any time after the model's creation" do
|
95
|
+
times.each do |number, time|
|
96
|
+
subject.versions.at(time + 30.minutes).should be_a(VestalVersions::Version)
|
97
|
+
subject.versions.at(time + 30.minutes).number.should == number
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
it "returns nil when fetching a time before the model's creation" do
|
102
|
+
creation = times.values.min
|
103
|
+
subject.versions.at(creation - 1.second).should be_nil
|
104
|
+
end
|
105
|
+
|
106
|
+
it 'is fetchable by an association extension method' do
|
107
|
+
subject.versions.at(:first).should be_a(VestalVersions::Version)
|
108
|
+
subject.versions.at(:last).should be_a(VestalVersions::Version)
|
109
|
+
subject.versions.at(:first).number.should == times.keys.min
|
110
|
+
subject.versions.at(:last).number.should == times.keys.max
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'is fetchable by a version object' do
|
114
|
+
times.keys.each do |number|
|
115
|
+
version = subject.versions.at(number)
|
116
|
+
|
117
|
+
subject.versions.at(version).should be_a(VestalVersions::Version)
|
118
|
+
subject.versions.at(version).number.should == number
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
it 'returns nil when fetching an invalid version value' do
|
123
|
+
subject.versions.at(nil).should be_nil
|
124
|
+
end
|
125
|
+
|
126
|
+
it 'provides a version number for any given numeric version value' do
|
127
|
+
times.keys.each do |number|
|
128
|
+
subject.versions.number_at(number).should be_a(Fixnum)
|
129
|
+
subject.versions.number_at(number + 0.5).should be_a(Fixnum)
|
130
|
+
subject.versions.number_at(number).should == subject.versions.number_at(number + 0.5)
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
it 'provides a version number for a valid tag' do
|
135
|
+
times.keys.map{|n| [n, n.to_s] }.each do |number, tag|
|
136
|
+
subject.versions.number_at(tag).should be_a(Fixnum)
|
137
|
+
subject.versions.number_at(tag).should == number
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
it 'returns nil when providing a version number for an invalid tag' do
|
142
|
+
subject.versions.number_at('INVALID').should be_nil
|
143
|
+
end
|
144
|
+
|
145
|
+
it 'provides a version number of a version corresponding to an association extension method' do
|
146
|
+
subject.versions.at(:first).should be_a(VestalVersions::Version)
|
147
|
+
subject.versions.at(:last).should be_a(VestalVersions::Version)
|
148
|
+
subject.versions.number_at(:first).should == times.keys.min
|
149
|
+
subject.versions.number_at(:last).should == times.keys.max
|
150
|
+
end
|
151
|
+
|
152
|
+
it 'returns nil when providing a version number for an invalid association extension method' do
|
153
|
+
subject.versions.number_at(:INVALID).should be_nil
|
154
|
+
end
|
155
|
+
|
156
|
+
it "provides a version number for any time after the model's creation" do
|
157
|
+
times.each do |number, time|
|
158
|
+
subject.versions.number_at(time + 30.minutes).should be_a(Fixnum)
|
159
|
+
subject.versions.number_at(time + 30.minutes).should == number
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
it "provides a version number of 1 for a time before the model's creation" do
|
164
|
+
creation = times.values.min
|
165
|
+
subject.versions.number_at(creation - 1.second).should == 1
|
166
|
+
end
|
167
|
+
|
168
|
+
it 'provides a version number for a given version object' do
|
169
|
+
times.keys.each do |number|
|
170
|
+
version = subject.versions.at(number)
|
171
|
+
|
172
|
+
subject.versions.number_at(version).should == number
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
end
|
data/vestal_versions.gemspec
CHANGED
@@ -1,105 +1,23 @@
|
|
1
|
-
#
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
-
# -*- encoding: utf-8 -*-
|
1
|
+
# encoding: utf-8
|
5
2
|
|
6
|
-
Gem::Specification.new do |
|
7
|
-
|
8
|
-
|
3
|
+
Gem::Specification.new do |gem|
|
4
|
+
gem.name = 'vestal_versions'
|
5
|
+
gem.version = '2.0.0'
|
9
6
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
"LICENSE",
|
17
|
-
"README.rdoc"
|
18
|
-
]
|
19
|
-
s.files = [
|
20
|
-
".gitignore",
|
21
|
-
"LICENSE",
|
22
|
-
"README.rdoc",
|
23
|
-
"Rakefile",
|
24
|
-
"VERSION",
|
25
|
-
"generators/vestal_versions/templates/initializer.rb",
|
26
|
-
"generators/vestal_versions/templates/migration.rb",
|
27
|
-
"generators/vestal_versions/vestal_versions_generator.rb",
|
28
|
-
"init.rb",
|
29
|
-
"lib/vestal_versions.rb",
|
30
|
-
"lib/vestal_versions/changes.rb",
|
31
|
-
"lib/vestal_versions/conditions.rb",
|
32
|
-
"lib/vestal_versions/configuration.rb",
|
33
|
-
"lib/vestal_versions/control.rb",
|
34
|
-
"lib/vestal_versions/creation.rb",
|
35
|
-
"lib/vestal_versions/options.rb",
|
36
|
-
"lib/vestal_versions/reload.rb",
|
37
|
-
"lib/vestal_versions/reset.rb",
|
38
|
-
"lib/vestal_versions/reversion.rb",
|
39
|
-
"lib/vestal_versions/tagging.rb",
|
40
|
-
"lib/vestal_versions/users.rb",
|
41
|
-
"lib/vestal_versions/version.rb",
|
42
|
-
"lib/vestal_versions/versioned.rb",
|
43
|
-
"lib/vestal_versions/versions.rb",
|
44
|
-
"test/changes_test.rb",
|
45
|
-
"test/conditions_test.rb",
|
46
|
-
"test/configuration_test.rb",
|
47
|
-
"test/control_test.rb",
|
48
|
-
"test/creation_test.rb",
|
49
|
-
"test/options_test.rb",
|
50
|
-
"test/reload_test.rb",
|
51
|
-
"test/reset_test.rb",
|
52
|
-
"test/reversion_test.rb",
|
53
|
-
"test/schema.rb",
|
54
|
-
"test/tagging_test.rb",
|
55
|
-
"test/test_helper.rb",
|
56
|
-
"test/users_test.rb",
|
57
|
-
"test/version_test.rb",
|
58
|
-
"test/versioned_test.rb",
|
59
|
-
"test/versions_test.rb",
|
60
|
-
"vestal_versions.gemspec"
|
61
|
-
]
|
62
|
-
s.homepage = %q{http://github.com/laserlemon/vestal_versions}
|
63
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
64
|
-
s.require_paths = ["lib"]
|
65
|
-
s.rubygems_version = %q{1.3.5}
|
66
|
-
s.summary = %q{Keep a DRY history of your ActiveRecord models' changes}
|
67
|
-
s.test_files = [
|
68
|
-
"test/changes_test.rb",
|
69
|
-
"test/conditions_test.rb",
|
70
|
-
"test/configuration_test.rb",
|
71
|
-
"test/control_test.rb",
|
72
|
-
"test/creation_test.rb",
|
73
|
-
"test/options_test.rb",
|
74
|
-
"test/reload_test.rb",
|
75
|
-
"test/reset_test.rb",
|
76
|
-
"test/reversion_test.rb",
|
77
|
-
"test/schema.rb",
|
78
|
-
"test/tagging_test.rb",
|
79
|
-
"test/test_helper.rb",
|
80
|
-
"test/users_test.rb",
|
81
|
-
"test/version_test.rb",
|
82
|
-
"test/versioned_test.rb",
|
83
|
-
"test/versions_test.rb"
|
84
|
-
]
|
7
|
+
gem.authors = ['Steve Richert', "James O'Kelly", 'C. Jason Harrelson']
|
8
|
+
gem.email = ['steve.richert@gmail.com', 'dreamr.okelly@gmail.com', 'jason@lookforwardenterprises.com']
|
9
|
+
gem.description = "Keep a DRY history of your ActiveRecord models' changes"
|
10
|
+
gem.summary = gem.description
|
11
|
+
gem.homepage = 'http://github.com/laserlemon/vestal_versions'
|
12
|
+
gem.license = 'MIT'
|
85
13
|
|
86
|
-
|
87
|
-
|
88
|
-
s.specification_version = 3
|
14
|
+
gem.add_dependency 'activerecord', '>= 3', '< 5'
|
15
|
+
gem.add_dependency 'activesupport', '>= 3', '< 5'
|
89
16
|
|
90
|
-
|
91
|
-
|
92
|
-
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
93
|
-
s.add_development_dependency(%q<mocha>, [">= 0"])
|
94
|
-
else
|
95
|
-
s.add_dependency(%q<activerecord>, [">= 2.1.0"])
|
96
|
-
s.add_dependency(%q<shoulda>, [">= 0"])
|
97
|
-
s.add_dependency(%q<mocha>, [">= 0"])
|
98
|
-
end
|
99
|
-
else
|
100
|
-
s.add_dependency(%q<activerecord>, [">= 2.1.0"])
|
101
|
-
s.add_dependency(%q<shoulda>, [">= 0"])
|
102
|
-
s.add_dependency(%q<mocha>, [">= 0"])
|
103
|
-
end
|
104
|
-
end
|
17
|
+
gem.add_development_dependency 'bundler', '~> 1.0'
|
18
|
+
gem.add_development_dependency 'rake', '~> 10.0'
|
105
19
|
|
20
|
+
gem.files = `git ls-files`.split($\)
|
21
|
+
gem.test_files = gem.files.grep(/^spec/)
|
22
|
+
gem.require_paths = ['lib']
|
23
|
+
end
|