taps 0.2.7 → 0.2.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,4 +1,4 @@
1
1
  ---
2
+ :patch: 8
2
3
  :major: 0
3
4
  :minor: 2
4
- :patch: 7
@@ -74,27 +74,32 @@ class ClientSession
74
74
  end
75
75
 
76
76
  def cmd_send_indexes
77
- puts "Sending schema indexes to remote taps server #{safe_remote_url} from local database #{safe_database_url}"
77
+ puts "Sending indexes"
78
78
 
79
79
  index_data = `#{File.dirname(__FILE__)}/../../bin/schema indexes #{database_url}`
80
80
  session_resource['indexes'].post(index_data, :taps_version => Taps.version)
81
81
  end
82
82
 
83
83
  def cmd_send_schema
84
- puts "Sending schema to remote taps server #{safe_remote_url} from local database #{safe_database_url}"
84
+ puts "Sending schema"
85
85
 
86
86
  schema_data = `#{File.dirname(__FILE__)}/../../bin/schema dump #{database_url}`
87
87
  session_resource['schema'].post(schema_data, :taps_version => Taps.version)
88
88
  end
89
89
 
90
90
  def cmd_send_reset_sequences
91
- puts "Resetting db sequences in remote taps server at #{safe_remote_url}"
91
+ puts "Resetting sequences"
92
92
 
93
93
  session_resource["reset_sequences"].post('', :taps_version => Taps.version)
94
94
  end
95
95
 
96
96
  def cmd_send_data
97
- puts "Sending schema and data from local database #{safe_database_url} to remote taps server at #{safe_remote_url}"
97
+ puts "Sending data"
98
+
99
+ tables_with_counts, record_count = fetch_tables_info
100
+
101
+ puts "#{tables_with_counts.size} tables, #{format_number(record_count)} records"
102
+
98
103
 
99
104
  db.tables.each do |table_name|
100
105
  table = db[table_name]
@@ -135,6 +140,17 @@ class ClientSession
135
140
  end
136
141
  end
137
142
 
143
+ def fetch_tables_info
144
+ record_count = 0
145
+ tables = db.tables
146
+ tables_with_counts = tables.inject({}) do |accum, table|
147
+ accum[table] = db[table].count
148
+ record_count += accum[table]
149
+ end
150
+
151
+ [ tables_with_counts, record_count ]
152
+ end
153
+
138
154
  def cmd_receive
139
155
  verify_server
140
156
  cmd_receive_schema
@@ -144,9 +160,9 @@ class ClientSession
144
160
  end
145
161
 
146
162
  def cmd_receive_data
147
- puts "Receiving data from remote taps server #{safe_remote_url} into local database #{safe_database_url}"
163
+ puts "Receiving data"
148
164
 
149
- tables_with_counts, record_count = fetch_tables_info
165
+ tables_with_counts, record_count = fetch_remote_tables_info
150
166
 
151
167
  puts "#{tables_with_counts.size} tables, #{format_number(record_count)} records"
152
168
 
@@ -194,7 +210,7 @@ class ClientSession
194
210
  [chunksize, rows]
195
211
  end
196
212
 
197
- def fetch_tables_info
213
+ def fetch_remote_tables_info
198
214
  retries = 0
199
215
  max_retries = 1
200
216
  begin
@@ -211,7 +227,7 @@ class ClientSession
211
227
  end
212
228
 
213
229
  def cmd_receive_schema
214
- puts "Receiving schema from remote taps server #{safe_remote_url} into local database #{safe_database_url}"
230
+ puts "Receiving schema"
215
231
 
216
232
  schema_data = session_resource['schema'].get(:taps_version => Taps.version)
217
233
  output = Taps::Utils.load_schema(database_url, schema_data)
@@ -219,7 +235,7 @@ class ClientSession
219
235
  end
220
236
 
221
237
  def cmd_receive_indexes
222
- puts "Receiving schema indexes from remote taps server #{safe_remote_url} into local database #{safe_database_url}"
238
+ puts "Receiving indexes"
223
239
 
224
240
  index_data = session_resource['indexes'].get(:taps_version => Taps.version)
225
241
 
@@ -228,7 +244,7 @@ class ClientSession
228
244
  end
229
245
 
230
246
  def cmd_reset_sequences
231
- puts "Resetting db sequences in #{safe_database_url}"
247
+ puts "Resetting sequences"
232
248
 
