activerecord-importer 0.1.0 → 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.
@@ -4,7 +4,10 @@ module ActiveRecord::Importer
4
4
 
5
5
  class Runner
6
6
 
7
- def initialize( db_config_path = 'database.yml', db_source_key = 'source', db_dest_key = 'dest' )
7
+ def initialize( db_config_path = 'database.yml',
8
+ db_source_key = 'source',
9
+ db_dest_key = 'dest',
10
+ db_props_table_name = 'props' )
8
11
 
9
12
  @db_config = YAML.load_file( db_config_path )
10
13
 
@@ -16,23 +19,59 @@ module ActiveRecord::Importer
16
19
 
17
20
  puts "datasource new:"
18
21
  pp @db_dest
22
+
23
+ # lets use a props model for tracking versions/imports
24
+ @prop_clazz = Class.new( ActiveRecord::Base ) # same as class Anoynymous < ActiveRecord::Base ; end
25
+ @prop_clazz.table_name = db_props_table_name # same as self.table_name = 'new_table_name'
26
+ end
27
+
28
+ ## todo: use connect_old! w/ !!! - check ar for convetion
29
+ def connect_old
30
+ ActiveRecord::Base.establish_connection( @db_source )
31
+ end
32
+
33
+ def connect_new
34
+ ActiveRecord::Base.establish_connection( @db_dest )
35
+ end
36
+
37
+ def connect( key )
38
+ ActiveRecord::Base.establish_connection( @db_config[ key ] )
39
+ end
40
+
41
+
42
+ def import( items )
43
+
44
+ items.each_with_index do |item,index|
45
+ model_clazz = item[0]
46
+ sql = item[1]
47
+ puts "Importing step #{index+1}/#{items.size}..."
48
+ import_table( model_clazz, sql )
49
+ end
50
+
51
+ version = version_string()
52
+
53
+ puts "Adding version string >#{version}<..."
54
+ @prop_clazz.create!( :key => 'db.version.import', :value => version )
55
+ puts "OK"
19
56
  end
20
-
21
-
57
+
58
+
22
59
  ### sql - source query
23
60
  ### model_clazz - target model/table
24
-
25
- def import( sql, model_clazz )
26
61
 
27
- ActiveRecord::Base.establish_connection( @db_source )
62
+ def import_table( model_clazz, sql )
63
+
64
+ connect_old()
65
+
66
+ puts "Fetching records with query >#{sql}<..."
28
67
 
29
68
  recs = ActiveRecord::Base.connection.execute( sql )
30
69
 
31
- puts "SQL>#{sql}<"
70
+ puts "OK - Found #{recs.length} records."
32
71
 
33
- puts "#{model_clazz.name} -> Found #{recs.length} Records"
72
+ connect_new()
34
73
 
35
- ActiveRecord::Base.establish_connection( @db_dest )
74
+ puts "Adding records to table >#{model_clazz.name}<..."
36
75
 
37
76
  recs.each_with_index do |rec,i|
38
77
 
@@ -50,35 +89,24 @@ module ActiveRecord::Importer
50
89
  print "\r\n" if ((i+1) % 80) == 0 # add new line after 80 records
51
90
 
52
91
  #debug_dump_record( rec )
53
- model_clazz.create!( downcase_hash( rec ) )
92
+ model_clazz.create!( downcase_hash( rec ) )
54
93
  end
55
94
 
56
- puts "OK"
95
+ puts "OK"
57
96
  end
58
97
 
59
- def version_string
60
-
61
- username = ENV['USERNAME'] || '!!(username missing)'
62
- computername = ENV['COMPUTERNAME'] || '!!(computername missing)'
63
-
64
- buf = ""
65
- buf << "generated on #{Time.now} "
66
- buf << "by #{username} @ #{computername} "
67
- buf << "using Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
68
- buf
69
- end
70
-
71
98
 
72
99
  def debug_dump_table( sql )
73
100
 
74
- ActiveRecord::Base.establish_connection( @db_source )
75
- puts "OK - Verbindung erfolgreich aufgebaut!!!"
101
+ connect_old()
102
+ puts "OK - Connection successfully established."
103
+
104
+ puts "SQL>#{sql}<"
76
105
 
77
106
  recs = ActiveRecord::Base.connection.execute( sql )
78
107
 
79
- puts "OK - Found #{recs.length} Records!!!"
108
+ puts "OK - Found #{recs.length} records."
80
109
 
81
- puts "SQL>#{sql}<"
82
110
 
83
111
  recs.each do |rec|
84
112
  print '.'
@@ -88,9 +116,21 @@ def debug_dump_table( sql )
88
116
  puts "OK"
89
117
  end
90
118
 
91
-
92
-
119
+
93
120
  private
121
+
122
+ def version_string
123
+
124
+ username = ENV['USERNAME'] || '!!(username missing)'
125
+ computername = ENV['COMPUTERNAME'] || '!!(computername missing)'
126
+
127
+ buf = ""
128
+ buf << "generated on #{Time.now} "
129
+ buf << "by #{username} @ #{computername} "
130
+ buf << "using Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
131
+ buf
132
+ end
133
+
94
134
  def downcase_hash( hash )
95
135
  new_hash = {}
96
136
  hash.each do |k,v|
@@ -104,7 +144,7 @@ def downcase_hash( hash )
104
144
  end
105
145
  end
106
146
  new_hash
107
- end
147
+ end
108
148
 
109
149
  def debug_dump_record( hash )
110
150
  hash.each do |k,v|
@@ -2,6 +2,5 @@
2
2
  module ActiveRecord ; end # forward reference
3
3
 
4
4
  module ActiveRecord::Importer
5
- VERSION = "0.1.0"
5
+ VERSION = '0.2.0'
6
6
  end
7
-
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-importer
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 1
8
+ - 2
9
9
  - 0
10
- version: 0.1.0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Gerald Bauer
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-11-30 00:00:00 Z
18
+ date: 2012-12-03 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: rdoc
@@ -40,11 +40,11 @@ dependencies:
40
40
  requirements:
41
41
  - - ~>
42
42
  - !ruby/object:Gem::Version
43
- hash: 7
43
+ hash: 1
44
44
  segments:
45
45
  - 3
46
- - 0
47
- version: "3.0"
46
+ - 3
47
+ version: "3.3"
48
48
  type: :development
49
49
  version_requirements: *id002
50
50
  description: activerecord-importer - Another Data Importer