ydd 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.
- data/VERSION +1 -1
- data/lib/ydd.rb +1 -0
- data/lib/ydd/serialization_helper.rb +32 -2
- data/ydd.gemspec +16 -18
- metadata +8 -8
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/lib/ydd.rb
CHANGED
@@ -33,6 +33,17 @@ module YDD
|
|
33
33
|
end
|
34
34
|
|
35
35
|
class Load
|
36
|
+
def self.convert_from(char_enc)
|
37
|
+
@converter ||= {}
|
38
|
+
|
39
|
+
return @converter[char_enc] if @converter[char_enc].present?
|
40
|
+
|
41
|
+
if YDD.connection.encoding.eql? "UTF8"
|
42
|
+
puts "Creating a string converter from #{char_enc} that will ignore non-UTF8 characters."
|
43
|
+
@converter[char_enc] = Iconv.new('UTF-8//TRANSLIT//IGNORE', char_enc)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
36
47
|
def self.load(io, truncate = true)
|
37
48
|
YDD.connection.transaction do
|
38
49
|
load_documents(io, truncate)
|
@@ -60,17 +71,36 @@ module YDD
|
|
60
71
|
quoted_column_names = column_names.map { |column| YDD.connection.quote_column_name(column) }.join(',')
|
61
72
|
quoted_table_name = SerializationHelper::Utils.quote_table(table)
|
62
73
|
#records.sort_by! { |r| r['id'].to_i } if column_names.include? 'id'
|
74
|
+
#
|
63
75
|
records.each do |record|
|
64
|
-
quoted_values = record.zip(columns).map{|
|
76
|
+
quoted_values = record.zip(columns).map { |value_column| clean_column_value(value_column) }.join(",")
|
77
|
+
|
65
78
|
YDD.connection.execute("INSERT INTO #{quoted_table_name} (#{quoted_column_names}) VALUES (#{quoted_values})")
|
66
79
|
end
|
80
|
+
|
67
81
|
end
|
68
82
|
|
69
83
|
def self.reset_pk_sequence!(table_name)
|
70
84
|
if YDD.connection.respond_to?(:reset_pk_sequence!)
|
71
85
|
YDD.connection.reset_pk_sequence!(table_name)
|
72
86
|
end
|
73
|
-
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def self.clean_column_value(value_column)
|
90
|
+
value, column = value_column[0], value_column[1]
|
91
|
+
|
92
|
+
if value.present?
|
93
|
+
value = case column.type
|
94
|
+
when :string, :text
|
95
|
+
character_encoding = CharDet.detect(value)["encoding"]
|
96
|
+
convert_from(character_encoding).iconv(value + ' ')[0..-2]
|
97
|
+
else
|
98
|
+
value
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
YDD.connection.quote(value, column)
|
103
|
+
end
|
74
104
|
|
75
105
|
end
|
76
106
|
|
data/ydd.gemspec
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
# Generated by jeweler
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{ydd}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Adam Wiggins", "Orion Henry", "Darcy Laycock"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-05-25}
|
13
13
|
s.default_executable = %q{ydd}
|
14
14
|
s.description = %q{
|
15
15
|
YDD is a tool (a fork of yaml_db really) to make it generally easy
|
@@ -23,27 +23,25 @@ and the like.
|
|
23
23
|
]
|
24
24
|
s.files = [
|
25
25
|
".rvmrc",
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
26
|
+
"README.markdown",
|
27
|
+
"Rakefile",
|
28
|
+
"VERSION",
|
29
|
+
"bin/ydd",
|
30
|
+
"lib/ydd.rb",
|
31
|
+
"lib/ydd/application.rb",
|
32
|
+
"lib/ydd/data_manager.rb",
|
33
|
+
"lib/ydd/schema_manager.rb",
|
34
|
+
"lib/ydd/serialization_helper.rb",
|
35
|
+
"lib/ydd/yaml_db.rb",
|
36
|
+
"tasks/yaml_db_tasks.rake",
|
37
|
+
"ydd.gemspec"
|
38
38
|
]
|
39
39
|
s.homepage = %q{http://github.com/YouthTree/ydd}
|
40
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
41
40
|
s.require_paths = ["lib"]
|
42
|
-
s.rubygems_version = %q{1.
|
41
|
+
s.rubygems_version = %q{1.6.2}
|
43
42
|
s.summary = %q{ydd dumps / loads rails app databases for backup purposes.}
|
44
43
|
|
45
44
|
if s.respond_to? :specification_version then
|
46
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
47
45
|
s.specification_version = 3
|
48
46
|
|
49
47
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ydd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 23
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 2
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Adam Wiggins
|
@@ -17,7 +17,7 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date: 2011-
|
20
|
+
date: 2011-05-25 00:00:00 +08:00
|
21
21
|
default_executable: ydd
|
22
22
|
dependencies:
|
23
23
|
- !ruby/object:Gem::Dependency
|
@@ -96,8 +96,8 @@ homepage: http://github.com/YouthTree/ydd
|
|
96
96
|
licenses: []
|
97
97
|
|
98
98
|
post_install_message:
|
99
|
-
rdoc_options:
|
100
|
-
|
99
|
+
rdoc_options: []
|
100
|
+
|
101
101
|
require_paths:
|
102
102
|
- lib
|
103
103
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -121,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
121
121
|
requirements: []
|
122
122
|
|
123
123
|
rubyforge_project:
|
124
|
-
rubygems_version: 1.
|
124
|
+
rubygems_version: 1.6.2
|
125
125
|
signing_key:
|
126
126
|
specification_version: 3
|
127
127
|
summary: ydd dumps / loads rails app databases for backup purposes.
|