index_checker 1.0.16
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 +7 -0
- data/Gemfile +7 -0
- data/Rakefile +19 -0
- data/index_checker.gemspec +28 -0
- data/lib/generators/index_checker/initialize_generator.rb +28 -0
- data/lib/generators/templates/index_checker_config.rb +27 -0
- data/lib/index_checker/railtie.rb +9 -0
- data/lib/index_checker/task_definition/base.rb +45 -0
- data/lib/index_checker/task_definition/general_report.rb +27 -0
- data/lib/index_checker/version.rb +5 -0
- data/lib/index_checker.rb +17 -0
- data/lib/report_template.html.erb +49 -0
- data/lib/tasks/index_checker_tasks.rake +12 -0
- metadata +195 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 84bb597577a845fb06c0c4db1569bab68b637d9d84d2643a276065d70276a63e
|
|
4
|
+
data.tar.gz: a6f10a3ea0d786f49fd6f24946e87f0fb3ea9cb3619556491592e2c9f1db553a
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 825daf6370e0213940007174aa2e341ae3c52406ba0f084f647f8bcc1beb0214a819a38fa27f3a8723520bbc36820ed5404eaf844249713d197744274fa2b193
|
|
7
|
+
data.tar.gz: a4a4de2c18f05370aacdd2e3a6425c68354e7a6acd00a91f555e5be3abbcf060620ec2f4373ca34034d6d0c9b935fd2e5fcb778fd625a646e58240135ba25bb6
|
data/Gemfile
ADDED
data/Rakefile
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'rake'
|
|
2
|
+
|
|
3
|
+
begin
|
|
4
|
+
require 'bundler/setup'
|
|
5
|
+
Bundler::GemHelper.install_tasks
|
|
6
|
+
rescue LoadError
|
|
7
|
+
puts 'although not required, bundler is recommended for running the tests'
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
task default: :spec
|
|
11
|
+
|
|
12
|
+
require 'rspec/core/rake_task'
|
|
13
|
+
RSpec::Core::RakeTask.new(:spec)
|
|
14
|
+
|
|
15
|
+
require 'rubocop/rake_task'
|
|
16
|
+
RuboCop::RakeTask.new do |task|
|
|
17
|
+
task.requires << 'rubocop-performance'
|
|
18
|
+
task.requires << 'rubocop-rspec'
|
|
19
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require File.expand_path('lib/index_checker/version', __dir__)
|
|
2
|
+
|
|
3
|
+
Gem::Specification.new do |s|
|
|
4
|
+
s.name = 'index_checker'
|
|
5
|
+
s.version = IndexChecker::VERSION
|
|
6
|
+
s.summary = 'Index Checker'
|
|
7
|
+
s.description = 'A simple ruby gem for view statistic information abount index'
|
|
8
|
+
s.authors = ['Lê Đức Hoà']
|
|
9
|
+
s.email = 'leduchoabatr12@gmail.com'
|
|
10
|
+
s.files = Dir['lib/report_template.html.erb', 'lib/**/*.rb', 'lib/**/*.rake', 'index_checker.gemspec',
|
|
11
|
+
'Gemfile', 'Rakefile']
|
|
12
|
+
s.homepage =
|
|
13
|
+
'https://github.com/dontregret9/index_checker'
|
|
14
|
+
s.license = 'MIT'
|
|
15
|
+
|
|
16
|
+
s.add_dependency 'erb', '~> 4.0'
|
|
17
|
+
s.add_dependency 'launchy', '~> 2.5'
|
|
18
|
+
s.add_dependency 'pg', '~> 1.1'
|
|
19
|
+
|
|
20
|
+
s.add_development_dependency 'rails', '~> 6.0.3'
|
|
21
|
+
s.add_development_dependency 'rake', '~> 13.0'
|
|
22
|
+
s.add_development_dependency 'rspec-rails', '~> 4.0'
|
|
23
|
+
s.add_development_dependency 'rubocop', '~> 0.60'
|
|
24
|
+
s.add_development_dependency 'rubocop-performance', '~> 1.5'
|
|
25
|
+
s.add_development_dependency 'rubocop-rspec', '~> 1.37'
|
|
26
|
+
s.add_development_dependency 'simplecov', '~> 0.1'
|
|
27
|
+
s.metadata['rubygems_mfa_required'] = 'true'
|
|
28
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'rails/generators'
|
|
4
|
+
|
|
5
|
+
module IndexChecker
|
|
6
|
+
module Generators
|
|
7
|
+
class InitializeGenerator < Rails::Generators::Base
|
|
8
|
+
source_root File.expand_path('../templates', __dir__)
|
|
9
|
+
|
|
10
|
+
desc 'Creates a IndexChecker config file'
|
|
11
|
+
def copy_config
|
|
12
|
+
file_path = "#{Rails.root}/config/index_checker.rb"
|
|
13
|
+
return if File.file?(file_path)
|
|
14
|
+
|
|
15
|
+
template 'index_checker_config.rb', file_path
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
desc 'Create a IndexChecker folder'
|
|
19
|
+
def create_initializer_file
|
|
20
|
+
file_path = "#{Rails.root}/index_checker/general_report.html"
|
|
21
|
+
return if File.file?(file_path)
|
|
22
|
+
|
|
23
|
+
create_file file_path,
|
|
24
|
+
'Result of rake index_checker::analysis will be shown here ...'
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'index_checker'
|
|
4
|
+
|
|
5
|
+
IndexChecker.config do |c|
|
|
6
|
+
|
|
7
|
+
# dbname : required
|
|
8
|
+
# Database name is required
|
|
9
|
+
c.dbname = 'database-to-analysis'
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
# user : optional.
|
|
13
|
+
# If the `user` is not provided, it will be the default user (same name as your OS name)
|
|
14
|
+
# c.user = 'your-postgres-username'
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
# password: optional
|
|
18
|
+
# The password just requires if your (Postgres) user authenticates by `md5` method, that is optional for other authentication methods: `trust` or `peer`. Your postgres config in pg_hba.config
|
|
19
|
+
# c.password = 'your-password'
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# rdbms : default
|
|
23
|
+
# This configuration is default. IndexChecker just support PostgresSQL for now!
|
|
24
|
+
|
|
25
|
+
# c.rdbms = 'postgresql'
|
|
26
|
+
|
|
27
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module IndexChecker
|
|
4
|
+
module TaskDefinition
|
|
5
|
+
class Base
|
|
6
|
+
class << self
|
|
7
|
+
def postgres_connection
|
|
8
|
+
dbname = IndexChecker.dbname
|
|
9
|
+
user = IndexChecker.user
|
|
10
|
+
password = IndexChecker.password
|
|
11
|
+
|
|
12
|
+
puts "You are connecting to #{dbname} database as #{user} role"
|
|
13
|
+
begin
|
|
14
|
+
PG.connect(dbname: dbname, user: user, password: password)
|
|
15
|
+
rescue Exception => e
|
|
16
|
+
puts e
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def write_results_to_file
|
|
21
|
+
template = File.read(result_template_path)
|
|
22
|
+
html_result = ERB.new(template).result(binding)
|
|
23
|
+
|
|
24
|
+
File.write(result_file_path, html_result)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def open_file_in_browser(path)
|
|
28
|
+
Launchy.open(path)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def result_template_path
|
|
32
|
+
"#{gem_root_path}lib/report_template.html.erb"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def result_file_path
|
|
36
|
+
"#{Rails.root}/index_checker/general_report.html"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def gem_root_path
|
|
40
|
+
__FILE__.gsub('lib/index_checker/task_definition/base.rb', '')
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module IndexChecker
|
|
4
|
+
module TaskDefinition
|
|
5
|
+
class GeneralReport < Base
|
|
6
|
+
GET_INFO_QUERY = "SELECT tbls_stat.relname, tbls_stat.seq_scan, tbls_stat.idx_scan, (tbls_stat.seq_tup_read + tbls_stat.idx_tup_fetch) as read_actions, (tbls_stat.n_tup_ins + tbls_stat.n_tup_upd + tbls_stat.n_tup_del) as write_actions,
|
|
7
|
+
idx_stat.indexrelname, pg_relation_size(idx_stat.indexrelid) AS idx_size
|
|
8
|
+
FROM pg_stat_all_tables AS tbls_stat INNER JOIN pg_stat_user_indexes AS idx_stat ON tbls_stat.relid = idx_stat.relid
|
|
9
|
+
WHERE tbls_stat.relname NOT LIKE 'pg_%'
|
|
10
|
+
ORDER BY tbls_stat.idx_scan ASC, tbls_stat.seq_scan DESC"
|
|
11
|
+
|
|
12
|
+
def self.generate!
|
|
13
|
+
connection = postgres_connection
|
|
14
|
+
return if connection.nil?
|
|
15
|
+
|
|
16
|
+
@results = connection.exec(GET_INFO_QUERY)
|
|
17
|
+
|
|
18
|
+
write_results_to_file
|
|
19
|
+
open_file_in_browser(result_file_path)
|
|
20
|
+
rescue PG::Error => e
|
|
21
|
+
puts e.message
|
|
22
|
+
ensure
|
|
23
|
+
connection&.close
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'pg'
|
|
4
|
+
require 'erb'
|
|
5
|
+
require 'launchy'
|
|
6
|
+
|
|
7
|
+
module IndexChecker
|
|
8
|
+
class << self
|
|
9
|
+
attr_accessor :rdbms, :dbname, :user, :password
|
|
10
|
+
|
|
11
|
+
def config
|
|
12
|
+
yield self
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
require_relative 'index_checker/railtie' if defined?(Rails)
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<HTML>
|
|
2
|
+
<HEAD>
|
|
3
|
+
<style>
|
|
4
|
+
th {
|
|
5
|
+
margin-top: 50px;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
td {
|
|
9
|
+
height: 3rem;
|
|
10
|
+
margin: 20px;
|
|
11
|
+
padding: 0 20px;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
tr:nth-child(odd) {
|
|
15
|
+
background-color: #f2f5fa;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
tr:nth-child(even) {
|
|
19
|
+
background-color: rgba(242, 245, 250, .5)
|
|
20
|
+
}
|
|
21
|
+
</style>
|
|
22
|
+
</HEAD>
|
|
23
|
+
<BODY>
|
|
24
|
+
<table>
|
|
25
|
+
<tr>
|
|
26
|
+
<tr>
|
|
27
|
+
<th> Table Name </th>
|
|
28
|
+
<th> Index Name </th>
|
|
29
|
+
<th style="width: 150px"> Write actions </th>
|
|
30
|
+
<th style="width: 150px"> Read actions </th>
|
|
31
|
+
<th style="width: 150px"> Sequence Scan </th>
|
|
32
|
+
<th style="width: 150px"> Index Scan </th>
|
|
33
|
+
<th style="width: 150px"> Index Size </th>
|
|
34
|
+
</tr>
|
|
35
|
+
</tr>
|
|
36
|
+
<% @results.each do |r| %>
|
|
37
|
+
<tr>
|
|
38
|
+
<td> <%= r['relname'] %> </td>
|
|
39
|
+
<td> <%= r['indexrelname']%></td>
|
|
40
|
+
<td style="width: 100px; text-align: center"> <%= r['write_actions'] %> </td>
|
|
41
|
+
<td style="width: 100px; text-align: center"> <%= r['read_actions'] %> </td>
|
|
42
|
+
<td style="width: 100px; text-align: center"> <%= r['seq_scan'] %> </td>
|
|
43
|
+
<td style="width: 100px; text-align: center"> <%= r['idx_scan'] %> </td>
|
|
44
|
+
<td style="width: 100px; text-align: center"> <%= r['idx_size'] %> </td>
|
|
45
|
+
</tr>
|
|
46
|
+
<% end %>
|
|
47
|
+
</table>
|
|
48
|
+
</BODY>
|
|
49
|
+
</HTML>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'rake'
|
|
4
|
+
require_relative '../index_checker/task_definition/base'
|
|
5
|
+
require_relative '../index_checker/task_definition/general_report'
|
|
6
|
+
require "#{Rails.root}/config/index_checker"
|
|
7
|
+
|
|
8
|
+
namespace :index_checker do
|
|
9
|
+
task :analysis do
|
|
10
|
+
IndexChecker::TaskDefinition::GeneralReport.generate!
|
|
11
|
+
end
|
|
12
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: index_checker
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 1.0.16
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Lê Đức Hoà
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2023-02-04 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: erb
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '4.0'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '4.0'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: launchy
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '2.5'
|
|
34
|
+
type: :runtime
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '2.5'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: pg
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - "~>"
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '1.1'
|
|
48
|
+
type: :runtime
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - "~>"
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '1.1'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: rails
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - "~>"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: 6.0.3
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - "~>"
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: 6.0.3
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: rake
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - "~>"
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '13.0'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - "~>"
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '13.0'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: rspec-rails
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - "~>"
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '4.0'
|
|
90
|
+
type: :development
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - "~>"
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '4.0'
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: rubocop
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - "~>"
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '0.60'
|
|
104
|
+
type: :development
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - "~>"
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '0.60'
|
|
111
|
+
- !ruby/object:Gem::Dependency
|
|
112
|
+
name: rubocop-performance
|
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
|
114
|
+
requirements:
|
|
115
|
+
- - "~>"
|
|
116
|
+
- !ruby/object:Gem::Version
|
|
117
|
+
version: '1.5'
|
|
118
|
+
type: :development
|
|
119
|
+
prerelease: false
|
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
+
requirements:
|
|
122
|
+
- - "~>"
|
|
123
|
+
- !ruby/object:Gem::Version
|
|
124
|
+
version: '1.5'
|
|
125
|
+
- !ruby/object:Gem::Dependency
|
|
126
|
+
name: rubocop-rspec
|
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
|
128
|
+
requirements:
|
|
129
|
+
- - "~>"
|
|
130
|
+
- !ruby/object:Gem::Version
|
|
131
|
+
version: '1.37'
|
|
132
|
+
type: :development
|
|
133
|
+
prerelease: false
|
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
+
requirements:
|
|
136
|
+
- - "~>"
|
|
137
|
+
- !ruby/object:Gem::Version
|
|
138
|
+
version: '1.37'
|
|
139
|
+
- !ruby/object:Gem::Dependency
|
|
140
|
+
name: simplecov
|
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
|
142
|
+
requirements:
|
|
143
|
+
- - "~>"
|
|
144
|
+
- !ruby/object:Gem::Version
|
|
145
|
+
version: '0.1'
|
|
146
|
+
type: :development
|
|
147
|
+
prerelease: false
|
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
149
|
+
requirements:
|
|
150
|
+
- - "~>"
|
|
151
|
+
- !ruby/object:Gem::Version
|
|
152
|
+
version: '0.1'
|
|
153
|
+
description: A simple ruby gem for view statistic information abount index
|
|
154
|
+
email: leduchoabatr12@gmail.com
|
|
155
|
+
executables: []
|
|
156
|
+
extensions: []
|
|
157
|
+
extra_rdoc_files: []
|
|
158
|
+
files:
|
|
159
|
+
- Gemfile
|
|
160
|
+
- Rakefile
|
|
161
|
+
- index_checker.gemspec
|
|
162
|
+
- lib/generators/index_checker/initialize_generator.rb
|
|
163
|
+
- lib/generators/templates/index_checker_config.rb
|
|
164
|
+
- lib/index_checker.rb
|
|
165
|
+
- lib/index_checker/railtie.rb
|
|
166
|
+
- lib/index_checker/task_definition/base.rb
|
|
167
|
+
- lib/index_checker/task_definition/general_report.rb
|
|
168
|
+
- lib/index_checker/version.rb
|
|
169
|
+
- lib/report_template.html.erb
|
|
170
|
+
- lib/tasks/index_checker_tasks.rake
|
|
171
|
+
homepage: https://github.com/dontregret9/index_checker
|
|
172
|
+
licenses:
|
|
173
|
+
- MIT
|
|
174
|
+
metadata:
|
|
175
|
+
rubygems_mfa_required: 'true'
|
|
176
|
+
post_install_message:
|
|
177
|
+
rdoc_options: []
|
|
178
|
+
require_paths:
|
|
179
|
+
- lib
|
|
180
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
181
|
+
requirements:
|
|
182
|
+
- - ">="
|
|
183
|
+
- !ruby/object:Gem::Version
|
|
184
|
+
version: '0'
|
|
185
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
186
|
+
requirements:
|
|
187
|
+
- - ">="
|
|
188
|
+
- !ruby/object:Gem::Version
|
|
189
|
+
version: '0'
|
|
190
|
+
requirements: []
|
|
191
|
+
rubygems_version: 3.1.6
|
|
192
|
+
signing_key:
|
|
193
|
+
specification_version: 4
|
|
194
|
+
summary: Index Checker
|
|
195
|
+
test_files: []
|