ydd 0.2.0 → 0.2.1

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/.rvmrc CHANGED
@@ -1 +1 @@
1
- rvm --create use "@ydd"
1
+ rvm --create use "ree@ydd"
data/Rakefile CHANGED
@@ -15,6 +15,7 @@ and the like.
15
15
  gem.authors = ["Adam Wiggins","Orion Henry", "Darcy Laycock"]
16
16
  gem.add_dependency 'thor', '~> 0.14'
17
17
  gem.add_dependency 'activesupport'
18
+ gem.add_dependency 'rchardet'
18
19
  # We want it to work with Rails 3 etc, older versions of AR will fail though.
19
20
  gem.add_dependency 'activerecord', '>= 2.3'
20
21
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.2.1
data/lib/ydd.rb CHANGED
@@ -3,11 +3,12 @@ require 'active_support'
3
3
  require 'active_support/all'
4
4
  require 'active_record'
5
5
  require 'fileutils'
6
+ require 'iconv'
6
7
  require 'rchardet'
7
8
 
8
9
  module YDD
9
10
  class Error < StandardError; end
10
-
11
+
11
12
  autoload :SchemaManager, 'ydd/schema_manager'
12
13
  autoload :DataManager, 'ydd/data_manager'
13
14
  autoload :YamlDB, 'ydd/yaml_db'
@@ -15,15 +16,15 @@ module YDD
15
16
  autoload :Application, 'ydd/application'
16
17
 
17
18
  mattr_accessor :skip_schema, :skip_data
18
-
19
+
19
20
  def self.skip_schema?
20
21
  !!skip_schema
21
22
  end
22
-
23
+
23
24
  def self.schema_tables
24
25
  [ 'schema_info', 'schema_migrations' ]
25
26
  end
26
-
27
+
27
28
  def self.skip_data?
28
29
  !!skip_data
29
30
  end
@@ -31,7 +32,7 @@ module YDD
31
32
  def self.tables=(value)
32
33
  @@tables = value.blank? ? nil : Array(value).join(",").split(",")
33
34
  end
34
-
35
+
35
36
  def self.tables
36
37
  @@tables ||= nil
37
38
  end
@@ -43,57 +44,57 @@ module YDD
43
44
  @@env = value
44
45
  end
45
46
  end
46
-
47
+
47
48
  def self.env
48
49
  @@env ||= (ENV['YDD_ENV'] || ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'development')
49
50
  end
50
-
51
+
51
52
  def self.connection
52
53
  ActiveRecord::Base.connection
53
54
  end
54
-
55
+
55
56
  def self.configuration_from(file)
56
57
  require 'erb'
57
58
  parsed = ERB.new(File.read(file)).result
58
59
  YAML.load(parsed)[env]
59
60
  end
60
-
61
+
61
62
  def self.connect_from(path)
62
63
  raise Error, "Invalid database config at #{path}" if !File.exists?(path)
63
64
  connect configuration_from(path)
64
65
  end
65
-
66
+
66
67
  def self.connect(specification)
67
68
  ActiveRecord::Base.establish_connection(specification)
68
69
  end
69
-
70
+
70
71
  def self.dump(directory)
71
72
  FileUtils.mkdir_p directory
72
73
  SchemaManager.dump File.join(directory, "schema.rb") unless skip_schema?
73
74
  DataManager.dump File.join(directory, "data.yml") unless skip_data?
74
75
  end
75
-
76
+
76
77
  def self.load(directory)
77
78
  if !File.directory?(directory)
78
79
  raise Error, "Please provide a valid directory - #{directory} doesn't exist."
79
80
  end
80
-
81
+
81
82
  unless skip_schema?
82
83
  check_files! directory, "schema.rb"
83
- SchemaManager.load File.join(directory, "schema.rb")
84
+ SchemaManager.load File.join(directory, "schema.rb")
84
85
  end
85
-
86
+
86
87
  unless skip_data?
87
88
  check_files! directory, "data.yml"
88
89
  DataManager.load File.join(directory, "data.yml")
89
90
  end
90
91
  end
91
-
92
+
92
93
  def self.check_files!(dir, *files)
93
94
  files.each do |file|
94
95
  path = File.join(dir, file)
95
96
  raise Error, "#{file} doesn't exist in #{dir}" if !File.readable?(path)
96
97
  end
97
98
  end
98
-
99
+
99
100
  end
@@ -1,15 +1,15 @@
1
1
  module YDD
2
2
  class SchemaManager
3
-
3
+
4
4
  def self.dump(path)
5
5
  File.open(path, "w") do |file|
6
6
  ActiveRecord::SchemaDumper.dump(YDD.connection, file)
7
7
  end
8
8
  end
9
-
9
+
10
10
  def self.load(path)
11
11
  Kernel.load path if File.exists?(path)
12
12
  end
13
-
13
+
14
14
  end
15
15
  end
@@ -31,19 +31,28 @@ module YDD
31
31
  ActiveRecord::Base.logger = @@old_logger
32
32
  end
33
33
  end
34
-
34
+
35
+ class IdentityConvertor
36
+ def self.iconv(string)
37
+ string.to_s
38
+ end
39
+ end
40
+
41
+
35
42
  class Load
36
43
  def self.convert_from(char_enc)
37
44
  @converter ||= {}
38
-
45
+
39
46
  return @converter[char_enc] if @converter[char_enc].present?
40
-
47
+
41
48
  if YDD.connection.encoding.eql? "UTF8"
42
49
  puts "Creating a string converter from #{char_enc} that will ignore non-UTF8 characters."
