ocelot 0.0.1 → 0.0.3

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.
@@ -1,6 +1,5 @@
1
1
  require 'thread'
2
2
  require 'active_record'
3
- require 'active_record/connection_adapters/mysql2_adapter'
4
3
  require 'active_record/connection_adapters/abstract/connection_pool'
5
4
 
6
5
  module Ocelot
@@ -10,17 +9,23 @@ module Ocelot
10
9
  attr_accessor :use_source
11
10
 
12
11
  def initialize(source, target)
13
- self.source = ActiveRecord::Base.mysql2_connection(source)
14
- self.target = ActiveRecord::Base.mysql2_connection(target)
15
- self.use_source = true
12
+ [source, target].each do |db|
13
+ require "active_record/connection_adapters/#{db['adapter']}_adapter"
14
+ end
16
15
 
17
- # ar doesn't like oop much, monkeypatch lots o stuff
16
+ self.target = ActiveRecord::Base.send("#{target['adapter']}_connection".to_s, target.symbolize_keys!)
17
+ self.source = ActiveRecord::Base.send("#{source['adapter']}_connection".to_s, source.symbolize_keys!)
18
+
19
+ self.use_source = true
20
+
21
+ # AR doesn't like oop much, monkeypatch lots o stuff
18
22
  ActiveRecord::ConnectionAdapters::ConnectionHandler.class_variable_set(:@@conn, self)
19
23
  ActiveRecord::ConnectionAdapters::ConnectionHandler.class_eval do
20
- def retrieve_connection(klass)
21
- @@conn.current_connection
24
+ def retrieve_connection(klass)
25
+ @@conn.current_connection
22
26
  end
23
- end
27
+ end
28
+
24
29
 
25
30
  ActiveRecord::ConnectionAdapters::AbstractAdapter.class_eval do
26
31
  attr_reader :last_query
@@ -6,6 +6,10 @@ module Ocelot
6
6
  attr_accessor :rules
7
7
  attr_accessor :filters
8
8
 
9
+ def watch(val)
10
+ @watch = val
11
+ end
12
+
9
13
  def initialize
10
14
  @rules = {}
11
15
  @filters = {}
@@ -55,6 +59,9 @@ module Ocelot
55
59
  @filters[clazz] = ScriptFilter.new(p)
56
60
  end
57
61
 
62
+ alias :target= :target
63
+ alias :source= :source
64
+
58
65
  def go
59
66
  Ocelot::logger = logger
60
67
  Ocelot::connection = Ocelot::Connection.new(source, target)
@@ -71,7 +78,7 @@ module Ocelot
71
78
  copier.extra_rules = rules
72
79
  copier.extra_filters = filters
73
80
 
74
- if true
81
+ if !@watch
75
82
  copier.go
76
83
  else
77
84
  copier_thread = Thread.new(copier) do
@@ -3,13 +3,13 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "ocelot"
6
- s.version = "0.0.1"
6
+ s.version = "0.0.3"
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.authors = ["spencer p"]
9
9
  s.email = ["exussum@gmail.com"]
10
10
  s.homepage = ""
11
- s.summary = %q{DBA like tool to copy a slice of data from one db to another}
12
- s.description = %q{Extreme alpha}
11
+ s.summary = %q{DBA like tool to copy ActiveRecords from one db to another}
12
+ s.description = %q{A rule based system for copying data from one database to another for active record.}
13
13
  s.files = `hg locate | egrep -v '^\\.'`.split("\n")
14
14
  s.executables = "ocelot"
15
15
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: ocelot
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.1
5
+ version: 0.0.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - spencer p
@@ -10,11 +10,11 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-04-18 00:00:00 -04:00
13
+ date: 2011-04-21 00:00:00 -04:00
14
14
  default_executable:
15
15
  dependencies: []
16
16
 
17
- description: Extreme alpha
17
+ description: A rule based system for copying data from one database to another for active record.
18
18
  email:
19
19
  - exussum@gmail.com
20
20
  executables:
@@ -64,6 +64,6 @@ rubyforge_project:
64
64
  rubygems_version: 1.6.2
65
65
  signing_key:
66
66
  specification_version: 3
67
- summary: DBA like tool to copy a slice of data from one db to another
67
+ summary: DBA like tool to copy ActiveRecords from one db to another
68
68
  test_files: []
69
69