arql 0.1.20 → 0.1.25

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b383963c2e71446f35b3eba8c9ff365698d93f377407f17e81d4775b5a841bab
4
- data.tar.gz: 1efd73946f5f238a90f5d74370525460c25f3a930de2689ca47201cd43f76549
3
+ metadata.gz: 5129e08083a8abbbed19d1fc8e37d6c1cb5ec82116eb4915574ccf51fbab4604
4
+ data.tar.gz: 1743d1604a65793c6e36fa85ba1b6cc967a1b626bc2e0c6fb5e66611a9cec6d0
5
5
  SHA512:
6
- metadata.gz: bc2581c870cd2102fddc37208145c7b84ab3806460de23c2289fafb494b74625aa0ec8fa4a44fdaf06cc18caf6048426a475149df55138c4bc17bbd1d06ca64c
7
- data.tar.gz: a42fc963d40ffb65fb21db348321208202c2bd84c89d299e4863143bffd7436fa62591e7d52fe4f3bd9efcc02332872b85fdb76999c132329b9fdd37ddb5cb08
6
+ metadata.gz: bacfc17e2ddeb7791d6985a990fef8e1eec38a20f4073d6b2b878f0cbeacbcf1fd75b6e326b178d6c7767034810af11720bd1b6324bd5b22c817ee1d60cb79fe
7
+ data.tar.gz: c35ad64535fcd18840882ab2c415a68a6899db0227ed47a490560548972f2b5a1cb0533842f1d4f6714ce7b37e3c1b6605dbfb34a48090dc6cb12aca76af46bd
@@ -1,14 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- arql (0.1.19)
4
+ arql (0.1.25)
5
5
  activerecord (~> 6.0.3)
6
- activerecord-oracle_enhanced-adapter
7
- activerecord-sqlserver-adapter
8
6
  activesupport (~> 6.0.3)
9
7
  mysql2 (~> 0.5.3)
10
8
  net-ssh-gateway (~> 2.0.0)
11
- pg (>= 0.18, < 2.0)
12
9
  pry (~> 0.13.1)
13
10
  pry-byebug (~> 3.9.0)
14
11
  pry-doc (~> 1.1.0)
@@ -25,10 +22,6 @@ GEM
25
22
  activerecord (6.0.3.1)
26
23
  activemodel (= 6.0.3.1)
27
24
  activesupport (= 6.0.3.1)
28
- activerecord-oracle_enhanced-adapter (6.0.2)
29
- activerecord (~> 6.0.0)
30
- ruby-plsql (>= 0.6.0)
31
- activerecord-sqlserver-adapter (2.3.8)
32
25
  activesupport (6.0.3.1)
33
26
  concurrent-ruby (~> 1.0, >= 1.0.2)
34
27
  i18n (>= 0.7, < 2)
@@ -46,7 +39,6 @@ GEM
46
39
  net-ssh (6.0.2)
47
40
  net-ssh-gateway (2.0.0)
48
41
  net-ssh (>= 4.0.0)
49
- pg (1.2.3)
50
42
  pry (0.13.1)
51
43
  coderay (~> 1.1)
52
44
  method_source (~> 1.0)
@@ -58,7 +50,6 @@ GEM
58
50
  yard (~> 0.9.11)
59
51
  rainbow (3.0.0)
60
52
  rake (12.3.3)
61
- ruby-plsql (0.7.1)
62
53
  sqlite3 (1.4.2)
63
54
  table_print (1.5.6)
64
55
  terminal-table (1.8.0)
@@ -24,10 +24,10 @@ Gem::Specification.new do |spec|
24
24
  spec.require_paths = ["lib"]
25
25
 
26
26
  spec.add_dependency 'mysql2', '~> 0.5.3'
27
- spec.add_dependency 'pg', '>= 0.18', '< 2.0'
27
+ # spec.add_dependency 'pg', '>= 0.18', '< 2.0'
28
28
  spec.add_dependency 'sqlite3', '~> 1.4'
29
- spec.add_dependency 'activerecord-sqlserver-adapter'
30
- spec.add_dependency 'activerecord-oracle_enhanced-adapter'
29
+ # spec.add_dependency 'activerecord-sqlserver-adapter'
30
+ # spec.add_dependency 'activerecord-oracle_enhanced-adapter'
31
31
  spec.add_dependency 'activerecord', '~> 6.0.3'
32
32
  spec.add_dependency 'activesupport', '~> 6.0.3'