43
50
  @converter[char_enc] = Iconv.new('UTF-8//TRANSLIT//IGNORE', char_enc)
44
51
  end
52
+
53
+ @converter.fetch(char_enc, IdentityConvertor)
45
54
  end
46
-
55
+
47
56
  def self.load(io, truncate = true)
48
57
  YDD.connection.transaction do
49
58
  load_documents(io, truncate)
@@ -71,21 +80,21 @@ module YDD
71
80
  quoted_column_names = column_names.map { |column| YDD.connection.quote_column_name(column) }.join(',')
72
81
  quoted_table_name = SerializationHelper::Utils.quote_table(table)
73
82
  #records.sort_by! { |r| r['id'].to_i } if column_names.include? 'id'
74
- #
83
+ #
75
84
  records.each do |record|
76
85
  quoted_values = record.zip(columns).map { |value_column| clean_column_value(value_column) }.join(",")
77
-
86
+
78
87
  YDD.connection.execute("INSERT INTO #{quoted_table_name} (#{quoted_column_names}) VALUES (#{quoted_values})")
79
88
  end
80
-
89
+
81
90
  end
82
91
 
83
92
  def self.reset_pk_sequence!(table_name)
84
93
  if YDD.connection.respond_to?(:reset_pk_sequence!)
85
94
  YDD.connection.reset_pk_sequence!(table_name)
86
95
  end
87
- end
88
-
96
+ end
97
+
89
98
  def self.clean_column_value(value_column)
90
99
  value, column = value_column[0], value_column[1]
91
100
 
@@ -98,9 +107,9 @@ module YDD
98
107
  value
99
108
  end
100
109
  end
101
-
110
+
102
111
  YDD.connection.quote(value, column)
103
- end
112
+ end
104
113
 
105
114
  end
106
115
 
@@ -163,7 +172,7 @@ module YDD
163
172
  base_tables = YDD.connection.tables
164
173
  base_tables &= YDD.tables if YDD.tables.present?
165
174
  base_tables.reject! { |table| YDD.schema_tables.include?(table) } if YDD.skip_schema?
166
- base_tables
175
+ base_tables
167
176
  end
168
177
 
169
178
  def self.dump_table(io, table)
@@ -183,7 +192,7 @@ module YDD
183
192
  pages = (total_count.to_f / records_per_page).ceil - 1
184
193
  id = table_column_names(table).first
185
194
  boolean_columns = SerializationHelper::Utils.boolean_columns(table)
186
- quoted_table_name = SerializationHelper::Utils.quote_table(table)
195
+ quoted_table_name = SerializationHelper::Utils.quote_table(table)
187
196
  base_query = "SELECT * FROM #{quoted_table_name} ORDER BY #{id}"
188
197
  0.upto(pages) do |page|
189
198
  sql = YDD.connection.add_limit_offset! base_query.dup,
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{ydd}
8
- s.version = "0.2.0"
8
+ s.version = "0.2.1"
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-05-25}
12
+ s.date = %q{2011-05-31}
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
@@ -47,15 +47,18 @@ and the like.
47
47
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
48
48
  s.add_runtime_dependency(%q<thor>, ["~> 0.14"])
49
49
  s.add_runtime_dependency(%q<activesupport>, [">= 0"])
50
+ s.add_runtime_dependency(%q<rchardet>, [">= 0"])
50
51
  s.add_runtime_dependency(%q<activerecord>, [">= 2.3"])
51
52
  else
52
53
  s.add_dependency(%q<thor>, ["~> 0.14"])
53
54
  s.add_dependency(%q<activesupport>, [">= 0"])
55
+ s.add_dependency(%q<rchardet>, [">= 0"])
54
56
  s.add_dependency(%q<activerecord>, [">= 2.3"])
55
57
  end
56
58
  else
57
59
  s.add_dependency(%q<thor>, ["~> 0.14"])
58
60
  s.add_dependency(%q<activesupport>, [">= 0"])
61
+ s.add_dependency(%q<rchardet>, [">= 0"])
59
62
  s.add_dependency(%q<activerecord>, [">= 2.3"])
60
63
  end
61
64
  end
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: 23
4
+ hash: 21
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 0
10
- version: 0.2.0
9
+ - 1
10
+ version: 0.2.1
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-05-25 00:00:00 +08:00
20
+ date: 2011-05-31 00:00:00 +08:00
21
21
  default_executable: ydd
22
22
  dependencies:
23
23
  - !ruby/object:Gem::Dependency
@@ -50,9 +50,23 @@ dependencies:
50
50
  type: :runtime
51
51
  version_requirements: *id002
52
52
  - !ruby/object:Gem::Dependency
53
- name: activerecord
53
+ name: rchardet
54
54
  prerelease: false
55
55
  requirement: &id003 !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ hash: 3
61
+ segments:
62
+ - 0
63
+ version: "0"
64
+ type: :runtime
65
+ version_requirements: *id003
66
+ - !ruby/object:Gem::Dependency
67
+ name: activerecord
68
+ prerelease: false
69
+ requirement: &id004 !ruby/object:Gem::Requirement
56
70
  none: false
57
71
  requirements:
58
72
  - - ">="
@@ -63,7 +77,7 @@ dependencies:
63
77
  - 3
64
78
  version: "2.3"
65
79
  type: :runtime
66
- version_requirements: *id003
80
+ version_requirements: *id004
67
81
  description: |
68
82
 
69
83
  YDD is a tool (a fork of yaml_db really) to make it generally easy