233
249
  output = `#{File.dirname(__FILE__)}/../../bin/schema reset_db_sequences #{database_url}`
234
250
  puts output if output
@@ -127,7 +127,7 @@ class ProgressBar
127
127
  data = [0, 0, 0, 0].pack("SSSS")
128
128
  if @out.ioctl(tiocgwinsz, data) >= 0 then
129
129
  rows, cols, xpixels, ypixels = data.unpack("SSSS")
130
- if cols >= 0 then cols else default_width end
130
+ if cols > 0 then cols else default_width end
131
131
  else
132
132
  default_width
133
133
  end
@@ -27,7 +27,9 @@ module Schema
27
27
 
28
28
  def sqlite_config(url)
29
29
  m = %r{(sqlite3?)://(.+)}.match(url)
30
- { 'adapter' => 'sqlite3', 'database' => m[2] }
30
+ database = m[2]
31
+ database, q = database.split('?')
32
+ { 'adapter' => 'sqlite3', 'database' => database }
31
33
  end
32
34
 
33
35
  def connection(database_url)
@@ -49,7 +49,7 @@ describe Taps::ClientSession do
49
49
  @progressbar.stubs(:inc)
50
50
  @progressbar.stubs(:finish)
51
51
  @mytable = mock('mytable')
52
- @client.expects(:fetch_tables_info).returns([ { :mytable => 2 }, 2 ])
52
+ @client.expects(:fetch_remote_tables_info).returns([ { :mytable => 2 }, 2 ])
53
53
  @client.stubs(:db).returns(mock('db'))
54
54
  @client.db.stubs(:[]).with(:mytable).returns(@mytable)
55
55
  @client.expects(:fetch_table_rows).with(:mytable, 1000, 0).returns([ 1000, { :header => [:x, :y], :data => [[1, 2], [3, 4]] } ])
@@ -59,11 +59,11 @@ describe Taps::ClientSession do
59
59
  lambda { @client.cmd_receive_data }.should.not.raise
60
60
  end
61
61
 
62
- it "fetches tables info from taps server" do
62
+ it "fetches remote tables info from taps server" do
63
63
  @marshal_data = Marshal.dump({ :mytable => 2 })
64
64
  @client.session_resource.stubs(:[]).with('tables').returns(mock('tables'))
65
65
  @client.session_resource['tables'].stubs(:get).with(:taps_version => Taps.version).returns(@marshal_data)
66
- @client.fetch_tables_info.should == [ { :mytable => 2 }, 2 ]
66
+ @client.fetch_remote_tables_info.should == [ { :mytable => 2 }, 2 ]
67
67
  end
68
68
 
69
69
  it "fetches table rows given a chunksize and offset from taps server" do
@@ -25,6 +25,7 @@ describe Taps::Schema do
25
25
  it "translates sqlite database path" do
26
26
  Taps::Schema.create_config("sqlite://pathtodb/mydb")['database'].should == 'pathtodb/mydb'
27
27
  Taps::Schema.create_config("sqlite:///pathtodb/mydb")['database'].should == '/pathtodb/mydb'
28
+ Taps::Schema.create_config("sqlite:///pathtodb/mydb?encoding=utf8")['database'].should == '/pathtodb/mydb'
28
29
  end
29
30
 
30
31
  it "connects activerecord to the database" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: taps
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ricardo Chimal, Jr.
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2009-03-04 00:00:00 -08:00
13
+ date: 2009-03-16 00:00:00 -07:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -89,16 +89,16 @@ files:
89
89
  - spec/client_session_spec.rb
90
90
  - spec/schema_spec.rb
91
91
  - lib/taps/db_session.rb
92
- - lib/taps/client_session.rb
93
92
  - lib/taps/progress_bar.rb
93
+ - lib/taps/server.rb
94
94
  - lib/taps/cli.rb
95
95
  - lib/taps/adapter_hacks.rb
96
96
  - lib/taps/adapter_hacks/invalid_text_limit.rb
97
97
  - lib/taps/adapter_hacks/non_rails_schema_dump.rb
98
- - lib/taps/server.rb
99
98
  - lib/taps/schema.rb
100
- - lib/taps/config.rb
99
+ - lib/taps/client_session.rb
101
100
  - lib/taps/utils.rb
101
+ - lib/taps/config.rb
102
102
  - README.rdoc
103
103
  - LICENSE
104
104
  - VERSION.yml