arql 0.1.0 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: acf04b3eab704e69a043994e5f3529315e1e8aa57cf9167867a30213120a3fe5
4
- data.tar.gz: 782757a05d29076e1761dfbaebed91b244e01e89a0de4f69b6e239c48dc0c424
3
+ metadata.gz: f4f6b01a4cae5f453322b2adf85b21ca4442d83dc07c504b73048b2640322af5
4
+ data.tar.gz: 78b66856a6bb72ae2247b3f1f6ea82434696fd5f5f345fda904f6017fcd4c009
5
5
  SHA512:
6
- metadata.gz: d204ef54833e2dae7acf18ed13632da41baab1dcf149514abe7064cfac51ea9ea2a6556640c2ad0df1a84993827c7ee3afbb800773ec07620dac86b6b81d109f
7
- data.tar.gz: a8706a7ae9acf7f06a52a733f871e35c57706d247ea44edd8462f453fb7f1471f28fd5e44f5e942c2fcae184721b5e53ef6242a026d38ae106d7aa5793f6fc06
6
+ metadata.gz: d01f9fe3b5a3264476e76eb8446054daec67648edefe1d67c7b1c97ed96f8695d924b48b4a5c7b3f60ac535ccfdb9919d2106f6517b7f898289c8970a0574642
7
+ data.tar.gz: c6be97e00d33908f45866c267b054c913e615b4f594b6baccf72d374a8e92b30136b7cd4e122cacdd7ffbf80dd1a8925b2e7e2a676edf4a2aec0f56a9058e054
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- arql (0.1.0)
4
+ arql (0.1.1)
5
5
  activerecord (~> 6.0.0)
6
6
  activesupport (~> 6.0.0)
7
7
  mysql2 (~> 0.5.3)
data/arql.gemspec CHANGED
@@ -6,8 +6,8 @@ Gem::Specification.new do |spec|
6
6
  spec.authors = ["Liu Xiang"]
7
7
  spec.email = ["liuxiang921@gmail.com"]
8
8
 
9
- spec.summary = %{Rails ActiveRecord is the best SQL query editor.}
10
- spec.description = %{Rails ActiveRecord is the best SQL query editor.}
9
+ spec.summary = %{Rails ActiveRecord + Pry is the best SQL query editor}
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
13
  spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
data/lib/arql/app.rb CHANGED
@@ -1,5 +1,3 @@
1
- require 'active_support/core_ext/hash'
2
-
3
1
  module Arql
4
2
  class App
5
3
  def initialize(options)
@@ -21,7 +19,7 @@ module Arql
21
19
  port: @options.db_port
22
20
  }
23
21
  else
24
- config[:db][@options.env]
22
+ db_config
25
23
  end
26
24
  end
27
25
 
@@ -29,7 +27,14 @@ module Arql
29
27
  @config ||= YAML.load(IO.read(@options.config_file)).with_indifferent_access
30
28
  end
31
29
 
30
+ def db_config
31
+ config[:db][@options.env]
32
+ end
33
+
32
34
  def run!
35
+ show_sql if should_show_sql?
36
+ write_sql if should_write_sql?
37
+ append_sql if should_append_sql?
33
38
  if @options.code.present?
34
39
  eval(@options.code)
35
40
  elsif @options.args.present?
@@ -46,5 +51,37 @@ module Arql
46
51
  def use_db_cmd_options?
47
52
  @options.db_host.present?
48
53
  end
54
+
55
+ def should_show_sql?
56
+ @options.show_sql || db_config[:show_sql]
57
+ end
58
+
59
+ def should_write_sql?
60
+ @options.write_sql || db_config[:write_sql]
61
+ end
62
+
63
+ def should_append_sql?
64
+ @options.append_sql || db_config[:append_sql]
65
+ end
66
+
67
+ def show_sql
68
+ @log_io ||= MultiIO.new
69
+ ActiveRecord::Base.logger = Logger.new(@log_io)
70
+ @log_io << STDOUT
71
+ end
72
+
73
+ def write_sql
74
+ write_sql_file = @options.write_sql || db_config[:write_sql]
75
+ @log_io ||= MultiIO.new
76
+ ActiveRecord::Base.logger = Logger.new(@log_io)
77
+ @log_io << File.new(write_sql_file, 'w')
78
+ end
79
+
80
+ def append_sql
81
+ write_sql_file = @options.append_sql || db_config[:append_sql]
82
+ @log_io ||= MultiIO.new
83
+ ActiveRecord::Base.logger = Logger.new(@log_io)
84
+ @log_io << File.new(write_sql_file, 'a')
85
+ end
49
86
  end
50
87
  end
data/lib/arql/cli.rb CHANGED
@@ -78,6 +78,18 @@ module Arql
78
78
  @options.code = code
79
79
  end
80
80
 
81
+ opts.on('-s', '--show-sql', 'Show SQL on STDOUT') do
82
+ @options.show_sql = true
83
+ end
84
+
85
+ opts.on('-wOUTOUT', '--write-sql=OUTPUT', 'Write SQL to OUTPUT file') do |file|
86
+ @options.write_sql = file
87
+ end
88
+
89
+ opts.on('-aOUTPUT', '--append-sql=OUTPUT', 'Append SQL to OUTPUT file') do |file|
90
+ @options.append_sql = file
91
+ end
92
+
81
93
  opts.on('-h', '--help', 'Prints this help') do
82
94
  puts opts
83
95
  exit
@@ -1,5 +1,3 @@
1
- require 'active_record'
2
-
3
1
  module Arql
4
2
  class Connection
5
3
  class << self
@@ -0,0 +1,20 @@
1
+ module Arql
2
+ class MultiIO
3
+ def initialize(*targets)
4
+ @targets = targets
5
+ end
6
+
7
+ def write(*args)
8
+ @targets.each {|t| t.write(*args)}
9
+ end
10
+
11
+ def close
12
+ @targets.each(&:close)
13
+ end
14
+
15
+ def <<(target)
16
+ @targets ||= []
17
+ @targets << target
18
+ end
19
+ end
20
+ end
data/lib/arql/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Arql
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
data/lib/arql.rb CHANGED
@@ -1,4 +1,7 @@
1
+ require 'active_support/all'
2
+ require 'active_record'
1
3
  require "arql/version"
4
+ require 'arql/multi_io'
2
5
  require "arql/connection"
3
6
  require "arql/definition"
4
7
  require "arql/repl"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arql
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Liu Xiang
@@ -80,7 +80,7 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 3.9.0
83
- description: Rails ActiveRecord is the best SQL query editor.
83
+ description: Use ActiveRecord and Pry as your favorite SQL query editor.
84
84
  email:
85
85
  - liuxiang921@gmail.com
86
86
  executables:
@@ -104,6 +104,7 @@ files:
104
104
  - lib/arql/cli.rb
105
105
  - lib/arql/connection.rb
106
106
  - lib/arql/definition.rb
107
+ - lib/arql/multi_io.rb
107
108
  - lib/arql/repl.rb
108
109
  - lib/arql/version.rb
109
110
  homepage: https://github.com/lululau/arql
@@ -128,5 +129,5 @@ requirements: []
128
129
  rubygems_version: 3.1.2
129
130
  signing_key:
130
131
  specification_version: 4
131
- summary: Rails ActiveRecord is the best SQL query editor.
132
+ summary: Rails ActiveRecord + Pry is the best SQL query editor
132
133
  test_files: []