nsync 0.1.1 → 0.2.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/Rakefile CHANGED
@@ -5,6 +5,7 @@ gem "schleyfox-grit", ">= 2.3.0.1"
5
5
  require 'grit'
6
6
 
7
7
  require 'jeweler'
8
+ $:.unshift(".")
8
9
  require 'jeweler_monkey_patch'
9
10
 
10
11
 
@@ -19,7 +20,6 @@ Jeweler::Tasks.new do |gem|
19
20
  gem.authors = ["Ben Hughes"]
20
21
 
21
22
  gem.add_dependency "json"
22
- gem.add_dependency "activesupport", "~> 2.3.5"
23
23
  gem.add_dependency "schleyfox-grit", ">= 2.3.0.1"
24
24
  gem.add_dependency "schleyfox-lockfile", ">= 1.0.0"
25
25
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.2.0
data/lib/nsync/config.rb CHANGED
@@ -59,7 +59,7 @@ module Nsync
59
59
  def consumer_classes_for(producer_class)
60
60
  Array(@class_mappings[producer_class]).map do |klass|
61
61
  begin
62
- klass.constantize
62
+ CoreExtensions.constantize(klass)
63
63
  rescue NameError => e
64
64
  log.error(e.inspect)
65
65
  log.warn("[NSYNC] Could not find class '#{klass}'; skipping")
@@ -114,7 +114,7 @@ module Nsync
114
114
  if config.ordering
115
115
  config.ordering.each do |klass|
116
116
  klass = begin
117
- klass.constantize
117
+ CoreExtensions.constantize(klass)
118
118
  rescue NameError => e
119
119
  config.log.warn("[NSYNC] Could not find class '#{klass}' from ordering; skipping")
120
120
  false
@@ -249,7 +249,7 @@ module Nsync
249
249
 
250
250
  config.lock do
251
251
  git = Grit::Git.new(config.repo_path)
252
- git.clone({:bare => true}, config.repo_url, config.repo_path)
252
+ git.run('', 'clone', '', {:bare => true}, [config.repo_url, config.repo_path])
253
253
  self.repo = Grit::Repo.new(config.repo_path)
254
254
  config.version_manager.version = first_commit
255
255
  return self.repo
@@ -336,7 +336,7 @@ module Nsync
336
336
  end
337
337
 
338
338
  def consumer_classes_and_id_from_path(path)
339
- producer_class_name = File.dirname(path).camelize
339
+ producer_class_name = CoreExtensions.camelize(File.dirname(path))
340
340
  id = File.basename(path, ".json")
341
341
  [config.consumer_classes_for(producer_class_name), id]
342
342
  end
@@ -0,0 +1,29 @@
1
+ # The parts of ActiveSupport that we need, all shamelessly stolen
2
+ module Nsync
3
+ module CoreExtensions
4
+ # Upper case camelize
5
+ def self.camelize(string)
6
+ string.to_s.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase }
7
+ end
8
+
9
+ def self.constantize(string)
10
+ names = string.split('::')
11
+ names.shift if names.size == 0 || names.first.size == 0
12
+
13
+ constant = Object
14
+ #Ruby 1.9 awesomeness
15
+ if Module.method(:const_get).arity == 1
16
+ names.each do |name|
17
+ constant = constant.const_defined?(name) ? constant.const_get(name) : constant.const_missing(name)
18
+ end
19
+ else
20
+ names.each do |name|
21
+ constant = constant.const_get(name, false) || constant.const_missing(name)
22
+ end
23
+ end
24
+ constant
25
+ end
26
+ end
27
+ end
28
+
29
+
@@ -128,13 +128,13 @@ module Nsync
128
128
  end
129
129
 
130
130
  def consumer_classes_and_id_from_path(path)
131
- producer_class_name = File.dirname(path).camelize
131
+ producer_class_name = CoreExtensions.camelize(File.dirname(path))
132
132
  id = File.basename(path, ".json")
133
133
  classes = config.consumer_classes_for(producer_class_name)
134
134
 
135
135
  # refinement to allow the producer to consume itself
136
136
  if classes.empty?
137
- classes = [producer_class_name.constantize].compact
137
+ classes = [CoreExtensions.constantize(producer_class_name)].compact
138
138
  end
139
139
  [classes, id]
140
140
  end
data/lib/nsync.rb CHANGED
@@ -1,16 +1,15 @@
1
1
  require 'rubygems'
2
2
  require 'fileutils'
3
3
 
4
- # just for now
5
- gem 'activesupport', "~> 2.3.5"
6
- require 'active_support'
7
-
8
4
  gem "schleyfox-grit", ">= 2.3.0.1"
9
5
  require 'grit'
10
6
 
7
+ require 'nsync/core_extensions'
8
+
11
9
  #up the timeout, as these repos can get quite large
