active_git 0.0.5 → 0.0.6
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/active_git.gemspec +1 -1
- data/lib/active_git.rb +30 -5
- data/lib/active_git/active_record_extension.rb +2 -2
- data/lib/active_git/synchronizer.rb +3 -4
- data/lib/active_git/version.rb +1 -1
- data/spec/active_record_extension_spec.rb +3 -3
- data/spec/batch_synchronization_spec.rb +141 -0
- data/spec/commands_spec.rb +23 -23
- data/spec/synchronization_spec.rb +4 -4
- metadata +86 -100
data/active_git.gemspec
CHANGED
|
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
|
|
|
15
15
|
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
|
16
16
|
s.require_paths = ["lib"]
|
|
17
17
|
|
|
18
|
-
s.add_dependency 'activerecord', '
|
|
18
|
+
s.add_dependency 'activerecord', '~> 3.2'
|
|
19
19
|
s.add_dependency 'git_wrapper', '~> 1.1'
|
|
20
20
|
s.add_dependency 'activerecord-import'
|
|
21
21
|
s.add_dependency 'easy_diff'
|
data/lib/active_git.rb
CHANGED
|
@@ -3,6 +3,7 @@ require 'git_wrapper'
|
|
|
3
3
|
require 'activerecord-import'
|
|
4
4
|
require 'json'
|
|
5
5
|
require 'easy_diff'
|
|
6
|
+
require 'set'
|
|
6
7
|
|
|
7
8
|
require 'active_git/version'
|
|
8
9
|
require 'active_git/synchronizer'
|
|
@@ -25,15 +26,15 @@ module ActiveGit
|
|
|
25
26
|
extend Commands
|
|
26
27
|
|
|
27
28
|
def self.configuration
|
|
28
|
-
|
|
29
|
+
@configuration ||= Configuration.new
|
|
29
30
|
end
|
|
30
31
|
|
|
31
32
|
def self.configure
|
|
32
|
-
yield
|
|
33
|
+
yield configuration
|
|
33
34
|
end
|
|
34
35
|
|
|
35
36
|
def self.models
|
|
36
|
-
|
|
37
|
+
@models ||= Set.new
|
|
37
38
|
end
|
|
38
39
|
|
|
39
40
|
def self.repository
|
|
@@ -41,7 +42,31 @@ module ActiveGit
|
|
|
41
42
|
@repository
|
|
42
43
|
end
|
|
43
44
|
|
|
44
|
-
|
|
45
|
+
def self.synchronize(*events)
|
|
46
|
+
if @batch_mode
|
|
47
|
+
enqueue events
|
|
48
|
+
else
|
|
49
|
+
Synchronizer.synchronize events
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def self.batch(&block)
|
|
54
|
+
@batch_mode = true
|
|
55
|
+
begin
|
|
56
|
+
yield
|
|
57
|
+
Synchronizer.synchronize @events
|
|
58
|
+
ensure
|
|
59
|
+
@batch_mode = false
|
|
60
|
+
@events.clear
|
|
61
|
+
end
|
|
62
|
+
end
|
|
45
63
|
|
|
46
|
-
|
|
64
|
+
private
|
|
65
|
+
|
|
66
|
+
def self.enqueue(*events)
|
|
67
|
+
@events = (@events || []) + events
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
end
|
|
47
71
|
|
|
72
|
+
ActiveRecord::Base.send :extend, ActiveGit::ActiveRecord::ClassMethods
|
|
@@ -7,11 +7,11 @@ module ActiveGit
|
|
|
7
7
|
ActiveGit.models << self
|
|
8
8
|
|
|
9
9
|
after_save do |record|
|
|
10
|
-
|
|
10
|
+
ActiveGit.synchronize FileSave.new(record)
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
after_destroy do |record|
|
|
14
|
-
|
|
14
|
+
ActiveGit.synchronize FileDelete.new(record)
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
def from_json(json)
|
|
@@ -12,7 +12,7 @@ module ActiveGit
|
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
def run
|
|
15
|
-
|
|
15
|
+
if bulk_inserts.any?
|
|
16
16
|
define_job do
|
|
17
17
|
bulk_inserts.each do |model, records|
|
|
18
18
|
ActiveGit.configuration.logger.debug "[ActiveGit] Inserting #{model.model_name} models"
|
|
@@ -23,10 +23,9 @@ module ActiveGit
|
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
::ActiveRecord::Base.transaction do
|
|
26
|
-
jobs.each
|
|
27
|
-
job.call
|
|
28
|
-
end
|
|
26
|
+
jobs.each(&:call)
|
|
29
27
|
end
|
|
28
|
+
|
|
30
29
|
ActiveGit.add_all
|
|
31
30
|
end
|
|
32
31
|
|
data/lib/active_git/version.rb
CHANGED
|
@@ -18,7 +18,7 @@ describe ActiveGit::ActiveRecord do
|
|
|
18
18
|
it 'Create' do
|
|
19
19
|
language = Language.create! name: 'Spanish'
|
|
20
20
|
|
|
21
|
-
File.exist?(git_filename(language)).should
|
|
21
|
+
File.exist?(git_filename(language)).should be true
|
|
22
22
|
|
|
23
23
|
json = JSON.parse(@file_helper.read_file(git_filename(language)))
|
|
24
24
|
|
|
@@ -41,11 +41,11 @@ describe ActiveGit::ActiveRecord do
|
|
|
41
41
|
it 'Destroy' do
|
|
42
42
|
language = Language.create! name: 'Spanish'
|
|
43
43
|
|
|
44
|
-
File.exist?(git_filename(language)).should
|
|
44
|
+
File.exist?(git_filename(language)).should be true
|
|
45
45
|
|
|
46
46
|
language.destroy
|
|
47
47
|
|
|
48
|
-
File.exist?(git_filename(language)).should
|
|
48
|
+
File.exist?(git_filename(language)).should be false
|
|
49
49
|
end
|
|
50
50
|
|
|
51
51
|
it 'Load from json' do
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ActiveGit do
|
|
4
|
+
|
|
5
|
+
before :each do
|
|
6
|
+
@file_helper = FileHelper.new
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
after :each do
|
|
10
|
+
@file_helper.remove_temp_folders
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
context 'Manual synchornization' do
|
|
14
|
+
|
|
15
|
+
it 'Single model' do
|
|
16
|
+
argentina = Country.create! name: 'Argentina'
|
|
17
|
+
brasil = Country.create! name: 'Brasil'
|
|
18
|
+
|
|
19
|
+
working_path = @file_helper.create_temp_folder
|
|
20
|
+
|
|
21
|
+
File.exist?("#{working_path}/countries/#{argentina.id}.json").should be false
|
|
22
|
+
File.exist?("#{working_path}/countries/#{brasil.id}.json").should be false
|
|
23
|
+
|
|
24
|
+
ActiveGit.synchronize ActiveGit::FileSave.new(argentina, working_path)
|
|
25
|
+
|
|
26
|
+
File.exist?("#{working_path}/countries/#{argentina.id}.json").should be true
|
|
27
|
+
File.exist?("#{working_path}/countries/#{brasil.id}.json").should be false
|
|
28
|
+
|
|
29
|
+
ActiveGit.synchronize ActiveGit::FileSave.new(brasil, working_path)
|
|
30
|
+
|
|
31
|
+
File.exist?("#{working_path}/countries/#{argentina.id}.json").should be true
|
|
32
|
+
File.exist?("#{working_path}/countries/#{brasil.id}.json").should be true
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it 'Batch mode' do
|
|
36
|
+
argentina = Country.create! name: 'Argentina'
|
|
37
|
+
brasil = Country.create! name: 'Brasil'
|
|
38
|
+
|
|
39
|
+
working_path = @file_helper.create_temp_folder
|
|
40
|
+
|
|
41
|
+
File.exist?("#{working_path}/countries/#{argentina.id}.json").should be false
|
|
42
|
+
File.exist?("#{working_path}/countries/#{brasil.id}.json").should be false
|
|
43
|
+
|
|
44
|
+
ActiveGit.batch do
|
|
45
|
+
ActiveGit.synchronize ActiveGit::FileSave.new(argentina, working_path)
|
|
46
|
+
ActiveGit.synchronize ActiveGit::FileSave.new(brasil, working_path)
|
|
47
|
+
|
|
48
|
+
File.exist?("#{working_path}/countries/#{argentina.id}.json").should be false
|
|
49
|
+
File.exist?("#{working_path}/countries/#{brasil.id}.json").should be false
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
File.exist?("#{working_path}/countries/#{argentina.id}.json").should be true
|
|
53
|
+
File.exist?("#{working_path}/countries/#{brasil.id}.json").should be true
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it 'Handle exceptions' do
|
|
57
|
+
argentina = Country.create! name: 'Argentina'
|
|
58
|
+
brasil = Country.create! name: 'Brasil'
|
|
59
|
+
|
|
60
|
+
working_path = @file_helper.create_temp_folder
|
|
61
|
+
|
|
62
|
+
File.exist?("#{working_path}/countries/#{argentina.id}.json").should be false
|
|
63
|
+
File.exist?("#{working_path}/countries/#{brasil.id}.json").should be false
|
|
64
|
+
|
|
65
|
+
expect do
|
|
66
|
+
ActiveGit.batch do
|
|
67
|
+
ActiveGit.synchronize ActiveGit::FileSave.new(argentina, working_path)
|
|
68
|
+
ActiveGit.synchronize ActiveGit::FileSave.new(brasil, working_path)
|
|
69
|
+
raise 'Force error'
|
|
70
|
+
end
|
|
71
|
+
end.to raise_error
|
|
72
|
+
|
|
73
|
+
File.exist?("#{working_path}/countries/#{argentina.id}.json").should be false
|
|
74
|
+
File.exist?("#{working_path}/countries/#{brasil.id}.json").should be false
|
|
75
|
+
|
|
76
|
+
uruguay = Country.create! name: 'Uruguay'
|
|
77
|
+
ActiveGit.batch do
|
|
78
|
+
ActiveGit.synchronize ActiveGit::FileSave.new(uruguay, working_path)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
File.exist?("#{working_path}/countries/#{argentina.id}.json").should be false
|
|
82
|
+
File.exist?("#{working_path}/countries/#{brasil.id}.json").should be false
|
|
83
|
+
File.exist?("#{working_path}/countries/#{uruguay.id}.json").should be true
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
context 'ActiveRecord synchornization' do
|
|
89
|
+
|
|
90
|
+
before :each do
|
|
91
|
+
ActiveGit.configuration.working_path = @file_helper.create_temp_folder
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
it 'Single model' do
|
|
95
|
+
language = Language.create! name: 'Spanish'
|
|
96
|
+
|
|
97
|
+
File.exist?(git_filename(language)).should be true
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
it 'Batch mode' do
|
|
101
|
+
spanish = nil
|
|
102
|
+
english = nil
|
|
103
|
+
|
|
104
|
+
ActiveGit.batch do
|
|
105
|
+
spanish = Language.create! name: 'Spanish'
|
|
106
|
+
english = Language.create! name: 'English'
|
|
107
|
+
|
|
108
|
+
File.exist?(git_filename(spanish)).should be false
|
|
109
|
+
File.exist?(git_filename(english)).should be false
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
File.exist?(git_filename(spanish)).should be true
|
|
113
|
+
File.exist?(git_filename(english)).should be true
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
it 'Handle exceptions' do
|
|
117
|
+
spanish = nil
|
|
118
|
+
english = nil
|
|
119
|
+
portuguese = nil
|
|
120
|
+
|
|
121
|
+
expect do
|
|
122
|
+
ActiveGit.batch do
|
|
123
|
+
spanish = Language.create! name: 'Spanish'
|
|
124
|
+
english = Language.create! name: 'English'
|
|
125
|
+
|
|
126
|
+
raise 'Force error'
|
|
127
|
+
end
|
|
128
|
+
end.to raise_error
|
|
129
|
+
|
|
130
|
+
ActiveGit.batch do
|
|
131
|
+
portuguese = Language.create! name: 'Portuguese'
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
File.exist?(git_filename(spanish)).should be false
|
|
135
|
+
File.exist?(git_filename(english)).should be false
|
|
136
|
+
File.exist?(git_filename(portuguese)).should be true
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
end
|
data/spec/commands_spec.rb
CHANGED
|
@@ -25,12 +25,12 @@ describe ActiveGit::Commands do
|
|
|
25
25
|
|
|
26
26
|
ActiveGit.dump_db
|
|
27
27
|
|
|
28
|
-
File.exist?("#{ActiveGit.configuration.working_path}/test.txt").should
|
|
28
|
+
File.exist?("#{ActiveGit.configuration.working_path}/test.txt").should be false
|
|
29
29
|
|
|
30
30
|
Dir.glob("#{git_dirname(Language)}/*.json").should have(2).items
|
|
31
31
|
|
|
32
32
|
languages.each do |language|
|
|
33
|
-
File.exist?(git_filename(language)).should
|
|
33
|
+
File.exist?(git_filename(language)).should be true
|
|
34
34
|
json = JSON.parse(@file_helper.read_file(git_filename(language)))
|
|
35
35
|
json['id'].should eq language.id
|
|
36
36
|
json['name'].should eq language.name
|
|
@@ -43,17 +43,17 @@ describe ActiveGit::Commands do
|
|
|
43
43
|
|
|
44
44
|
Dir["#{ActiveGit.configuration.working_path}/*"].each { |f| FileUtils.rm_rf f }
|
|
45
45
|
|
|
46
|
-
Dir.exists?("#{ActiveGit.configuration.working_path}/languages").should
|
|
47
|
-
File.exists?("#{ActiveGit.configuration.working_path}/languages/#{language.id}.json").should
|
|
48
|
-
Dir.exists?("#{ActiveGit.configuration.working_path}/countries").should
|
|
49
|
-
File.exists?("#{ActiveGit.configuration.working_path}/countries/#{country.id}.json").should
|
|
46
|
+
Dir.exists?("#{ActiveGit.configuration.working_path}/languages").should be false
|
|
47
|
+
File.exists?("#{ActiveGit.configuration.working_path}/languages/#{language.id}.json").should be false
|
|
48
|
+
Dir.exists?("#{ActiveGit.configuration.working_path}/countries").should be false
|
|
49
|
+
File.exists?("#{ActiveGit.configuration.working_path}/countries/#{country.id}.json").should be false
|
|
50
50
|
|
|
51
51
|
ActiveGit.dump_db Language
|
|
52
52
|
|
|
53
|
-
Dir.exists?("#{ActiveGit.configuration.working_path}/languages").should
|
|
54
|
-
File.exists?("#{ActiveGit.configuration.working_path}/languages/#{language.id}.json").should
|
|
55
|
-
Dir.exists?("#{ActiveGit.configuration.working_path}/countries").should
|
|
56
|
-
File.exists?("#{ActiveGit.configuration.working_path}/countries/#{country.id}.json").should
|
|
53
|
+
Dir.exists?("#{ActiveGit.configuration.working_path}/languages").should be true
|
|
54
|
+
File.exists?("#{ActiveGit.configuration.working_path}/languages/#{language.id}.json").should be true
|
|
55
|
+
Dir.exists?("#{ActiveGit.configuration.working_path}/countries").should be false
|
|
56
|
+
File.exists?("#{ActiveGit.configuration.working_path}/countries/#{country.id}.json").should be false
|
|
57
57
|
end
|
|
58
58
|
|
|
59
59
|
it 'Load all files to db' do
|
|
@@ -65,7 +65,7 @@ describe ActiveGit::Commands do
|
|
|
65
65
|
Language.first.delete
|
|
66
66
|
|
|
67
67
|
languages.each do |language|
|
|
68
|
-
File.exist?(git_filename(language)).should
|
|
68
|
+
File.exist?(git_filename(language)).should be true
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
ActiveGit.load_files
|
|
@@ -81,8 +81,8 @@ describe ActiveGit::Commands do
|
|
|
81
81
|
language = Language.create! name: 'Spanish'
|
|
82
82
|
brand = Brand.create! name: 'Coca Cola'
|
|
83
83
|
|
|
84
|
-
File.exists?(git_filename(language)).should
|
|
85
|
-
File.exists?(git_filename(brand)).should
|
|
84
|
+
File.exists?(git_filename(language)).should be true
|
|
85
|
+
File.exists?(git_filename(brand)).should be true
|
|
86
86
|
|
|
87
87
|
language.delete
|
|
88
88
|
brand.delete
|
|
@@ -138,12 +138,12 @@ describe ActiveGit::Commands do
|
|
|
138
138
|
|
|
139
139
|
Language.count.should eq 2
|
|
140
140
|
|
|
141
|
-
ActiveGit.pull('bare').should
|
|
141
|
+
ActiveGit.pull('bare').should be true
|
|
142
142
|
|
|
143
143
|
ActiveGit.log.first.subject.should eq 'Remote commit'
|
|
144
144
|
Language.count.should eq 3
|
|
145
145
|
['Spanish 2', 'Portuguese', 'French'].each do |lang_name|
|
|
146
|
-
File.exist?(git_filename(Language.find_by_name(lang_name))).should
|
|
146
|
+
File.exist?(git_filename(Language.find_by_name(lang_name))).should be true
|
|
147
147
|
end
|
|
148
148
|
end
|
|
149
149
|
|
|
@@ -177,14 +177,14 @@ describe ActiveGit::Commands do
|
|
|
177
177
|
ActiveGit.commit_all 'Commit 1'
|
|
178
178
|
|
|
179
179
|
Language.count.should eq 2
|
|
180
|
-
File.exist?(git_filename(spanish)).should
|
|
181
|
-
File.exist?(git_filename(english)).should
|
|
180
|
+
File.exist?(git_filename(spanish)).should be true
|
|
181
|
+
File.exist?(git_filename(english)).should be true
|
|
182
182
|
|
|
183
183
|
ActiveGit.reset ActiveGit.log.last.commit_hash
|
|
184
184
|
|
|
185
185
|
Language.count.should eq 1
|
|
186
|
-
File.exist?(git_filename(spanish)).should
|
|
187
|
-
File.exist?(git_filename(english)).should
|
|
186
|
+
File.exist?(git_filename(spanish)).should be true
|
|
187
|
+
File.exist?(git_filename(english)).should be false
|
|
188
188
|
end
|
|
189
189
|
|
|
190
190
|
it 'Reset to HEAD' do
|
|
@@ -194,14 +194,14 @@ describe ActiveGit::Commands do
|
|
|
194
194
|
english = Language.create! name: 'English'
|
|
195
195
|
|
|
196
196
|
Language.count.should eq 2
|
|
197
|
-
File.exist?(git_filename(spanish)).should
|
|
198
|
-
File.exist?(git_filename(english)).should
|
|
197
|
+
File.exist?(git_filename(spanish)).should be true
|
|
198
|
+
File.exist?(git_filename(english)).should be true
|
|
199
199
|
|
|
200
200
|
ActiveGit.reset
|
|
201
201
|
|
|
202
202
|
Language.count.should eq 1
|
|
203
|
-
File.exist?(git_filename(spanish)).should
|
|
204
|
-
File.exist?(git_filename(english)).should
|
|
203
|
+
File.exist?(git_filename(spanish)).should be true
|
|
204
|
+
File.exist?(git_filename(english)).should be false
|
|
205
205
|
end
|
|
206
206
|
|
|
207
207
|
it 'Resolve version conflicts' do
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
|
-
describe
|
|
3
|
+
describe ActiveGit::Synchronizer do
|
|
4
4
|
|
|
5
5
|
before :each do
|
|
6
6
|
@file_helper = FileHelper.new
|
|
@@ -17,11 +17,11 @@ describe 'ActiveGit::Synchronizers' do
|
|
|
17
17
|
|
|
18
18
|
working_path = @file_helper.create_temp_folder
|
|
19
19
|
|
|
20
|
-
File.exist?("#{working_path}/countries/#{country.id}.json").should
|
|
20
|
+
File.exist?("#{working_path}/countries/#{country.id}.json").should be false
|
|
21
21
|
|
|
22
22
|
ActiveGit::Synchronizer.synchronize ActiveGit::FileSave.new(country, working_path)
|
|
23
23
|
|
|
24
|
-
File.exist?("#{working_path}/countries/#{country.id}.json").should
|
|
24
|
+
File.exist?("#{working_path}/countries/#{country.id}.json").should be true
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
it 'Update' do
|
|
@@ -51,7 +51,7 @@ describe 'ActiveGit::Synchronizers' do
|
|
|
51
51
|
|
|
52
52
|
ActiveGit::Synchronizer.synchronize ActiveGit::FileDelete.new(country, working_path)
|
|
53
53
|
|
|
54
|
-
File.exist?("#{working_path}/countries/#{country.id}.json").should
|
|
54
|
+
File.exist?("#{working_path}/countries/#{country.id}.json").should be false
|
|
55
55
|
end
|
|
56
56
|
|
|
57
57
|
end
|
metadata
CHANGED
|
@@ -1,190 +1,176 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: active_git
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
version: 0.0.6
|
|
5
|
+
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
8
8
|
- Gabriel Naiman
|
|
9
|
-
autorequire:
|
|
9
|
+
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2013-
|
|
12
|
+
date: 2013-08-04 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: activerecord
|
|
16
|
-
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
17
|
+
none: false
|
|
17
18
|
requirements:
|
|
18
|
-
- -
|
|
19
|
+
- - ~>
|
|
19
20
|
- !ruby/object:Gem::Version
|
|
20
|
-
version: 3.
|
|
21
|
+
version: '3.2'
|
|
22
|
+
type: :runtime
|
|
23
|
+
prerelease: false
|
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
21
25
|
none: false
|
|
22
|
-
requirement: !ruby/object:Gem::Requirement
|
|
23
26
|
requirements:
|
|
24
|
-
- -
|
|
27
|
+
- - ~>
|
|
25
28
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: 3.
|
|
27
|
-
none: false
|
|
28
|
-
prerelease: false
|
|
29
|
-
type: :runtime
|
|
29
|
+
version: '3.2'
|
|
30
30
|
- !ruby/object:Gem::Dependency
|
|
31
31
|
name: git_wrapper
|
|
32
|
-
|
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
|
33
|
+
none: false
|
|
33
34
|
requirements:
|
|
34
35
|
- - ~>
|
|
35
36
|
- !ruby/object:Gem::Version
|
|
36
37
|
version: '1.1'
|
|
38
|
+
type: :runtime
|
|
39
|
+
prerelease: false
|
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
41
|
none: false
|
|
38
|
-
requirement: !ruby/object:Gem::Requirement
|
|
39
42
|
requirements:
|
|
40
43
|
- - ~>
|
|
41
44
|
- !ruby/object:Gem::Version
|
|
42
45
|
version: '1.1'
|
|
43
|
-
none: false
|
|
44
|
-
prerelease: false
|
|
45
|
-
type: :runtime
|
|
46
46
|
- !ruby/object:Gem::Dependency
|
|
47
47
|
name: activerecord-import
|
|
48
|
-
|
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
|
49
|
+
none: false
|
|
49
50
|
requirements:
|
|
50
51
|
- - ! '>='
|
|
51
52
|
- !ruby/object:Gem::Version
|
|
52
|
-
version:
|
|
53
|
-
|
|
53
|
+
version: '0'
|
|
54
|
+
type: :runtime
|
|
55
|
+
prerelease: false
|
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
54
57
|
none: false
|
|
55
|
-
requirement: !ruby/object:Gem::Requirement
|
|
56
58
|
requirements:
|
|
57
59
|
- - ! '>='
|
|
58
60
|
- !ruby/object:Gem::Version
|
|
59
|
-
version:
|
|
60
|
-
MA==
|
|
61
|
-
none: false
|
|
62
|
-
prerelease: false
|
|
63
|
-
type: :runtime
|
|
61
|
+
version: '0'
|
|
64
62
|
- !ruby/object:Gem::Dependency
|
|
65
63
|
name: easy_diff
|
|
66
|
-
|
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
|
65
|
+
none: false
|
|
67
66
|
requirements:
|
|
68
67
|
- - ! '>='
|
|
69
68
|
- !ruby/object:Gem::Version
|
|
70
|
-
version:
|
|
71
|
-
|
|
69
|
+
version: '0'
|
|
70
|
+
type: :runtime
|
|
71
|
+
prerelease: false
|
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
72
73
|
none: false
|
|
73
|
-
requirement: !ruby/object:Gem::Requirement
|
|
74
74
|
requirements:
|
|
75
75
|
- - ! '>='
|
|
76
76
|
- !ruby/object:Gem::Version
|
|
77
|
-
version:
|
|
78
|
-
MA==
|
|
79
|
-
none: false
|
|
80
|
-
prerelease: false
|
|
81
|
-
type: :runtime
|
|
77
|
+
version: '0'
|
|
82
78
|
- !ruby/object:Gem::Dependency
|
|
83
79
|
name: bundler
|
|
84
|
-
|
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
|
81
|
+
none: false
|
|
85
82
|
requirements:
|
|
86
83
|
- - ~>
|
|
87
84
|
- !ruby/object:Gem::Version
|
|
88
85
|
version: '1.3'
|
|
86
|
+
type: :development
|
|
87
|
+
prerelease: false
|
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
89
89
|
none: false
|
|
90
|
-
requirement: !ruby/object:Gem::Requirement
|
|
91
90
|
requirements:
|
|
92
91
|
- - ~>
|
|
93
92
|
- !ruby/object:Gem::Version
|
|
94
93
|
version: '1.3'
|
|
95
|
-
none: false
|
|
96
|
-
prerelease: false
|
|
97
|
-
type: :development
|
|
98
94
|
- !ruby/object:Gem::Dependency
|
|
99
95
|
name: rake
|
|
100
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
101
|
-
requirements:
|
|
102
|
-
- - ! '>='
|
|
103
|
-
- !ruby/object:Gem::Version
|
|
104
|
-
version: !binary |-
|
|
105
|
-
MA==
|
|
106
|
-
none: false
|
|
107
96
|
requirement: !ruby/object:Gem::Requirement
|
|
97
|
+
none: false
|
|
108
98
|
requirements:
|
|
109
99
|
- - ! '>='
|
|
110
100
|
- !ruby/object:Gem::Version
|
|
111
|
-
version:
|
|
112
|
-
MA==
|
|
113
|
-
none: false
|
|
114
|
-
prerelease: false
|
|
101
|
+
version: '0'
|
|
115
102
|
type: :development
|
|
116
|
-
|
|
117
|
-
name: rspec
|
|
103
|
+
prerelease: false
|
|
118
104
|
version_requirements: !ruby/object:Gem::Requirement
|
|
105
|
+
none: false
|
|
119
106
|
requirements:
|
|
120
107
|
- - ! '>='
|
|
121
108
|
- !ruby/object:Gem::Version
|
|
122
|
-
version:
|
|
123
|
-
|
|
124
|
-
|
|
109
|
+
version: '0'
|
|
110
|
+
- !ruby/object:Gem::Dependency
|
|
111
|
+
name: rspec
|
|
125
112
|
requirement: !ruby/object:Gem::Requirement
|
|
113
|
+
none: false
|
|
126
114
|
requirements:
|
|
127
115
|
- - ! '>='
|
|
128
116
|
- !ruby/object:Gem::Version
|
|
129
|
-
version:
|
|
130
|
-
MA==
|
|
131
|
-
none: false
|
|
132
|
-
prerelease: false
|
|
117
|
+
version: '0'
|
|
133
118
|
type: :development
|
|
134
|
-
|
|
135
|
-
name: simplecov
|
|
119
|
+
prerelease: false
|
|
136
120
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
+
none: false
|
|
137
122
|
requirements:
|
|
138
123
|
- - ! '>='
|
|
139
124
|
- !ruby/object:Gem::Version
|
|
140
|
-
version:
|
|
141
|
-
|
|
142
|
-
|
|
125
|
+
version: '0'
|
|
126
|
+
- !ruby/object:Gem::Dependency
|
|
127
|
+
name: simplecov
|
|
143
128
|
requirement: !ruby/object:Gem::Requirement
|
|
129
|
+
none: false
|
|
144
130
|
requirements:
|
|
145
131
|
- - ! '>='
|
|
146
132
|
- !ruby/object:Gem::Version
|
|
147
|
-
version:
|
|
148
|
-
MA==
|
|
149
|
-
none: false
|
|
150
|
-
prerelease: false
|
|
133
|
+
version: '0'
|
|
151
134
|
type: :development
|
|
152
|
-
|
|
153
|
-
name: activerecord-jdbcsqlite3-adapter
|
|
135
|
+
prerelease: false
|
|
154
136
|
version_requirements: !ruby/object:Gem::Requirement
|
|
137
|
+
none: false
|
|
155
138
|
requirements:
|
|
156
139
|
- - ! '>='
|
|
157
140
|
- !ruby/object:Gem::Version
|
|
158
|
-
version:
|
|
159
|
-
|
|
160
|
-
|
|
141
|
+
version: '0'
|
|
142
|
+
- !ruby/object:Gem::Dependency
|
|
143
|
+
name: sqlite3
|
|
161
144
|
requirement: !ruby/object:Gem::Requirement
|
|
145
|
+
none: false
|
|
162
146
|
requirements:
|
|
163
147
|
- - ! '>='
|
|
164
148
|
- !ruby/object:Gem::Version
|
|
165
|
-
version:
|
|
166
|
-
MA==
|
|
167
|
-
none: false
|
|
168
|
-
prerelease: false
|
|
149
|
+
version: '0'
|
|
169
150
|
type: :development
|
|
170
|
-
|
|
171
|
-
name: activerecord-jdbcpostgresql-adapter
|
|
151
|
+
prerelease: false
|
|
172
152
|
version_requirements: !ruby/object:Gem::Requirement
|
|
153
|
+
none: false
|
|
173
154
|
requirements:
|
|
174
155
|
- - ! '>='
|
|
175
156
|
- !ruby/object:Gem::Version
|
|
176
|
-
version:
|
|
177
|
-
|
|
178
|
-
|
|
157
|
+
version: '0'
|
|
158
|
+
- !ruby/object:Gem::Dependency
|
|
159
|
+
name: pg
|
|
179
160
|
requirement: !ruby/object:Gem::Requirement
|
|
161
|
+
none: false
|
|
180
162
|
requirements:
|
|
181
163
|
- - ! '>='
|
|
182
164
|
- !ruby/object:Gem::Version
|
|
183
|
-
version:
|
|
184
|
-
MA==
|
|
185
|
-
none: false
|
|
186
|
-
prerelease: false
|
|
165
|
+
version: '0'
|
|
187
166
|
type: :development
|
|
167
|
+
prerelease: false
|
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
169
|
+
none: false
|
|
170
|
+
requirements:
|
|
171
|
+
- - ! '>='
|
|
172
|
+
- !ruby/object:Gem::Version
|
|
173
|
+
version: '0'
|
|
188
174
|
description: DB and GIT synchronization via ActiveRecord and GitWrapper
|
|
189
175
|
email:
|
|
190
176
|
- gabynaiman@gmail.com
|
|
@@ -218,6 +204,7 @@ files:
|
|
|
218
204
|
- lib/active_git/synchronizer.rb
|
|
219
205
|
- lib/active_git/version.rb
|
|
220
206
|
- spec/active_record_extension_spec.rb
|
|
207
|
+
- spec/batch_synchronization_spec.rb
|
|
221
208
|
- spec/commands_spec.rb
|
|
222
209
|
- spec/coverage_helper.rb
|
|
223
210
|
- spec/inflector_spec.rb
|
|
@@ -234,38 +221,37 @@ files:
|
|
|
234
221
|
- spec/synchronization_spec.rb
|
|
235
222
|
homepage: https://github.com/gabynaiman/active_git
|
|
236
223
|
licenses: []
|
|
237
|
-
post_install_message:
|
|
224
|
+
post_install_message:
|
|
238
225
|
rdoc_options: []
|
|
239
226
|
require_paths:
|
|
240
227
|
- lib
|
|
241
228
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
229
|
+
none: false
|
|
242
230
|
requirements:
|
|
243
231
|
- - ! '>='
|
|
244
232
|
- !ruby/object:Gem::Version
|
|
233
|
+
version: '0'
|
|
245
234
|
segments:
|
|
246
235
|
- 0
|
|
247
|
-
hash:
|
|
248
|
-
version: !binary |-
|
|
249
|
-
MA==
|
|
250
|
-
none: false
|
|
236
|
+
hash: -181325600156632224
|
|
251
237
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
238
|
+
none: false
|
|
252
239
|
requirements:
|
|
253
240
|
- - ! '>='
|
|
254
241
|
- !ruby/object:Gem::Version
|
|
242
|
+
version: '0'
|
|
255
243
|
segments:
|
|
256
244
|
- 0
|
|
257
|
-
hash:
|
|
258
|
-
version: !binary |-
|
|
259
|
-
MA==
|
|
260
|
-
none: false
|
|
245
|
+
hash: -181325600156632224
|
|
261
246
|
requirements: []
|
|
262
|
-
rubyforge_project:
|
|
263
|
-
rubygems_version: 1.8.
|
|
264
|
-
signing_key:
|
|
247
|
+
rubyforge_project:
|
|
248
|
+
rubygems_version: 1.8.25
|
|
249
|
+
signing_key:
|
|
265
250
|
specification_version: 3
|
|
266
251
|
summary: DB and GIT synchronization via ActiveRecord and GitWrapper
|
|
267
252
|
test_files:
|
|
268
253
|
- spec/active_record_extension_spec.rb
|
|
254
|
+
- spec/batch_synchronization_spec.rb
|
|
269
255
|
- spec/commands_spec.rb
|
|
270
256
|
- spec/coverage_helper.rb
|
|
271
257
|
- spec/inflector_spec.rb
|