33
33
  spec.add_dependency 'net-ssh-gateway', '~> 2.0.0'
@@ -4,6 +4,7 @@ require 'arql/id'
4
4
  require 'arql/multi_io'
5
5
  require 'arql/ext'
6
6
  require "arql/repl"
7
+ require "arql/ssh_proxy"
7
8
  require "arql/app"
8
9
  require "arql/cli"
9
10
 
@@ -9,10 +9,6 @@ module Arql
9
9
  def config
10
10
  @@effective_config
11
11
  end
12
-
13
- def local_ssh_proxy_port
14
- @@local_ssh_proxy_port
15
- end
16
12
  end
17
13
 
18
14
  def initialize(options)
@@ -48,11 +44,13 @@ module Arql
48
44
 
49
45
  def start_ssh_proxy!
50
46
  ssh_config = effective_config[:ssh]
51
- @ssh_gateway = Net::SSH::Gateway.new(ssh_config[:host], ssh_config[:user], ssh_config.slice(:port, :password).symbolize_keys)
52
- @@local_ssh_proxy_port = @ssh_gateway.open(effective_config[:host], effective_config[:port], ssh_config[:local_port])
47
+ local_ssh_proxy_port = Arql::SSHProxy.connect(ssh_config.slice(:host, :user, :port, :password).merge(
48
+ forward_host: effective_config[:host],
49
+ forward_port: effective_config[:port],
50
+ local_port: ssh_config[:local_port]))
53
51
  {
54
52
  host: '127.0.0.1',
55
- port: @@local_ssh_proxy_port
53
+ port: local_ssh_proxy_port
56
54
  }
57
55
  end
58
56
 
@@ -1,3 +1,5 @@
1
+ require 'rainbow'
2
+
1
3
  module Arql::Commands
2
4
  module Info
3
5
  class << self
@@ -5,6 +7,8 @@ module Arql::Commands
5
7
  <<~EOF
6
8
 
7
9
  Database Connection Information:
10
+
11
+ Active: #{color_boolean(ActiveRecord::Base.connection.active?)}
8
12
  Host: #{Arql::App.config[:host]}
9
13
  Port: #{Arql::App.config[:port]}
10
14
  Username: #{Arql::App.config[:username]}
@@ -20,13 +24,24 @@ module Arql::Commands
20
24
  <<~EOF
21
25
 
22
26
  SSH Connection Information:
27
+
28
+ Active: #{color_boolean(Arql::SSHProxy.active?)}
23
29
  Host: #{Arql::App.config[:ssh][:host]}
24
30
  Port: #{Arql::App.config[:ssh][:port]}
25
31
  Username: #{Arql::App.config[:ssh][:user]}
26
32
  Password: #{(Arql::App.config[:ssh][:password] || '').gsub(/./, '*')}
27
- Local Port: #{Arql::App.local_ssh_proxy_port}
33
+ Local Port: #{Arql::SSHProxy.local_ssh_proxy_port}
28
34
  EOF
29
35
  end
36
+
37
+ private
38
+ def color_boolean(bool)
39
+ if bool
40
+ Rainbow('TRUE').green
41
+ else
42
+ Rainbow('FALSE').red
43
+ end
44
+ end
30
45
  end
31
46
 
32
47
  Pry.commands.block_command 'info' do
@@ -2,6 +2,12 @@ module Arql::Commands
2
2
  module Reconnect
3
3
  class << self
4
4
  def reconnect
5
+ Arql::SSHProxy.reconnect if Arql::App.config[:ssh].present?
6
+ ActiveRecord::Base.connection.reconnect! unless ActiveRecord::Base.connection.active?
7
+ end
8
+
9
+ def reconnect!
10
+ Arql::SSHProxy.reconnect! if Arql::App.config[:ssh].present?
5
11
  ActiveRecord::Base.connection.reconnect!
6
12
  end
7
13
  end
@@ -9,5 +15,9 @@ module Arql::Commands
9
15
  Pry.commands.block_command 'reconnect' do
10
16
  Reconnect.reconnect
11
17
  end
18
+
19
+ Pry.commands.block_command 'reconnect!' do
20
+ Reconnect.reconnect!
21
+ end
12
22
  end
13
23
  end
@@ -26,6 +26,9 @@ module Arql
26
26
  self.class.to_upsert_sql([self])
27
27
  end
28
28
 
29
+ included do
30
+ end
31
+
29
32
  class_methods do
30
33
  def t
31
34
  table_name = Commands::Table::get_table_name(name)
