shiba 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shiba
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Osheroff
@@ -9,8 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-02-05 00:00:00.000000000 Z
12
+ date: 2019-02-15 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activesupport
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
14
28
  - !ruby/object:Gem::Dependency
15
29
  name: bundler
16
30
  requirement: !ruby/object:Gem::Requirement
@@ -50,24 +64,23 @@ extensions: []
50
64
  extra_rdoc_files: []
51
65
  files:
52
66
  - ".gitignore"
67
+ - ".travis.yml"
68
+ - ".travis/my.cnf"
53
69
  - CODE_OF_CONDUCT.md
54
70
  - Gemfile
55
71
  - Gemfile.lock
56
72
  - README.md
57
73
  - Rakefile
58
74
  - TODO
59
- - bin/analyze
60
75
  - bin/check
61
76
  - bin/console
77
+ - bin/dump_stats
62
78
  - bin/explain
63
79
  - bin/fingerprint
64
- - bin/inspect
65
- - bin/parse
66
80
  - bin/redmine/sample_redmine.rb
67
81
  - bin/release
68
82
  - bin/setup
69
83
  - bin/shiba
70
- - bin/watch.rb
71
84
  - cmd/builds/fingerprint.darwin-amd64
72
85
  - cmd/builds/fingerprint.linux-amd64
73
86
  - cmd/check.go
@@ -76,16 +89,23 @@ files:
76
89
  - cmd/parse.go
77
90
  - lib/shiba.rb
78
91
  - lib/shiba/analyzer.rb
92
+ - lib/shiba/backtrace.rb
93
+ - lib/shiba/checker.rb
79
94
  - lib/shiba/configure.rb
95
+ - lib/shiba/diff.rb
80
96
  - lib/shiba/explain.rb
97
+ - lib/shiba/fuzzer.rb
81
98
  - lib/shiba/index.rb
99
+ - lib/shiba/index_stats.rb
82
100
  - lib/shiba/output.rb
83
101
  - lib/shiba/output/tags.yaml
84
102
  - lib/shiba/query.rb
85
103
  - lib/shiba/query_watcher.rb
86
104
  - lib/shiba/railtie.rb
105
+ - lib/shiba/table_stats.rb
87
106
  - lib/shiba/version.rb
88
107
  - shiba.gemspec
108
+ - shiba.yml.example
89
109
  - web/bootstrap.min.css
90
110
  - web/dist/bundle.js
91
111
  - web/main.css
data/bin/analyze DELETED
@@ -1,77 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- #!/usr/bin/env ruby
4
-
5
- require 'bundler/setup'
6
- require 'optionparser'
7
- require 'shiba'
8
- require 'shiba/configure'
9
- require 'shiba/output'
10
-
11
- options = {}
12
-
13
- parser = Shiba::Configure.make_options_parser(options)
14
- parser.banner = "analyze <command>. Creates report of SQL from the running process."
15
- parser.parse!
16
-
17
- if options["test"] && !options["file"]
18
- $stderr.puts "--file <query log> is required for test mode"
19
- $stderr.puts parser.banner
20
- exit 1
21
- end
22
-
23
- # Automagic configuration goes here
24
- if !options["database"]
25
- config = Shiba::Configure.activerecord_configuration
26
-
27
- if tc = config && config['test']
28
- $stderr.puts "Reading configuration from '#{`pwd`.chomp}/config/database.yml'[:test]."
29
- options['host'] ||= tc['host']
30
- options['database'] ||= tc['database']
31
- options['username'] ||= tc['username']
32
- options['password'] ||= tc['password']
33
- end
34
- end
35
-
36
- Shiba.configure(options)
37
-
38
- if !options["file"]
39
- options["file"] = `mktemp /tmp/shiba-query.log-#{Time.now.to_i}`.chomp
40
- end
41
-
42
- if !options["explain"]
43
- options["explain"] = `mktemp /tmp/shiba-explain.log-#{Time.now.to_i}`.chomp
44
- end
45
-
46
- # Log process queries
47
- if !options.delete("test")
48
- if ARGV.empty?
49
- $stderr.puts "The name of a command must be passed in to generate SQL logs."
50
- $stderr.puts "Example: shiba analyze rake spec"
51
- $stderr.puts ""
52
- $stderr.puts "For static analysis, try the --test option."
53
- exit 1
54
- end
55
-
56
- path = "#{File.dirname(__FILE__)}/watch.rb"
57
- watch_args = ARGV + [ "--file", options["file"] ]
58
- pid = fork do
59
- Signal.trap("INT") { exit 1 }
60
- exec(path, *watch_args)
61
- end
62
-
63
- Signal.trap("INT", "IGNORE")
64
- Process.wait(pid)
65
- Signal.trap("INT", "DEFAULT")
66
- end
67
-
68
- # Explain
69
- $stderr.puts "Analyzing SQL to '#{options["explain"]}'..."
70
- path = "#{File.dirname(__FILE__)}/explain"
71
- args = options.select { |_,v| !v.nil? }.map { |k,v| [ "--#{k}", v ] }.flatten
72
-
73
- $stderr.puts ([path] + args).join(" ")
74
- if !system(path, *args)
75
- exit 1
76
- end
77
-
data/bin/inspect DELETED
Binary file
data/bin/parse DELETED
Binary file
data/bin/watch.rb DELETED
@@ -1,19 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'optionparser'
4
-
5
- options = {}
6
- parser = OptionParser.new do |opts|
7
- opts.banner = "watch <command>. Create SQL logs for a running process"
8
-
9
- opts.on("-f", "--file FILE", "write to file") do |f|
10
- options["file"] = f
11
- end
12
-
13
- end
14
-
15
- parser.parse!
16
-
17
- $stderr.puts "Recording SQL queries to '#{options["file"]}'..."
18
- ENV['SHIBA_OUT'] = options["file"]
19
- Kernel.exec(ARGV.join(" "))