yaml_db 0.5.0 → 0.6.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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/yaml_db.rb +0 -1
- data/lib/yaml_db/serialization_helper.rb +9 -8
- data/lib/yaml_db/version.rb +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 97ea4b448b5e237251d13e2c8b5393a594105e56
|
4
|
+
data.tar.gz: 98c49ef9d688d45c18bc94cda62a8816969cc2b0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac7599aa51c7a3ee0237d849c008cb48abdb9d63fd3ff83ead8bf811fb06bf7e44ceb576a4beb4ff3635a0ac0b6fb4643f65a58d14cf6de4aff669e8c3a3984b
|
7
|
+
data.tar.gz: ed53717fa314f06618fd810f880ace40400b3be74a57d6814cfe7b9844d29c2288ee148232d2aca5bc200b329d68efedb1a9aa63963237376d1e94275dfe9e00
|
data/README.md
CHANGED
@@ -6,7 +6,7 @@ This can be used as a replacement for mysqldump or pg_dump, but only for the dat
|
|
6
6
|
|
7
7
|
Any database that has an ActiveRecord adapter should work.
|
8
8
|
|
9
|
-
This gem supports Rails 3.
|
9
|
+
This gem supports Rails versions 3.0 through 5.1.
|
10
10
|
|
11
11
|
[](https://travis-ci.org/yamldb/yaml_db)
|
12
12
|
|
data/lib/yaml_db.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'active_support/core_ext/kernel/reporting'
|
2
|
+
|
1
3
|
module YamlDb
|
2
4
|
module SerializationHelper
|
3
5
|
|
@@ -83,11 +85,10 @@ module YamlDb
|
|
83
85
|
if column_names.nil?
|
84
86
|
return
|
85
87
|
end
|
86
|
-
columns = column_names.map{|cn| ActiveRecord::Base.connection.columns(table).detect{|c| c.name == cn}}
|
87
88
|
quoted_column_names = column_names.map { |column| ActiveRecord::Base.connection.quote_column_name(column) }.join(',')
|
88
89
|
quoted_table_name = Utils.quote_table(table)
|
89
90
|
records.each do |record|
|
90
|
-
quoted_values = record.
|
91
|
+
quoted_values = record.map{|c| ActiveRecord::Base.connection.quote(c)}.join(',')
|
91
92
|
ActiveRecord::Base.connection.execute("INSERT INTO #{quoted_table_name} (#{quoted_column_names}) VALUES (#{quoted_values})")
|
92
93
|
end
|
93
94
|
end
|
@@ -182,12 +183,12 @@ module YamlDb
|
|
182
183
|
def self.each_table_page(table, records_per_page=1000)
|
183
184
|
total_count = table_record_count(table)
|
184
185
|
pages = (total_count.to_f / records_per_page).ceil - 1
|
185
|
-
|
186
|
+
keys = sort_keys(table)
|
186
187
|
boolean_columns = Utils.boolean_columns(table)
|
187
188
|
quoted_table_name = Utils.quote_table(table)
|
188
189
|
|
189
190
|
(0..pages).to_a.each do |page|
|
190
|
-
query = Arel::Table.new(table).order(
|
191
|
+
query = Arel::Table.new(table).order(*keys).skip(records_per_page*page).take(records_per_page).project(Arel.sql('*'))
|
191
192
|
records = ActiveRecord::Base.connection.select_all(query.to_sql)
|
192
193
|
records = Utils.convert_booleans(records, boolean_columns)
|
193
194
|
yield records
|
@@ -198,15 +199,15 @@ module YamlDb
|
|
198
199
|
ActiveRecord::Base.connection.select_one("SELECT COUNT(*) FROM #{Utils.quote_table(table)}").values.first.to_i
|
199
200
|
end
|
200
201
|
|
201
|
-
#
|
202
|
-
# standard
|
203
|
-
def self.
|
202
|
+
# Return the first column as sort key unless the table looks like a
|
203
|
+
# standard has_and_belongs_to_many join table, in which case add the second "ID column"
|
204
|
+
def self.sort_keys(table)
|
204
205
|
first_column, second_column = table_column_names(table)
|
205
206
|
|
206
207
|
if [first_column, second_column].all? { |name| name =~ /_id$/ }
|
207
208
|
[Utils.quote_column(first_column), Utils.quote_column(second_column)]
|
208
209
|
else
|
209
|
-
Utils.quote_column(first_column)
|
210
|
+
[Utils.quote_column(first_column)]
|
210
211
|
end
|
211
212
|
end
|
212
213
|
end
|
data/lib/yaml_db/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yaml_db
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Wiggins
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-05-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -20,7 +20,7 @@ dependencies:
|
|
20
20
|
version: '3.0'
|
21
21
|
- - "<"
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: '5.
|
23
|
+
version: '5.2'
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
26
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -30,7 +30,7 @@ dependencies:
|
|
30
30
|
version: '3.0'
|
31
31
|
- - "<"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '5.
|
33
|
+
version: '5.2'
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
35
|
name: rake
|
36
36
|
requirement: !ruby/object:Gem::Requirement
|
@@ -51,14 +51,14 @@ dependencies:
|
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '1.
|
54
|
+
version: '1.14'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
57
|
version_requirements: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '1.
|
61
|
+
version: '1.14'
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
63
|
name: rspec
|
64
64
|
requirement: !ruby/object:Gem::Requirement
|
@@ -125,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
125
125
|
version: '0'
|
126
126
|
requirements: []
|
127
127
|
rubyforge_project:
|
128
|
-
rubygems_version: 2.
|
128
|
+
rubygems_version: 2.5.1
|
129
129
|
signing_key:
|
130
130
|
specification_version: 4
|
131
131
|
summary: yaml_db allows export/import of database into/from yaml files
|