12
10
  Grit::Git.git_timeout = 60 # 1 minute should do
13
- Grit::Git.git_max_size = 100.megabytes # tweak this up for very large changesets
11
+ # 100 megabytes
12
+ Grit::Git.git_max_size = 100*1024*1024 # tweak this up for very large changesets
14
13
 
15
14
  gem "schleyfox-lockfile", ">= 1.0.0"
16
15
  require 'lockfile'
data/nsync.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{nsync}
8
- s.version = "0.1.1"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ben Hughes"]
12
- s.date = %q{2011-01-08}
12
+ s.date = %q{2011-06-13}
13
13
  s.description = %q{Nsync is designed to allow you to have a separate data
14
14
  processing app with its own data processing optimized database and a consumer
15
15
  app with its own database, while keeping the data as in sync as you want it.}
@@ -31,6 +31,7 @@ Gem::Specification.new do |s|
31
31
  "lib/nsync/class_methods.rb",
32
32
  "lib/nsync/config.rb",
33
33
  "lib/nsync/consumer.rb",
34
+ "lib/nsync/core_extensions.rb",
34
35
  "lib/nsync/git_version_manager.rb",
35
36
  "lib/nsync/producer.rb",
36
37
  "lib/nsync/producer/methods.rb",
@@ -38,7 +39,7 @@ Gem::Specification.new do |s|
38
39
  ]
