active_git 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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: