arql 0.2.14 → 0.3.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/Gemfile.lock +5 -5
- data/arql.gemspec +1 -1
- data/lib/arql.rb +1 -0
- data/lib/arql/app.rb +3 -2
- data/lib/arql/connection.rb +3 -0
- data/lib/arql/definition.rb +11 -0
- data/lib/arql/ext/array.rb +9 -0
- data/lib/arql/ext/kernel.rb +1 -1
- data/lib/arql/ext/string.rb +8 -0
- data/lib/arql/mysqldump.rb +44 -0
- data/lib/arql/version.rb +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d63702948cb453c9e8fe42743024faa3cb1c7102a2ba592076d7a1005f64392b
|
4
|
+
data.tar.gz: 42c4e35504a6334990283aa0cc433a507339d4dd1bfb804bb81454d57b7187eb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 668284267a0469734710a9b5c7490116af4ebeb75de5c6754d8f9e733c409b4798a5d4b3216eb55f8d7b50569502d84fb22cc2a1bdf896d330d4ae0ce7ca4af6
|
7
|
+
data.tar.gz: bdf6f3900ba0b936cfa2a0d48dccc981215f2f2f1a6397b907d4e81de430f99d87bf2d22faa6b3f0fb16281b5a1b83ccbfd03e0f6f7b7d4783fc1090fc796b55
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
arql (0.
|
4
|
+
arql (0.3.0)
|
5
5
|
activerecord (~> 6.0.3)
|
6
6
|
activesupport (~> 6.0.3)
|
7
7
|
caxlsx (~> 3.0.2)
|
@@ -32,7 +32,7 @@ GEM
|
|
32
32
|
tzinfo (~> 1.1)
|
33
33
|
zeitwerk (~> 2.2, >= 2.2.2)
|
34
34
|
byebug (11.1.3)
|
35
|
-
caxlsx (3.0.
|
35
|
+
caxlsx (3.0.4)
|
36
36
|
htmlentities (~> 4.3, >= 4.3.4)
|
37
37
|
mimemagic (~> 0.3)
|
38
38
|
nokogiri (~> 1.10, >= 1.10.4)
|
@@ -74,10 +74,10 @@ GEM
|
|
74
74
|
terminal-table (1.8.0)
|
75
75
|
unicode-display_width (~> 1.1, >= 1.1.1)
|
76
76
|
thread_safe (0.3.6)
|
77
|
-
tzinfo (1.2.
|
77
|
+
tzinfo (1.2.9)
|
78
78
|
thread_safe (~> 0.1)
|
79
79
|
unicode-display_width (1.7.0)
|
80
|
-
yard (0.9.
|
80
|
+
yard (0.9.26)
|
81
81
|
zeitwerk (2.4.2)
|
82
82
|
|
83
83
|
PLATFORMS
|
@@ -88,4 +88,4 @@ DEPENDENCIES
|
|
88
88
|
rake (~> 12.0)
|
89
89
|
|
90
90
|
BUNDLED WITH
|
91
|
-
2.
|
91
|
+
2.2.3
|
data/arql.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.description = %{Use ActiveRecord and Pry as your favorite SQL query editor.}
|
11
11
|
spec.homepage = "https://github.com/lululau/arql"
|
12
12
|
spec.license = "MIT"
|
13
|
-
spec.required_ruby_version = Gem::Requirement.new(">= 2.
|
13
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 2.6.0")
|
14
14
|
|
15
15
|
|
16
16
|
|
data/lib/arql.rb
CHANGED
data/lib/arql/app.rb
CHANGED
@@ -4,7 +4,7 @@ module Arql
|
|
4
4
|
class App
|
5
5
|
|
6
6
|
class << self
|
7
|
-
attr_accessor :log_io, :env, :prompt, :instance
|
7
|
+
attr_accessor :log_io, :env, :prompt, :instance, :connect_options
|
8
8
|
|
9
9
|
def config
|
10
10
|
@@effective_config
|
@@ -27,7 +27,8 @@ module Arql
|
|
27
27
|
require "arql/definition"
|
28
28
|
@options = options
|
29
29
|
App.env = @options.env
|
30
|
-
|
30
|
+
App.connect_options = connect_options
|
31
|
+
Connection.open(App.connect_options)
|
31
32
|
@definition = Definition.new(effective_config)
|
32
33
|
load_initializer!
|
33
34
|
App.instance = self
|
data/lib/arql/connection.rb
CHANGED
@@ -4,6 +4,9 @@ module Arql
|
|
4
4
|
def open(options)
|
5
5
|
ActiveRecord::Base.establish_connection(options)
|
6
6
|
$C = ActiveRecord::Base.connection
|
7
|
+
$C.define_singleton_method(:dump) do |filename, no_create_db=false|
|
8
|
+
Arql::Mysqldump.new.dump_database(filename, no_create_db)
|
9
|
+
end
|
7
10
|
end
|
8
11
|
end
|
9
12
|
end
|
data/lib/arql/definition.rb
CHANGED
@@ -35,6 +35,10 @@ module Arql
|
|
35
35
|
[self].write_excel(filename, *fields, **options)
|
36
36
|
end
|
37
37
|
|
38
|
+
def dump(filename, batch_size=500)
|
39
|
+
[self].dump(filename, batch_size)
|
40
|
+
end
|
41
|
+
|
38
42
|
included do
|
39
43
|
end
|
40
44
|
|
@@ -66,6 +70,10 @@ module Arql
|
|
66
70
|
def to_create_sql
|
67
71
|
ActiveRecord::Base.connection.exec_query("show create table #{table_name}").rows.last.last
|
68
72
|
end
|
73
|
+
|
74
|
+
def dump(filename, no_create_table=false)
|
75
|
+
Arql::Mysqldump.new.dump_table(filename, table_name, no_create_table)
|
76
|
+
end
|
69
77
|
end
|
70
78
|
end
|
71
79
|
|
@@ -237,6 +245,9 @@ module Arql
|
|
237
245
|
records.write_excel(filename, *fields, **options)
|
238
246
|
end
|
239
247
|
|
248
|
+
def dump(filename, batch_size=500)
|
249
|
+
records.dump(filename, batch_size)
|
250
|
+
end
|
240
251
|
end
|
241
252
|
end
|
242
253
|
end
|
data/lib/arql/ext/array.rb
CHANGED
@@ -127,4 +127,13 @@ class Array
|
|
127
127
|
end
|
128
128
|
end
|
129
129
|
end
|
130
|
+
|
131
|
+
def dump(filename, batch_size=500)
|
132
|
+
File.open(File.expand_path(filename), 'w') do |file|
|
133
|
+
group_by(&:class).each do |(klass, records)|
|
134
|
+
file.puts(klass.to_upsert_sql(records, batch_size))
|
135
|
+
end
|
136
|
+
end
|
137
|
+
{size: size, file: File.expand_path(filename)}
|
138
|
+
end
|
130
139
|
end
|
data/lib/arql/ext/kernel.rb
CHANGED
data/lib/arql/ext/string.rb
CHANGED
@@ -0,0 +1,44 @@
|
|
1
|
+
module Arql
|
2
|
+
class Mysqldump
|
3
|
+
|
4
|
+
def initialize(options = nil)
|
5
|
+
options ||= App.connect_options
|
6
|
+
@options = options
|
7
|
+
if options[:socket]
|
8
|
+
port_or_sock = "-S #{options[:socket]}"
|
9
|
+
else
|
10
|
+
port_or_sock = "-P #{options[:port] || 3306}"
|
11
|
+
end
|
12
|
+
@base_dump_cmd = "mysqldump -u %{user} -h %{host} %{port_or_sock} %{password} --skip-lock-tables " % {
|
13
|
+
user: options[:username],
|
14
|
+
host: options[:host],
|
15
|
+
password: options[:password].presence.try { |e| "-p#{e}" } || '',
|
16
|
+
port_or_sock: port_or_sock
|
17
|
+
}
|
18
|
+
end
|
19
|
+
|
20
|
+
def dump_table(filename, table_name, no_create_table = false)
|
21
|
+
system dump_table_cmd(table_name, no_create_table) + " > #{filename}"
|
22
|
+
end
|
23
|
+
|
24
|
+
def dump_database(filename, no_create_db = false)
|
25
|
+
system dump_database_cmd(no_create_db) + " > #{filename}"
|
26
|
+
end
|
27
|
+
|
28
|
+
def dump_table_cmd(table_name, no_create_table = false)
|
29
|
+
@base_dump_cmd + " " + if no_create_table
|
30
|
+
"--no-create-info #{@options[:database]} #{table_name}"
|
31
|
+
else
|
32
|
+
"--add-drop-table #{@options[:database]} #{table_name}"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def dump_database_cmd(no_create_db = false)
|
37
|
+
@base_dump_cmd + " " + if no_create_db
|
38
|
+
"--no-create-db --add-drop-database --databases #{@options[:database]}"
|
39
|
+
else
|
40
|
+
"--add-drop-database --add-drop-table --databases #{@options[:database]}"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
data/lib/arql/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Liu Xiang
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-01-
|
11
|
+
date: 2021-01-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mysql2
|
@@ -251,6 +251,7 @@ files:
|
|
251
251
|
- lib/arql/ext/time.rb
|
252
252
|
- lib/arql/id.rb
|
253
253
|
- lib/arql/multi_io.rb
|
254
|
+
- lib/arql/mysqldump.rb
|
254
255
|
- lib/arql/repl.rb
|
255
256
|
- lib/arql/ssh_proxy.rb
|
256
257
|
- lib/arql/ssh_proxy_patch.rb
|
@@ -267,14 +268,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
267
268
|
requirements:
|
268
269
|
- - ">="
|
269
270
|
- !ruby/object:Gem::Version
|
270
|
-
version: 2.
|
271
|
+
version: 2.6.0
|
271
272
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
272
273
|
requirements:
|
273
274
|
- - ">="
|
274
275
|
- !ruby/object:Gem::Version
|
275
276
|
version: '0'
|
276
277
|
requirements: []
|
277
|
-
rubygems_version: 3.
|
278
|
+
rubygems_version: 3.2.3
|
278
279
|
signing_key:
|
279
280
|
specification_version: 4
|
280
281
|
summary: Rails ActiveRecord + Pry is the best SQL query editor
|