39
40
  s.homepage = %q{http://github.com/schleyfox/nsync}
40
41
  s.require_paths = ["lib"]
41
- s.rubygems_version = %q{1.3.6}
42
+ s.rubygems_version = %q{1.4.0}
42
43
  s.summary = %q{Keep your data processors and apps in sync}
43
44
  s.test_files = [
44
45
  "test/active_record_test.rb",
@@ -51,19 +52,16 @@ Gem::Specification.new do |s|
51
52
  ]
52
53
 
53
54
  if s.respond_to? :specification_version then
54
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
55
55
  s.specification_version = 3
56
56
 
57
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
57
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
58
58
  s.add_runtime_dependency(%q<json>, [">= 0"])
59
- s.add_runtime_dependency(%q<activesupport>, ["~> 2.3.5"])
60
59
  s.add_runtime_dependency(%q<schleyfox-grit>, [">= 2.3.0.1"])
61
60
  s.add_runtime_dependency(%q<schleyfox-lockfile>, [">= 1.0.0"])
62
61
  s.add_development_dependency(%q<shoulda>, [">= 0"])
63
62
  s.add_development_dependency(%q<mocha>, [">= 0"])
64
63
  else
65
64
  s.add_dependency(%q<json>, [">= 0"])
66
- s.add_dependency(%q<activesupport>, ["~> 2.3.5"])
67
65
  s.add_dependency(%q<schleyfox-grit>, [">= 2.3.0.1"])
68
66
  s.add_dependency(%q<schleyfox-lockfile>, [">= 1.0.0"])
69
67
  s.add_dependency(%q<shoulda>, [">= 0"])
@@ -71,7 +69,6 @@ Gem::Specification.new do |s|
71
69
  end
72
70
  else
73
71
  s.add_dependency(%q<json>, [">= 0"])
74
- s.add_dependency(%q<activesupport>, ["~> 2.3.5"])
75
72
  s.add_dependency(%q<schleyfox-grit>, [">= 2.3.0.1"])
76
73
  s.add_dependency(%q<schleyfox-lockfile>, [">= 1.0.0"])
77
74
  s.add_dependency(%q<shoulda>, [">= 0"])
data/test/helper.rb CHANGED
@@ -4,7 +4,7 @@ require 'rubygems'
4
4
  require 'test/unit'
5
5
  require 'mocha'
6
6
  require 'shoulda'
7
- require 'redgreen'
7
+ require 'redgreen' unless '1.9'.respond_to?(:force_encoding)
8
8
 
9
9
  #hack for Mac OS X
10
10
  if File.directory?("/private/tmp")
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nsync
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 23
5
+ prerelease:
5
6
  segments:
6
7
  - 0
7
- - 1
8
- - 1
9
- version: 0.1.1
8
+ - 2
9
+ - 0
10
+ version: 0.2.0
10
11
  platform: ruby
11
12
  authors:
12
13
  - Ben Hughes
@@ -14,42 +15,32 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2011-01-08 00:00:00 -05:00
18
+ date: 2011-06-13 00:00:00 -04:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: json
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
27
  - - ">="
26
28
  - !ruby/object:Gem::Version
29
+ hash: 3
27
30
  segments:
28
31
  - 0
29
32
  version: "0"
30
33
  type: :runtime
31
34
  version_requirements: *id001
32
- - !ruby/object:Gem::Dependency
33
- name: activesupport
34
- prerelease: false
35
- requirement: &id002 !ruby/object:Gem::Requirement
36
- requirements:
37
- - - ~>
38
- - !ruby/object:Gem::Version
39
- segments:
40
- - 2
41
- - 3
42
- - 5
43
- version: 2.3.5
44
- type: :runtime
45
- version_requirements: *id002
46
35
  - !ruby/object:Gem::Dependency
47
36
  name: schleyfox-grit
48
37
  prerelease: false
49
- requirement: &id003 !ruby/object:Gem::Requirement
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
50
40
  requirements:
51
41
  - - ">="
52
42
  - !ruby/object:Gem::Version
43
+ hash: 117
53
44
  segments:
54
45
  - 2
55
46
  - 3
@@ -57,45 +48,51 @@ dependencies:
57
48
  - 1
58
49
  version: 2.3.0.1
59
50
  type: :runtime
60
- version_requirements: *id003
51
+ version_requirements: *id002
61
52
  - !ruby/object:Gem::Dependency
62
53
  name: schleyfox-lockfile
63
54
  prerelease: false
64
- requirement: &id004 !ruby/object:Gem::Requirement
55
+ requirement: &id003 !ruby/object:Gem::Requirement
56
+ none: false
65
57
  requirements:
66
58
  - - ">="
67
59
  - !ruby/object:Gem::Version
60
+ hash: 23
68
61
  segments:
69
62
  - 1
70
63
  - 0
71
64
  - 0
72
65
  version: 1.0.0
73
66
  type: :runtime
74
- version_requirements: *id004
67
+ version_requirements: *id003
75
68
  - !ruby/object:Gem::Dependency
76
69
  name: shoulda
77
70
  prerelease: false
78
- requirement: &id005 !ruby/object:Gem::Requirement
71
+ requirement: &id004 !ruby/object:Gem::Requirement
72
+ none: false
79
73
  requirements:
80
74
  - - ">="
81
75
  - !ruby/object:Gem::Version
76
+ hash: 3
82
77
  segments:
83
78
  - 0
84
79
  version: "0"
85
80
  type: :development
86
- version_requirements: *id005
81
+ version_requirements: *id004
87
82
  - !ruby/object:Gem::Dependency
88
83
  name: mocha
89
84
  prerelease: false
90
- requirement: &id006 !ruby/object:Gem::Requirement
85
+ requirement: &id005 !ruby/object:Gem::Requirement
86
+ none: false
91
87
  requirements:
92
88
  - - ">="
93
89
  - !ruby/object:Gem::Version
90
+ hash: 3
94
91
  segments:
95
92
  - 0
96
93
  version: "0"
97
94
  type: :development
98
- version_requirements: *id006
95
+ version_requirements: *id005
99
96
  description: |-
100
97
  Nsync is designed to allow you to have a separate data
101
98
  processing app with its own data processing optimized database and a consumer
@@ -121,10 +118,18 @@ files:
121
118
  - lib/nsync/class_methods.rb
122
119
  - lib/nsync/config.rb
123
120
  - lib/nsync/consumer.rb
121
+ - lib/nsync/core_extensions.rb
124
122
  - lib/nsync/git_version_manager.rb
125
123
  - lib/nsync/producer.rb
126
124
  - lib/nsync/producer/methods.rb
127
125
  - nsync.gemspec
126
+ - test/active_record_test.rb
127
+ - test/classes.rb
128
+ - test/helper.rb
129
+ - test/nsync_config_test.rb
130
+ - test/nsync_consumer_test.rb
131
+ - test/nsync_producer_test.rb
132
+ - test/repo.rb
128
133
  has_rdoc: true
129
134
  homepage: http://github.com/schleyfox/nsync
130
135
  licenses: []
@@ -135,23 +140,27 @@ rdoc_options: []
135
140
  require_paths:
136
141
  - lib
137
142
  required_ruby_version: !ruby/object:Gem::Requirement
143
+ none: false
138
144
  requirements:
139
145
  - - ">="
140
146
  - !ruby/object:Gem::Version
147
+ hash: 3
141
148
  segments:
142
149
  - 0
143
150
  version: "0"
144
151
  required_rubygems_version: !ruby/object:Gem::Requirement
152
+ none: false
145
153
  requirements:
146
154
  - - ">="
147
155
  - !ruby/object:Gem::Version
156
+ hash: 3
148
157
  segments:
149
158
  - 0
150
159
  version: "0"
151
160
  requirements: []
152
161
 
153
162
  rubyforge_project:
154
- rubygems_version: 1.3.6
163
+ rubygems_version: 1.4.0
155
164
  signing_key:
156
165
  specification_version: 3
157
166
  summary: Keep your data processors and apps in sync