active_git 0.0.4 → 0.0.5

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/.coveralls.yml ADDED
@@ -0,0 +1,2 @@
1
+ service_name: travis-ci
2
+ repo_token: izy4r8FgdQzdUNEsV367gUbmlSuqqnlOA
data/.travis.yml CHANGED
@@ -1,7 +1,11 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.2
4
3
  - 1.9.3
5
4
  - 2.0
6
5
  - jruby
7
- script: bundle exec rspec spec
6
+ env:
7
+ - DB=postgresql
8
+ before_script:
9
+ - git config --global user.name "User Name"
10
+ - git config --global user.email "user@mail.com"
11
+ - psql -c 'create database test' -U postgres
data/Gemfile CHANGED
@@ -2,3 +2,5 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in active_git.gemspec
4
4
  gemspec
5
+
6
+ gem 'coveralls', require: false
data/README.md CHANGED
@@ -1,6 +1,10 @@
1
1
  # ActiveGit
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/active_git.png)](https://rubygems.org/gems/active_git)
3
4
  [![Build Status](https://travis-ci.org/gabynaiman/active_git.png?branch=master)](https://travis-ci.org/gabynaiman/active_git)
5
+ [![Coverage Status](https://coveralls.io/repos/gabynaiman/active_git/badge.png?branch=master)](https://coveralls.io/r/gabynaiman/active_git?branch=master)
6
+ [![Code Climate](https://codeclimate.com/github/gabynaiman/active_git.png)](https://codeclimate.com/github/gabynaiman/active_git)
7
+ [![Dependency Status](https://gemnasium.com/gabynaiman/active_git.png)](https://gemnasium.com/gabynaiman/active_git)
4
8
 
5
9
  DB and GIT synchronization via ActiveRecord and GitWrapper
6
10
 
data/Rakefile CHANGED
@@ -1,2 +1,11 @@
1
1
  #!/usr/bin/env rake
2
2
  require "bundler/gem_tasks"
3
+ require 'rspec/core/rake_task'
4
+
5
+ RSpec::Core::RakeTask.new do |task|
6
+ task.pattern = 'spec/**/*_spec.rb'
7
+ task.rspec_opts = '--tty --color -f documentation'
8
+ task.verbose = false
9
+ end
10
+
11
+ task default: :spec
data/active_git.gemspec CHANGED
@@ -16,10 +16,19 @@ Gem::Specification.new do |s|
16
16
  s.require_paths = ["lib"]
17
17
 
18
18
  s.add_dependency 'activerecord', '>= 3.0.0'
19
- s.add_dependency 'git_wrapper', '~> 1.0'
19
+ s.add_dependency 'git_wrapper', '~> 1.1'
20
20
  s.add_dependency 'activerecord-import'
21
21
  s.add_dependency 'easy_diff'
22
22
 
23
+ s.add_development_dependency "bundler", "~> 1.3"
24
+ s.add_development_dependency "rake"
23
25
  s.add_development_dependency 'rspec'
24
- s.add_development_dependency 'sqlite3'
26
+ s.add_development_dependency "simplecov"
27
+ if RUBY_ENGINE == 'jruby'
28
+ s.add_development_dependency 'activerecord-jdbcsqlite3-adapter'
29
+ s.add_development_dependency 'activerecord-jdbcpostgresql-adapter'
30
+ else
31
+ s.add_development_dependency 'sqlite3'
32
+ s.add_development_dependency 'pg'
33
+ end
25
34
  end
@@ -44,7 +44,7 @@ module ActiveGit
44
44
  end
45
45
 
46
46
  def merge(commit)
47
- last_log = log.first
47
+ last_log = (log || []).first
48
48
  diffs = diff_reverse commit unless last_log
49
49
 
50
50
  unless repository.merge(commit)
@@ -58,7 +58,7 @@ module ActiveGit
58
58
  synchronize_diffs diffs
59
59
  rescue => e
60
60
  ActiveGit.configuration.logger.error "[ActiveGit] #{e}"
61
- reset last_log.commit_hash
61
+ last_log ? reset(last_log.commit_hash) : reset
62
62
  return false
63
63
  end
64
64
 
@@ -2,7 +2,7 @@ module ActiveGit
2
2
  class DbCreate < DbEvent
3
3
 
4
4
  def synchronize(synchronizer)
5
- synchronizer.bulk_insert data
5
+ create synchronizer
6
6
  end
7
7
 
8
8
  end
@@ -2,11 +2,7 @@ module ActiveGit
2
2
  class DbDelete < DbEvent
3
3
 
4
4
  def synchronize(synchronizer)
5
- synchronizer.define_job do
6
- ActiveGit.configuration.logger.debug "[ActiveGit] Deleting #{model.model_name} #{model_id}"
7
- record = model.find_by_id(model_id)
8
- record.delete if record
9
- end
5
+ delete synchronizer
10
6
  end
11
7
 
12
8
  end
@@ -10,7 +10,7 @@ module ActiveGit
10
10
  raise 'Must implement in subclass'
11
11
  end
12
12
 
13
- protected
13
+ private
14
14
 
15
15
  def model
16
16
  @model ||= Inflector.model(@file_name, @working_path)
@@ -25,5 +25,17 @@ module ActiveGit
25
25
  model.from_json(json)
26
26
  end
27
27
 
28
+ def create(synchronizer)
29
+ synchronizer.bulk_insert data
30
+ end
31
+
32
+ def delete(synchronizer)
33
+ synchronizer.define_job do
34
+ ActiveGit.configuration.logger.debug "[ActiveGit] Deleting #{model.model_name} #{model_id}"
35
+ record = model.find_by_id(model_id)
36
+ record.delete if record
37
+ end
38
+ end
39
+
28
40
  end
29
41
  end
@@ -2,13 +2,8 @@ module ActiveGit
2
2
  class DbUpdate < DbEvent
3
3
 
4
4
  def synchronize(synchronizer)
5
- synchronizer.bulk_insert data
6
-
7
- synchronizer.define_job do
8
- ActiveGit.configuration.logger.debug "[ActiveGit] Deleting #{model.model_name} #{model_id}"
9
- record = model.find_by_id(model_id)
10
- record.delete if record
11
- end
5
+ delete synchronizer
6
+ create synchronizer
12
7
  end
13
8
 
14
9
  end
@@ -1,14 +1,22 @@
1
1
  module ActiveGit
2
2
  module Inflector
3
3
 
4
+ def self.relative_dirname(model)
5
+ model.model_name.underscore.pluralize
6
+ end
7
+
4
8
  def self.dirname(model, working_path=nil)
5
- "#{working_path || ActiveGit.configuration.working_path}/#{model.model_name.underscore.pluralize}"
9
+ "#{working_path || ActiveGit.configuration.working_path}/#{relative_dirname(model)}"
6
10
  end
7
11
 
8
12
  def self.filename(instance, working_path=nil)
9
13
  "#{dirname(instance.class, working_path || ActiveGit.configuration.working_path)}/#{instance.id}.json"
10
14
  end
11
15
 
16
+ def self.relative_filename(instance)
17
+ "#{relative_dirname(instance.class)}/#{instance.id}.json"
18
+ end
19
+
12
20
  def self.model(filename, working_path=nil)
13
21
  File.dirname(filename.gsub(working_path || ActiveGit.configuration.working_path, '')).classify.constantize
14
22
  end
@@ -1,3 +1,3 @@
1
1
  module ActiveGit
2
- VERSION = '0.0.4'
2
+ VERSION = '0.0.5'
3
3
  end
@@ -0,0 +1,8 @@
1
+ require 'simplecov'
2
+ require 'coveralls'
3
+
4
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
5
+ SimpleCov::Formatter::HTMLFormatter,
6
+ Coveralls::SimpleCov::Formatter
7
+ ]
8
+ SimpleCov.start
@@ -12,6 +12,10 @@ describe ActiveGit::Inflector do
12
12
  ActiveGit::Inflector.dirname(Crm::Customer, working_path).should eq "#{working_path}/crm/customers"
13
13
  end
14
14
 
15
+ it 'Git relative path' do
16
+ ActiveGit::Inflector.relative_dirname(Country).should eq "countries"
17
+ end
18
+
15
19
  it 'Git file' do
16
20
  country = Country.create! name: 'Argentina'
17
21
  ActiveGit::Inflector.filename(country, working_path).should eq "#{working_path}/countries/#{country.id}.json"
@@ -22,6 +26,11 @@ describe ActiveGit::Inflector do
22
26
  ActiveGit::Inflector.filename(customer, working_path).should eq "#{working_path}/crm/customers/#{customer.id}.json"
23
27
  end
24
28
 
29
+ it 'Git relative file' do
30
+ country = Country.create! name: 'Argentina'
31
+ ActiveGit::Inflector.relative_filename(country).should eq "countries/#{country.id}.json"
32
+ end
33
+
25
34
  it 'Model from filename' do
26
35
  ActiveGit::Inflector.model("#{working_path}/countries/1.json", working_path).should be Country
27
36
  end
data/spec/spec_helper.rb CHANGED
@@ -1,11 +1,15 @@
1
+ require 'coverage_helper'
1
2
  require 'active_git'
2
3
  require 'logger'
3
4
 
4
5
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
5
6
 
6
7
  ActiveRecord::Base.logger = Logger.new($stdout)
8
+ ActiveRecord::Base.logger.level = Logger::Severity::ERROR
7
9
  ActiveRecord::Migrator.migrations_path = "#{File.dirname(__FILE__)}/migrations"
8
10
 
11
+ ActiveGit.configuration.logger.level = Logger::Severity::ERROR
12
+
9
13
  module InflectorHelper
10
14
  def git_dirname(model, working_path=nil)
11
15
  ActiveGit::Inflector.dirname(model, working_path || ActiveGit.configuration.working_path)
@@ -26,7 +30,11 @@ RSpec.configure do |config|
26
30
  end
27
31
 
28
32
  config.before :all do
29
- ActiveRecord::Base.establish_connection adapter: 'sqlite3', database: ":memory:"
33
+ if ENV['DB'] == 'postgresql'
34
+ ActiveRecord::Base.establish_connection adapter: 'postgresql', database: 'test', username: 'postgres'
35
+ else
36
+ ActiveRecord::Base.establish_connection adapter: 'sqlite3', database: ':memory:'
37
+ end
30
38
  ActiveRecord::Base.connection
31
39
  ActiveRecord::Migrator.migrate ActiveRecord::Migrator.migrations_path
32
40
  end
@@ -19,12 +19,6 @@ class FileHelper
19
19
  end
20
20
  end
21
21
 
22
- def create_temp_file(folder, content)
23
- file_name = "#{folder}/file #{timestamp}.txt"
24
- write_file file_name, content
25
- file_name
26
- end
27
-
28
22
  def write_file(file_name, content)
29
23
  Dir.mkdir File.dirname(file_name) unless Dir.exist? File.dirname(file_name)
30
24
  File.open(file_name, 'w') { |f| f.puts content }
metadata CHANGED
@@ -1,112 +1,190 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_git
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
5
- prerelease:
4
+ prerelease:
5
+ version: 0.0.5
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-03-16 00:00:00.000000000 Z
12
+ date: 2013-07-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
16
+ version_requirements: !ruby/object:Gem::Requirement
18
17
  requirements:
19
18
  - - ! '>='
20
19
  - !ruby/object:Gem::Version
21
20
  version: 3.0.0
22
- type: :runtime
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
21
  none: false
22
+ requirement: !ruby/object:Gem::Requirement
26
23
  requirements:
27
24
  - - ! '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: 3.0.0
27
+ none: false
28
+ prerelease: false
29
+ type: :runtime
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: git_wrapper
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
32
+ version_requirements: !ruby/object:Gem::Requirement
34
33
  requirements:
35
34
  - - ~>
36
35
  - !ruby/object:Gem::Version
37
- version: '1.0'
38
- type: :runtime
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
36
+ version: '1.1'
41
37
  none: false
38
+ requirement: !ruby/object:Gem::Requirement
42
39
  requirements:
43
40
  - - ~>
44
41
  - !ruby/object:Gem::Version
45
- version: '1.0'
42
+ version: '1.1'
43
+ none: false
44
+ prerelease: false
45
+ type: :runtime
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: activerecord-import
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
48
+ version_requirements: !ruby/object:Gem::Requirement
50
49
  requirements:
51
50
  - - ! '>='
52
51
  - !ruby/object:Gem::Version
53
- version: '0'
54
- type: :runtime
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
52
+ version: !binary |-
53
+ MA==
57
54
  none: false
55
+ requirement: !ruby/object:Gem::Requirement
58
56
  requirements:
59
57
  - - ! '>='
60
58
  - !ruby/object:Gem::Version
61
- version: '0'
59
+ version: !binary |-
60
+ MA==
61
+ none: false
62
+ prerelease: false
63
+ type: :runtime
62
64
  - !ruby/object:Gem::Dependency
63
65
  name: easy_diff
64
- requirement: !ruby/object:Gem::Requirement
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: !binary |-
71
+ MA==
65
72
  none: false
73
+ requirement: !ruby/object:Gem::Requirement
66
74
  requirements:
67
75
  - - ! '>='
68
76
  - !ruby/object:Gem::Version
69
- version: '0'
77
+ version: !binary |-
78
+ MA==
79
+ none: false
80
+ prerelease: false
70
81
  type: :runtime
82
+ - !ruby/object:Gem::Dependency
83
+ name: bundler
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ~>
87
+ - !ruby/object:Gem::Version
88
+ version: '1.3'
89
+ none: false
90
+ requirement: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ~>
93
+ - !ruby/object:Gem::Version
94
+ version: '1.3'
95
+ none: false
71
96
  prerelease: false
97
+ type: :development
98
+ - !ruby/object:Gem::Dependency
99
+ name: rake
72
100
  version_requirements: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ! '>='
103
+ - !ruby/object:Gem::Version
104
+ version: !binary |-
105
+ MA==
73
106
  none: false
107
+ requirement: !ruby/object:Gem::Requirement
74
108
  requirements:
75
109
  - - ! '>='
76
110
  - !ruby/object:Gem::Version
77
- version: '0'
111
+ version: !binary |-
112
+ MA==
113
+ none: false
114
+ prerelease: false
115
+ type: :development
78
116
  - !ruby/object:Gem::Dependency
79
117
  name: rspec
80
- requirement: !ruby/object:Gem::Requirement
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ! '>='
121
+ - !ruby/object:Gem::Version
122
+ version: !binary |-
123
+ MA==
81
124
  none: false
125
+ requirement: !ruby/object:Gem::Requirement
82
126
  requirements:
83
127
  - - ! '>='
84
128
  - !ruby/object:Gem::Version
85
- version: '0'
86
- type: :development
129
+ version: !binary |-
130
+ MA==
131
+ none: false
87
132
  prerelease: false
133
+ type: :development
134
+ - !ruby/object:Gem::Dependency
135
+ name: simplecov
88
136
  version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ! '>='
139
+ - !ruby/object:Gem::Version
140
+ version: !binary |-
141
+ MA==
89
142
  none: false
143
+ requirement: !ruby/object:Gem::Requirement
90
144
  requirements:
91
145
  - - ! '>='
92
146
  - !ruby/object:Gem::Version
93
- version: '0'
147
+ version: !binary |-
148
+ MA==
149
+ none: false
150
+ prerelease: false
151
+ type: :development
94
152
  - !ruby/object:Gem::Dependency
95
- name: sqlite3
96
- requirement: !ruby/object:Gem::Requirement
153
+ name: activerecord-jdbcsqlite3-adapter
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ! '>='
157
+ - !ruby/object:Gem::Version
158
+ version: !binary |-
159
+ MA==
97
160
  none: false
161
+ requirement: !ruby/object:Gem::Requirement
98
162
  requirements:
99
163
  - - ! '>='
100
164
  - !ruby/object:Gem::Version
101
- version: '0'
102
- type: :development
165
+ version: !binary |-
166
+ MA==
167
+ none: false
103
168
  prerelease: false
169
+ type: :development
170
+ - !ruby/object:Gem::Dependency
171
+ name: activerecord-jdbcpostgresql-adapter
104
172
  version_requirements: !ruby/object:Gem::Requirement
173
+ requirements:
174
+ - - ! '>='
175
+ - !ruby/object:Gem::Version
176
+ version: !binary |-
177
+ MA==
105
178
  none: false
179
+ requirement: !ruby/object:Gem::Requirement
106
180
  requirements:
107
181
  - - ! '>='
108
182
  - !ruby/object:Gem::Version
109
- version: '0'
183
+ version: !binary |-
184
+ MA==
185
+ none: false
186
+ prerelease: false
187
+ type: :development
110
188
  description: DB and GIT synchronization via ActiveRecord and GitWrapper
111
189
  email:
112
190
  - gabynaiman@gmail.com
@@ -114,6 +192,7 @@ executables: []
114
192
  extensions: []
115
193
  extra_rdoc_files: []
116
194
  files:
195
+ - .coveralls.yml
117
196
  - .gitignore
118
197
  - .travis.yml
119
198
  - Gemfile
@@ -140,6 +219,7 @@ files:
140
219
  - lib/active_git/version.rb
141
220
  - spec/active_record_extension_spec.rb
142
221
  - spec/commands_spec.rb
222
+ - spec/coverage_helper.rb
143
223
  - spec/inflector_spec.rb
144
224
  - spec/migrations/20121004135939_create_countries.rb
145
225
  - spec/migrations/20121004135940_create_languages.rb
@@ -154,31 +234,40 @@ files:
154
234
  - spec/synchronization_spec.rb
155
235
  homepage: https://github.com/gabynaiman/active_git
156
236
  licenses: []
157
- post_install_message:
237
+ post_install_message:
158
238
  rdoc_options: []
159
239
  require_paths:
160
240
  - lib
161
241
  required_ruby_version: !ruby/object:Gem::Requirement
162
- none: false
163
242
  requirements:
164
243
  - - ! '>='
165
244
  - !ruby/object:Gem::Version
166
- version: '0'
167
- required_rubygems_version: !ruby/object:Gem::Requirement
245
+ segments:
246
+ - 0
247
+ hash: 2
248
+ version: !binary |-
249
+ MA==
168
250
  none: false
251
+ required_rubygems_version: !ruby/object:Gem::Requirement
169
252
  requirements:
170
253
  - - ! '>='
171
254
  - !ruby/object:Gem::Version
172
- version: '0'
255
+ segments:
256
+ - 0
257
+ hash: 2
258
+ version: !binary |-
259
+ MA==
260
+ none: false
173
261
  requirements: []
174
- rubyforge_project:
262
+ rubyforge_project:
175
263
  rubygems_version: 1.8.24
176
- signing_key:
264
+ signing_key:
177
265
  specification_version: 3
178
266
  summary: DB and GIT synchronization via ActiveRecord and GitWrapper
179
267
  test_files:
180
268
  - spec/active_record_extension_spec.rb
181
269
  - spec/commands_spec.rb
270
+ - spec/coverage_helper.rb
182
271
  - spec/inflector_spec.rb
183
272
  - spec/migrations/20121004135939_create_countries.rb
184
273
  - spec/migrations/20121004135940_create_languages.rb
@@ -191,4 +280,3 @@ test_files:
191
280
  - spec/support/models/customer.rb
192
281
  - spec/support/models/language.rb
193
282
  - spec/synchronization_spec.rb
194
- has_rdoc: