taps 0.2.25 → 0.2.26

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION.yml CHANGED
@@ -1,4 +1,5 @@
1
1
  ---
2
2
  :major: 0
3
3
  :minor: 2
4
- :patch: 25
4
+ :build:
5
+ :patch: 26
data/bin/schema CHANGED
@@ -20,21 +20,22 @@ EOTXT
20
20
  exit(1)
21
21
  end
22
22
 
23
- if cmd == 'dump'
23
+ case cmd
24
+ when 'dump'
24
25
  puts Taps::Schema.dump_without_indexes(database_url)
25
- elsif cmd == 'indexes'
26
+ when 'indexes'
26
27
  puts Taps::Schema.indexes(database_url)
27
- elsif cmd == 'load_indexes'
28
+ when 'load_indexes'
28
29
  filename = ARGV.shift.strip rescue ''
29
30
  indexes = File.read(filename) rescue show_usage_and_exit
30
31
  Taps::Schema.load_indexes(database_url, indexes)
31
- elsif cmd == 'load'
32
+ when 'load'
32
33
  filename = ARGV.shift.strip rescue ''
33
34
  schema = File.read(filename) rescue show_usage_and_exit
34
35
  Taps::Schema.load(database_url, schema)
35
- elsif cmd == 'reset_db_sequences'
36
+ when 'reset_db_sequences'
36
37
  Taps::Schema.reset_db_sequences(database_url)
37
- elsif cmd == 'console'
38
+ when 'console'
38
39
  Taps::Schema.connection(database_url)
39
40
  $db = ActiveRecord::Base.connection
40
41
  require 'irb'
@@ -114,10 +114,8 @@ class ClientSession
114
114
 
115
115
  puts "#{tables_with_counts.size} tables, #{format_number(record_count)} records"
116
116
 
117
-
118
- db.tables.each do |table_name|
117
+ tables_with_counts.each do |table_name, count|
119
118
  table = db[table_name]
120
- count = table.count
121
119
  order = Taps::Utils.order_by(db, table_name)
122
120
  chunksize = self.default_chunksize
123
121
  string_columns = Taps::Utils.incorrect_blobs(db, table_name)
@@ -128,11 +126,13 @@ class ClientSession
128
126
  loop do
129
127
  row_size = 0
130
128
  chunksize = Taps::Utils.calculate_chunksize(chunksize) do |c|
129
+ time_skip_start = Time.now
131
130
  rows = Taps::Utils.format_data(table.order(*order).limit(c, offset).all, string_columns)
132
131
  break if rows == { }
133
132
 
134
133
  row_size = rows[:data].size
135
134
  gzip_data = Taps::Utils.gzip(Marshal.dump(rows))
135
+ time_skip = Time.now - time_skip_start
136
136
 
137
137
  begin
138
138
  session_resource["tables/#{table_name}"].post(gzip_data, http_headers({
@@ -145,6 +145,7 @@ class ClientSession
145
145
  end
146
146
  raise
147
147
  end
148
+ time_skip
148
149
  end
149
150
 
150
151
  progress.inc(row_size)
@@ -158,12 +159,10 @@ class ClientSession
158
159
  end
159
160
 
160
161
  def fetch_tables_info
161
- record_count = 0
162
- tables = db.tables
163
- tables_with_counts = tables.inject({}) do |accum, table|
164
- accum[table] = db[table].count
165
- record_count += accum[table]
166
- accum
162
+ tables_with_counts = {}
163
+ record_count = db.tables.inject(0) do |record_count, table|
164
+ tables_with_counts[table] = db[table].count
165
+ record_count += tables_with_counts[table]
167
166
  end
168
167
 
169
168
  [ tables_with_counts, record_count ]
data/lib/taps/config.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'sequel'
2
2
  require 'sqlite3'
3
+ require 'yaml'
3
4
 
4
5
  module Taps
5
6
  def self.version_yml
data/lib/taps/utils.rb CHANGED
@@ -76,9 +76,11 @@ module Utils
76
76
  chunksize = old_chunksize
77
77
 
78
78
  retries = 0
79
+ time_in_db = 0
79
80
  begin
80
81
  t1 = Time.now
81
- yield chunksize
82
+ time_in_db = yield chunksize
83
+ time_in_db = time_in_db.to_f rescue 0
82
84
  rescue Errno::EPIPE, RestClient::RequestFailed
83
85
  retries += 1
84
86
  raise if retries > 2
@@ -92,7 +94,8 @@ module Utils
92
94
 
93
95
  t2 = Time.now
94
96
 
95
- diff = t2 - t1
97
+ diff = t2 - t1 - time_in_db
98
+
96
99
  new_chunksize = if retries > 0
97
100
  chunksize
98
101
  elsif diff > 3.0
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: taps
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.25
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 2
8
+ - 26
9
+ version: 0.2.26
5
10
  platform: ruby
6
11
  authors:
7
12
  - Ricardo Chimal, Jr.
@@ -10,72 +15,100 @@ autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
17
 
13
- date: 2010-02-11 00:00:00 -08:00
18
+ date: 2010-02-25 00:00:00 -08:00
14
19
  default_executable:
15
20
  dependencies:
16
21
  - !ruby/object:Gem::Dependency
17
22
  name: sinatra
18
- type: :runtime
19
- version_requirement:
20
- version_requirements: !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
21
25
  requirements:
22
26
  - - "="
23
27
  - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ - 9
31
+ - 2
24
32
  version: 0.9.2
25
- version:
33
+ type: :runtime
34
+ version_requirements: *id001
26
35
  - !ruby/object:Gem::Dependency
27
36
  name: activerecord
28
- type: :runtime
29
- version_requirement:
30
- version_requirements: !ruby/object:Gem::Requirement
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
31
39
  requirements:
32
40
  - - "="
33
41
  - !ruby/object:Gem::Version
42
+ segments:
43
+ - 2
44
+ - 2
45
+ - 2
34
46
  version: 2.2.2
35
- version:
47
+ type: :runtime
48
+ version_requirements: *id002
36
49
  - !ruby/object:Gem::Dependency
37
50
  name: thor
38
- type: :runtime
39
- version_requirement:
40
- version_requirements: !ruby/object:Gem::Requirement
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
41
53
  requirements:
42
54
  - - "="
43
55
  - !ruby/object:Gem::Version
56
+ segments:
57
+ - 0
58
+ - 9
59
+ - 9
44
60
  version: 0.9.9
45
- version:
61
+ type: :runtime
62
+ version_requirements: *id003
46
63
  - !ruby/object:Gem::Dependency
47
64
  name: rest-client
48
- type: :runtime
49
- version_requirement:
50
- version_requirements: !ruby/object:Gem::Requirement
65
+ prerelease: false
66
+ requirement: &id004 !ruby/object:Gem::Requirement
51
67
  requirements:
52
68
  - - ~>
53
69
  - !ruby/object:Gem::Version
70
+ segments:
71
+ - 1
72
+ - 3
73
+ - 0
54
74
  version: 1.3.0
55
- version:
75
+ type: :runtime
76
+ version_requirements: *id004
56
77
  - !ruby/object:Gem::Dependency
57
78
  name: sequel
58
- type: :runtime
59
- version_requirement:
60
- version_requirements: !ruby/object:Gem::Requirement
79
+ prerelease: false
80
+ requirement: &id005 !ruby/object:Gem::Requirement
61
81
  requirements:
62
82
  - - ">="
63
83
  - !ruby/object:Gem::Version
84
+ segments:
85
+ - 3
86
+ - 0
87
+ - 0
64
88
  version: 3.0.0
65
89
  - - <
66
90
  - !ruby/object:Gem::Version
91
+ segments:
92
+ - 3
93
+ - 1
94
+ - 0
67
95
  version: 3.1.0
68
- version:
96
+ type: :runtime
97
+ version_requirements: *id005
69
98
  - !ruby/object:Gem::Dependency
70
99
  name: sqlite3-ruby
71
- type: :runtime
72
- version_requirement:
73
- version_requirements: !ruby/object:Gem::Requirement
100
+ prerelease: false
101
+ requirement: &id006 !ruby/object:Gem::Requirement
74
102
  requirements:
75
103
  - - ~>
76
104
  - !ruby/object:Gem::Version
105
+ segments:
106
+ - 1
107
+ - 2
108
+ - 0
77
109
  version: 1.2.0
78
- version:
110
+ type: :runtime
111
+ version_requirements: *id006
79
112
  description: A simple database agnostic import/export app to transfer data to/from a remote database.
80
113
  email: ricardo@heroku.com
81
114
  executables:
@@ -125,24 +158,26 @@ required_ruby_version: !ruby/object:Gem::Requirement
125
158
  requirements:
126
159
  - - ">="
127
160
  - !ruby/object:Gem::Version
161
+ segments:
162
+ - 0
128
163
  version: "0"
129
- version:
130
164
  required_rubygems_version: !ruby/object:Gem::Requirement
131
165
  requirements:
132
166
  - - ">="
133
167
  - !ruby/object:Gem::Version
168
+ segments:
169
+ - 0
134
170
  version: "0"
135
- version:
136
171
  requirements: []
137
172
 
138
173
  rubyforge_project: taps
139
- rubygems_version: 1.3.5
174
+ rubygems_version: 1.3.6
140
175
  signing_key:
141
176
  specification_version: 3
142
177
  summary: simple database import/export app
143
178
  test_files:
144
- - spec/schema_spec.rb
179
+ - spec/base.rb
145
180
  - spec/client_session_spec.rb
146
- - spec/utils_spec.rb
181
+ - spec/schema_spec.rb
147
182
  - spec/server_spec.rb
148
- - spec/base.rb
183
+ - spec/utils_spec.rb