taps 0.2.4 → 0.2.5
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/README.rdoc +7 -0
- data/VERSION.yml +1 -1
- data/lib/taps/adapter_hacks.rb +21 -0
- data/lib/taps/adapter_hacks/invalid_text_limit.rb +13 -0
- data/lib/taps/adapter_hacks/non_rails_schema_dump.rb +15 -0
- data/lib/taps/client_session.rb +4 -2
- data/lib/taps/schema.rb +3 -16
- data/spec/schema_spec.rb +1 -0
- metadata +8 -5
data/README.rdoc
CHANGED
@@ -4,8 +4,14 @@ A simple database agnostic import/export app to transfer data to/from a remote d
|
|
4
4
|
|
5
5
|
== Usage: Server
|
6
6
|
|
7
|
+
Here's how you start a taps server
|
8
|
+
|
7
9
|
$ taps server postgres://localdbuser:localdbpass@localhost/dbname httpuser httppassword
|
8
10
|
|
11
|
+
You can also specify an encoding in the database url
|
12
|
+
|
13
|
+
$ taps server mysql://localdbuser:localdbpass@localhost/dbname?encoding=latin1 httpuser httppassword
|
14
|
+
|
9
15
|
== Usage: Client
|
10
16
|
|
11
17
|
When you want to pull down a database from a taps server
|
@@ -21,6 +27,7 @@ or when you want to push a local database to a taps server
|
|
21
27
|
* Blob data may not transfer properly, I suspect that SQLite3 is modifying some native ruby objects.
|
22
28
|
* Foreign Keys get lost in the schema transfer
|
23
29
|
* Large tables (>1 million rows with a large number of columns) get slower as the offset gets larger. This is due to it being inefficient having large offset values in queries.
|
30
|
+
* Character encoding problems should be more transparent but they're not, it usually involves looking at the server log to see the error.
|
24
31
|
|
25
32
|
== Meta
|
26
33
|
|
data/VERSION.yml
CHANGED
@@ -0,0 +1,21 @@
|
|
1
|
+
module Taps
|
2
|
+
module AdapterHacks
|
3
|
+
extend self
|
4
|
+
|
5
|
+
LIST = {
|
6
|
+
:all => ['non_rails_schema_dump'],
|
7
|
+
:mysql => ['invalid_text_limit'],
|
8
|
+
:postgresql => ['invalid_text_limit']
|
9
|
+
}
|
10
|
+
|
11
|
+
def load(adapter)
|
12
|
+
LIST[:all].each do |r|
|
13
|
+
require File.dirname(__FILE__) + "/adapter_hacks/#{r}"
|
14
|
+
end
|
15
|
+
|
16
|
+
(LIST[adapter.to_sym] || []).each do |r|
|
17
|
+
require File.dirname(__FILE__) + "/adapter_hacks/#{r}"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module ActiveRecord
|
2
|
+
module ConnectionAdapters
|
3
|
+
class TableDefinition
|
4
|
+
alias_method :original_text, :text
|
5
|
+
def text(*args)
|
6
|
+
options = args.extract_options!
|
7
|
+
options.delete(:limit)
|
8
|
+
column_names = args
|
9
|
+
column_names.each { |name| column(name, 'text', options) }
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/taps/client_session.rb
CHANGED
@@ -211,13 +211,15 @@ class ClientSession
|
|
211
211
|
|
212
212
|
index_data = session_resource['indexes'].get(:taps_version => Taps.version)
|
213
213
|
|
214
|
-
|
214
|
+
output = Taps::Utils.load_indexes(database_url, index_data)
|
215
|
+
puts output if output
|
215
216
|
end
|
216
217
|
|
217
218
|
def cmd_reset_sequences
|
218
219
|
puts "Resetting db sequences in #{database_url}"
|
219
220
|
|
220
|
-
|
221
|
+
output = `#{File.dirname(__FILE__)}/../../bin/schema reset_db_sequences #{database_url}`
|
222
|
+
puts output if output
|
221
223
|
end
|
222
224
|
|
223
225
|
def format_number(num)
|
data/lib/taps/schema.rb
CHANGED
@@ -3,6 +3,8 @@ require 'active_support'
|
|
3
3
|
require 'stringio'
|
4
4
|
require 'uri'
|
5
5
|
|
6
|
+
require File.dirname(__FILE__) + '/adapter_hacks'
|
7
|
+
|
6
8
|
module Taps
|
7
9
|
module Schema
|
8
10
|
extend self
|
@@ -23,6 +25,7 @@ module Schema
|
|
23
25
|
|
24
26
|
def connection(database_url)
|
25
27
|
config = create_config(database_url)
|
28
|
+
Taps::AdapterHacks.load(config['adapter'])
|
26
29
|
ActiveRecord::Base.establish_connection(config)
|
27
30
|
end
|
28
31
|
|
@@ -79,19 +82,3 @@ EORUBY
|
|
79
82
|
end
|
80
83
|
end
|
81
84
|
end
|
82
|
-
|
83
|
-
module ActiveRecord
|
84
|
-
class SchemaDumper
|
85
|
-
private
|
86
|
-
|
87
|
-
def header(stream)
|
88
|
-
stream.puts "ActiveRecord::Schema.define do"
|
89
|
-
end
|
90
|
-
|
91
|
-
def tables(stream)
|
92
|
-
@connection.tables.sort.each do |tbl|
|
93
|
-
table(tbl, stream)
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|
data/spec/schema_spec.rb
CHANGED
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.
|
4
|
+
version: 0.2.5
|
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-02-
|
13
|
+
date: 2009-02-24 00:00:00 -08:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -84,16 +84,19 @@ extra_rdoc_files: []
|
|
84
84
|
|
85
85
|
files:
|
86
86
|
- spec/base.rb
|
87
|
-
- spec/schema_spec.rb
|
88
87
|
- spec/utils_spec.rb
|
89
88
|
- spec/client_session_spec.rb
|
90
89
|
- spec/server_spec.rb
|
90
|
+
- spec/schema_spec.rb
|
91
91
|
- lib/taps/db_session.rb
|
92
92
|
- lib/taps/progress_bar.rb
|
93
93
|
- lib/taps/cli.rb
|
94
|
-
- lib/taps/config.rb
|
95
|
-
- lib/taps/schema.rb
|
96
94
|
- lib/taps/client_session.rb
|
95
|
+
- lib/taps/adapter_hacks/invalid_text_limit.rb
|
96
|
+
- lib/taps/adapter_hacks/non_rails_schema_dump.rb
|
97
|
+
- lib/taps/schema.rb
|
98
|
+
- lib/taps/adapter_hacks.rb
|
99
|
+
- lib/taps/config.rb
|
97
100
|
- lib/taps/server.rb
|
98
101
|
- lib/taps/utils.rb
|
99
102
|
- README.rdoc
|