@@ -163,5 +166,15 @@ module Arql
163
166
  end
164
167
  end
165
168
  end
169
+
170
+ ::ActiveRecord::Relation.class_eval do
171
+ def t
172
+ records.t
173
+ end
174
+
175
+ def v
176
+ records.v
177
+ end
178
+ end
166
179
  end
167
180
  end
@@ -28,7 +28,7 @@ class Array
28
28
  }.to_s
29
29
 
30
30
  terminal_width = `tput cols`.to_i
31
- if table.first.size > terminal_width
31
+ if table.lines.first.size > terminal_width
32
32
  table = table.lines.map(&:chomp)
33
33
  puts table[0..2].join("\n")
34
34
  puts table[3..-1].join("\n#{'-' * terminal_width}\n")
@@ -9,7 +9,7 @@ class Time
9
9
  to_s
10
10
  end
11
11
 
12
- def as_json
12
+ def as_json(*args)
13
13
  to_s
14
14
  end
15
15
  end
@@ -0,0 +1,30 @@
1
+ require 'net/ssh/gateway'
2
+
3
+ module Arql
4
+ class SSHProxy
5
+ class << self
6
+
7
+ attr_accessor :config, :ssh_gateway, :local_ssh_proxy_port
8
+
9
+ def connect(config)
10
+ @config = config
11
+ @ssh_gateway = Net::SSH::Gateway.new(config[:host], config[:user], config.slice(:port, :password).symbolize_keys.merge(keepalive: true, keepalive_interval: 30))
12
+ @local_ssh_proxy_port = @ssh_gateway.open(config[:forward_host], config[:forward_port], config[:local_port])
13
+ end
14
+
15
+ def reconnect
16
+ reconnect! unless @ssh_gateway.active?
17
+ end
18
+
19
+ def reconnect!
20
+ @ssh_gateway.shutdown!
21
+ @ssh_gateway = Net::SSH::Gateway.new(@config[:host], @config[:user], @config.slice(:port, :password).symbolize_keys)
22
+ @ssh_gateway.open(config[:forward_host], config[:forward_port], @local_ssh_proxy_port)
23
+ end
24
+
25
+ def active?
26
+ @ssh_gateway.active?
27
+ end
28
+ end
29
+ end
30
+ end
@@ -1,3 +1,3 @@
1
1
  module Arql
2
- VERSION = "0.1.20"
2
+ VERSION = "0.1.25"
3
3
  end
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.1.20
4
+ version: 0.1.25
5
5
  platform: ruby
6
6
  authors:
7
7
  - Liu Xiang
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-05 00:00:00.000000000 Z
11
+ date: 2020-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mysql2
@@ -24,26 +24,6 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.5.3
27
- - !ruby/object:Gem::Dependency
28
- name: pg
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0.18'
34
- - - "<"
35
- - !ruby/object:Gem::Version
36
- version: '2.0'
37
- type: :runtime
38
- prerelease: false
39
- version_requirements: !ruby/object:Gem::Requirement
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- version: '0.18'
44
- - - "<"
45
- - !ruby/object:Gem::Version
46
- version: '2.0'
47
27
  - !ruby/object:Gem::Dependency
48
28
  name: sqlite3
49
29
  requirement: !ruby/object:Gem::Requirement
@@ -58,34 +38,6 @@ dependencies:
58
38
  - - "~>"
59
39
  - !ruby/object:Gem::Version
60
40
  version: '1.4'
61
- - !ruby/object:Gem::Dependency
62
- name: activerecord-sqlserver-adapter
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: '0'
68
- type: :runtime
69
- prerelease: false
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- version: '0'
75
- - !ruby/object:Gem::Dependency
76
- name: activerecord-oracle_enhanced-adapter
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - ">="
80
- - !ruby/object:Gem::Version
81
- version: '0'
82
- type: :runtime
83
- prerelease: false
84
- version_requirements: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - ">="
87
- - !ruby/object:Gem::Version
88
- version: '0'
89
41
  - !ruby/object:Gem::Dependency
90
42
  name: activerecord
91
43
  requirement: !ruby/object:Gem::Requirement
@@ -252,6 +204,7 @@ files:
252
204
  - lib/arql/id.rb
253
205
  - lib/arql/multi_io.rb
254
206
  - lib/arql/repl.rb
207
+ - lib/arql/ssh_proxy.rb
255
208
  - lib/arql/version.rb
256
209
  homepage: https://github.com/lululau/arql
257
210
  licenses: