index_shotgun 0.2.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.github/workflows/test.yml +222 -0
- data/.github_changelog_generator +2 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +26 -2
- data/CHANGELOG.md +47 -0
- data/Gemfile +7 -5
- data/README.md +4 -5
- data/ci/build.sh +31 -0
- data/{travis_ci → ci}/database.yml.mysql +3 -1
- data/ci/database.yml.oracle +5 -0
- data/{travis_ci → ci}/database.yml.postgresql +3 -0
- data/{travis_ci → ci}/database.yml.sqlite3 +0 -0
- data/ci/install.sh +47 -0
- data/exe/index_shotgun +1 -1
- data/gemfiles/activerecord_5_0.gemfile +26 -0
- data/gemfiles/activerecord_5_1.gemfile +26 -0
- data/gemfiles/activerecord_5_2.gemfile +26 -0
- data/gemfiles/activerecord_6_0.gemfile +27 -0
- data/gemfiles/activerecord_6_1.gemfile +27 -0
- data/gemfiles/activerecord_7_0.gemfile +29 -0
- data/gemfiles/common.gemfile +15 -0
- data/index_shotgun.gemspec +16 -19
- data/lib/index_shotgun/analyzer.rb +222 -10
- data/lib/index_shotgun/cli.rb +16 -14
- data/lib/index_shotgun/tasks/index_shotgun.rake +3 -1
- data/lib/index_shotgun/version.rb +1 -1
- metadata +67 -43
- data/.hound.yml +0 -2
- data/.rubocop_standard.yml +0 -196
- data/.travis.yml +0 -27
- data/travis_ci/build.sh +0 -14
@@ -0,0 +1,15 @@
|
|
1
|
+
if Gem::Version.create(RUBY_VERSION) < Gem::Version.create("2.4.0")
|
2
|
+
# byebug v11.1.0+ requires Ruby 2.4.0+
|
3
|
+
gem "byebug", "< 11.1.0"
|
4
|
+
|
5
|
+
# simplecov-html v0.12.3+ requires Ruby 2.4.0+
|
6
|
+
gem "simplecov-html", "< 0.12.3"
|
7
|
+
|
8
|
+
# parallel v1.20.0 requires Ruby 2.5.0+ and parallel v1.20.1+ requires Ruby 2.4.0+
|
9
|
+
gem "parallel", "< 1.20.0"
|
10
|
+
end
|
11
|
+
|
12
|
+
if Gem::Version.create(RUBY_VERSION) < Gem::Version.create("2.4.4")
|
13
|
+
# zeitwerk requires Ruby 2.4.4+
|
14
|
+
gem "activesupport", "< 6.0.0"
|
15
|
+
end
|
data/index_shotgun.gemspec
CHANGED
@@ -1,5 +1,4 @@
|
|
1
|
-
|
2
|
-
lib = File.expand_path("../lib", __FILE__)
|
1
|
+
lib = File.expand_path("lib", __dir__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
3
|
require "index_shotgun/version"
|
5
4
|
|
@@ -14,32 +13,30 @@ Gem::Specification.new do |spec|
|
|
14
13
|
spec.homepage = "https://github.com/sue445/index_shotgun"
|
15
14
|
spec.license = "MIT"
|
16
15
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
else
|
22
|
-
raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
|
23
|
-
end
|
16
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
17
|
+
spec.metadata["source_code_uri"] = spec.homepage
|
18
|
+
spec.metadata["changelog_uri"] = "#{spec.homepage}/blob/master/CHANGELOG.md"
|
19
|
+
spec.metadata["rubygems_mfa_required"] = "true"
|
24
20
|
|
25
|
-
spec.required_ruby_version = ">= 2.
|
21
|
+
spec.required_ruby_version = ">= 2.4.0"
|
26
22
|
|
27
|
-
spec.files = `git ls-files -z`.split("\x0").reject {
|
23
|
+
spec.files = `git ls-files -z`.split("\x0").reject {|f| f.match(%r{^(test|spec|features)/}) }
|
28
24
|
spec.bindir = "exe"
|
29
|
-
spec.executables = spec.files.grep(%r{^exe/}) {
|
25
|
+
spec.executables = spec.files.grep(%r{^exe/}) {|f| File.basename(f) }
|
30
26
|
spec.require_paths = ["lib"]
|
31
27
|
|
32
|
-
spec.add_dependency "activerecord"
|
28
|
+
spec.add_dependency "activerecord", ">= 5.0.0"
|
33
29
|
spec.add_dependency "thor"
|
34
30
|
|
35
|
-
spec.add_development_dependency "bundler"
|
36
|
-
spec.add_development_dependency "codeclimate-test-reporter"
|
31
|
+
spec.add_development_dependency "bundler"
|
37
32
|
spec.add_development_dependency "coveralls"
|
38
|
-
spec.add_development_dependency "
|
39
|
-
spec.add_development_dependency "rake"
|
40
|
-
spec.add_development_dependency "rake_shared_context"
|
33
|
+
spec.add_development_dependency "onkcop", "0.53.0.2"
|
34
|
+
spec.add_development_dependency "rake"
|
35
|
+
spec.add_development_dependency "rake_shared_context", "0.2.2"
|
41
36
|
spec.add_development_dependency "rspec"
|
42
37
|
spec.add_development_dependency "rspec-its"
|
43
38
|
spec.add_development_dependency "rspec-power_assert"
|
44
|
-
spec.add_development_dependency "rubocop", "0.
|
39
|
+
spec.add_development_dependency "rubocop", "0.62.0"
|
40
|
+
spec.add_development_dependency "rubocop_auto_corrector"
|
41
|
+
spec.add_development_dependency "simplecov", "< 0.18.0"
|
45
42
|
end
|
@@ -1,14 +1,30 @@
|
|
1
1
|
module IndexShotgun
|
2
|
-
module Analyzer
|
2
|
+
module Analyzer # rubocop:disable Metrics/ModuleLength
|
3
3
|
require "index_shotgun/array_start_with"
|
4
4
|
|
5
|
+
class Response
|
6
|
+
attr_accessor :message, :duplicate_index_count, :total_index_count, :total_table_count
|
7
|
+
|
8
|
+
def successful?
|
9
|
+
duplicate_index_count == 0
|
10
|
+
end
|
11
|
+
|
12
|
+
def exit_if_failure!
|
13
|
+
exit(1) unless successful?
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
5
17
|
class << self
|
6
18
|
using IndexShotgun::ArrayStartWith
|
7
19
|
|
8
20
|
# Search duplicate index
|
9
|
-
# @return [
|
21
|
+
# @return [IndexShotgun::Analyzer::Response]
|
10
22
|
def perform
|
11
|
-
tables =
|
23
|
+
tables =
|
24
|
+
ActiveSupport::Deprecation.silence do
|
25
|
+
ActiveRecord::Base.connection.tables
|
26
|
+
end
|
27
|
+
tables.reject! {|table| exclude_tables.include?(table.downcase) }
|
12
28
|
|
13
29
|
duplicate_indexes =
|
14
30
|
tables.each_with_object([]) do |table, array|
|
@@ -17,8 +33,8 @@ module IndexShotgun
|
|
17
33
|
end
|
18
34
|
|
19
35
|
message =
|
20
|
-
duplicate_indexes.each_with_object("") do |info,
|
21
|
-
|
36
|
+
duplicate_indexes.each_with_object("") do |info, str|
|
37
|
+
str << <<~MSG
|
22
38
|
# =============================
|
23
39
|
# #{info[:index].table}
|
24
40
|
# =============================
|
@@ -27,11 +43,11 @@ module IndexShotgun
|
|
27
43
|
# To remove this duplicate index, execute:
|
28
44
|
ALTER TABLE `#{info[:index].table}` DROP INDEX `#{info[:index].name}`;
|
29
45
|
|
30
|
-
|
46
|
+
MSG
|
31
47
|
end
|
32
48
|
|
33
|
-
total_index_count = tables.map {
|
34
|
-
message <<
|
49
|
+
total_index_count = tables.map {|table| table_indexes(table).count }.sum
|
50
|
+
message << <<~MSG
|
35
51
|
# ########################################################################
|
36
52
|
# Summary of indexes
|
37
53
|
# ########################################################################
|
@@ -40,9 +56,15 @@ module IndexShotgun
|
|
40
56
|
# Total Indexes #{total_index_count}
|
41
57
|
# Total Tables #{tables.count}
|
42
58
|
|
43
|
-
|
59
|
+
MSG
|
44
60
|
|
45
|
-
|
61
|
+
response = Response.new
|
62
|
+
response.duplicate_index_count = duplicate_indexes.count
|
63
|
+
response.message = message
|
64
|
+
response.total_index_count = total_index_count
|
65
|
+
response.total_table_count = tables.count
|
66
|
+
|
67
|
+
response
|
46
68
|
end
|
47
69
|
|
48
70
|
# check duplicate indexes of table
|
@@ -76,6 +98,196 @@ module IndexShotgun
|
|
76
98
|
def table_indexes(table)
|
77
99
|
ActiveRecord::Base.connection.indexes(table)
|
78
100
|
end
|
101
|
+
|
102
|
+
ORACLE_SYSTEM_TABLES = %w[
|
103
|
+
AQ$DEF$_AQCALL
|
104
|
+
AQ$DEF$_AQERROR
|
105
|
+
AQ$_DEF$_AQCALL_F
|
106
|
+
AQ$_DEF$_AQERROR_F
|
107
|
+
AQ$_INTERNET_AGENTS
|
108
|
+
AQ$_INTERNET_AGENT_PRIVS
|
109
|
+
AQ$_QUEUES
|
110
|
+
AQ$_QUEUE_TABLES
|
111
|
+
AQ$_SCHEDULES
|
112
|
+
CATALOG
|
113
|
+
COL
|
114
|
+
DEF$_AQCALL
|
115
|
+
DEF$_AQERROR
|
116
|
+
DEF$_CALLDEST
|
117
|
+
DEF$_DEFAULTDEST
|
118
|
+
DEF$_DESTINATION
|
119
|
+
DEF$_ERROR
|
120
|
+
DEF$_LOB
|
121
|
+
DEF$_ORIGIN
|
122
|
+
DEF$_PROPAGATOR
|
123
|
+
DEF$_PUSHED_TRANSACTIONS
|
124
|
+
HELP
|
125
|
+
LOGMNRC_DBNAME_UID_MAP
|
126
|
+
LOGMNRC_GSBA
|
127
|
+
LOGMNRC_GSII
|
128
|
+
LOGMNRC_GTCS
|
129
|
+
LOGMNRC_GTLO
|
130
|
+
LOGMNRP_CTAS_PART_MAP
|
131
|
+
LOGMNRT_MDDL$
|
132
|
+
LOGMNR_AGE_SPILL$
|
133
|
+
LOGMNR_ATTRCOL$
|
134
|
+
LOGMNR_ATTRIBUTE$
|
135
|
+
LOGMNR_CCOL$
|
136
|
+
LOGMNR_CDEF$
|
137
|
+
LOGMNR_COL$
|
138
|
+
LOGMNR_COLTYPE$
|
139
|
+
LOGMNR_DICTIONARY$
|
140
|
+
LOGMNR_DICTSTATE$
|
141
|
+
LOGMNR_ENC$
|
142
|
+
LOGMNR_ERROR$
|
143
|
+
LOGMNR_FILTER$
|
144
|
+
LOGMNR_GLOBAL$
|
145
|
+
LOGMNR_GT_TAB_INCLUDE$
|
146
|
+
LOGMNR_GT_USER_INCLUDE$
|
147
|
+
LOGMNR_GT_XID_INCLUDE$
|
148
|
+
LOGMNR_ICOL$
|
149
|
+
LOGMNR_IND$
|
150
|
+
LOGMNR_INDCOMPART$
|
151
|
+
LOGMNR_INDPART$
|
152
|
+
LOGMNR_INDSUBPART$
|
153
|
+
LOGMNR_INTEGRATED_SPILL$
|
154
|
+
LOGMNR_KOPM$
|
155
|
+
LOGMNR_LOB$
|
156
|
+
LOGMNR_LOBFRAG$
|
157
|
+
LOGMNR_LOG$
|
158
|
+
LOGMNR_LOGMNR_BUILDLOG
|
159
|
+
LOGMNR_NTAB$
|
160
|
+
LOGMNR_OBJ$
|
161
|
+
LOGMNR_OPQTYPE$
|
162
|
+
LOGMNR_PARAMETER$
|
163
|
+
LOGMNR_PARTOBJ$
|
164
|
+
LOGMNR_PROCESSED_LOG$
|
165
|
+
LOGMNR_PROPS$
|
166
|
+
LOGMNR_REFCON$
|
167
|
+
LOGMNR_RESTART_CKPT$
|
168
|
+
LOGMNR_RESTART_CKPT_TXINFO$
|
169
|
+
LOGMNR_SEED$
|
170
|
+
LOGMNR_SESSION$
|
171
|
+
LOGMNR_SESSION_ACTIONS$
|
172
|
+
LOGMNR_SESSION_EVOLVE$
|
173
|
+
LOGMNR_SPILL$
|
174
|
+
LOGMNR_SUBCOLTYPE$
|
175
|
+
LOGMNR_TAB$
|
176
|
+
LOGMNR_TABCOMPART$
|
177
|
+
LOGMNR_TABPART$
|
178
|
+
LOGMNR_TABSUBPART$
|
179
|
+
LOGMNR_TS$
|
180
|
+
LOGMNR_TYPE$
|
181
|
+
LOGMNR_UID$
|
182
|
+
LOGMNR_USER$
|
183
|
+
LOGSTDBY$APPLY_MILESTONE
|
184
|
+
LOGSTDBY$APPLY_PROGRESS
|
185
|
+
LOGSTDBY$EDS_TABLES
|
186
|
+
LOGSTDBY$EVENTS
|
187
|
+
LOGSTDBY$FLASHBACK_SCN
|
188
|
+
LOGSTDBY$HISTORY
|
189
|
+
LOGSTDBY$PARAMETERS
|
190
|
+
LOGSTDBY$PLSQL
|
191
|
+
LOGSTDBY$SCN
|
192
|
+
LOGSTDBY$SKIP
|
193
|
+
LOGSTDBY$SKIP_SUPPORT
|
194
|
+
LOGSTDBY$SKIP_TRANSACTION
|
195
|
+
MVIEW$_ADV_AJG
|
196
|
+
MVIEW$_ADV_BASETABLE
|
197
|
+
MVIEW$_ADV_CLIQUE
|
198
|
+
MVIEW$_ADV_ELIGIBLE
|
199
|
+
MVIEW$_ADV_EXCEPTIONS
|
200
|
+
MVIEW$_ADV_FILTER
|
201
|
+
MVIEW$_ADV_FILTERINSTANCE
|
202
|
+
MVIEW$_ADV_FJG
|
203
|
+
MVIEW$_ADV_GC
|
204
|
+
MVIEW$_ADV_INFO
|
205
|
+
MVIEW$_ADV_JOURNAL
|
206
|
+
MVIEW$_ADV_LEVEL
|
207
|
+
MVIEW$_ADV_LOG
|
208
|
+
MVIEW$_ADV_OUTPUT
|
209
|
+
MVIEW$_ADV_PARAMETERS
|
210
|
+
MVIEW$_ADV_PLAN
|
211
|
+
MVIEW$_ADV_PRETTY
|
212
|
+
MVIEW$_ADV_ROLLUP
|
213
|
+
MVIEW$_ADV_SQLDEPEND
|
214
|
+
MVIEW$_ADV_TEMP
|
215
|
+
MVIEW$_ADV_WORKLOAD
|
216
|
+
MVIEW_EVALUATIONS
|
217
|
+
MVIEW_EXCEPTIONS
|
218
|
+
MVIEW_FILTER
|
219
|
+
MVIEW_FILTERINSTANCE
|
220
|
+
MVIEW_LOG
|
221
|
+
MVIEW_RECOMMENDATIONS
|
222
|
+
MVIEW_WORKLOAD
|
223
|
+
OL$
|
224
|
+
OL$HINTS
|
225
|
+
OL$NODES
|
226
|
+
PRODUCT_PRIVS
|
227
|
+
PRODUCT_USER_PROFILE
|
228
|
+
PUBLICSYN
|
229
|
+
REPCAT$_AUDIT_ATTRIBUTE
|
230
|
+
REPCAT$_AUDIT_COLUMN
|
231
|
+
REPCAT$_COLUMN_GROUP
|
232
|
+
REPCAT$_CONFLICT
|
233
|
+
REPCAT$_DDL
|
234
|
+
REPCAT$_EXCEPTIONS
|
235
|
+
REPCAT$_EXTENSION
|
236
|
+
REPCAT$_FLAVORS
|
237
|
+
REPCAT$_FLAVOR_OBJECTS
|
238
|
+
REPCAT$_GENERATED
|
239
|
+
REPCAT$_GROUPED_COLUMN
|
240
|
+
REPCAT$_INSTANTIATION_DDL
|
241
|
+
REPCAT$_KEY_COLUMNS
|
242
|
+
REPCAT$_OBJECT_PARMS
|
243
|
+
REPCAT$_OBJECT_TYPES
|
244
|
+
REPCAT$_PARAMETER_COLUMN
|
245
|
+
REPCAT$_PRIORITY
|
246
|
+
REPCAT$_PRIORITY_GROUP
|
247
|
+
REPCAT$_REFRESH_TEMPLATES
|
248
|
+
REPCAT$_REPCAT
|
249
|
+
REPCAT$_REPCATLOG
|
250
|
+
REPCAT$_REPCOLUMN
|
251
|
+
REPCAT$_REPGROUP_PRIVS
|
252
|
+
REPCAT$_REPOBJECT
|
253
|
+
REPCAT$_REPPROP
|
254
|
+
REPCAT$_REPSCHEMA
|
255
|
+
REPCAT$_RESOLUTION
|
256
|
+
REPCAT$_RESOLUTION_METHOD
|
257
|
+
REPCAT$_RESOLUTION_STATISTICS
|
258
|
+
REPCAT$_RESOL_STATS_CONTROL
|
259
|
+
REPCAT$_RUNTIME_PARMS
|
260
|
+
REPCAT$_SITES_NEW
|
261
|
+
REPCAT$_SITE_OBJECTS
|
262
|
+
REPCAT$_SNAPGROUP
|
263
|
+
REPCAT$_TEMPLATE_OBJECTS
|
264
|
+
REPCAT$_TEMPLATE_PARMS
|
265
|
+
REPCAT$_TEMPLATE_REFGROUPS
|
266
|
+
REPCAT$_TEMPLATE_SITES
|
267
|
+
REPCAT$_TEMPLATE_STATUS
|
268
|
+
REPCAT$_TEMPLATE_TARGETS
|
269
|
+
REPCAT$_TEMPLATE_TYPES
|
270
|
+
REPCAT$_USER_AUTHORIZATIONS
|
271
|
+
REPCAT$_USER_PARM_VALUES
|
272
|
+
SQLPLUS_PRODUCT_PROFILE
|
273
|
+
SYSCATALOG
|
274
|
+
SYSFILES
|
275
|
+
TAB
|
276
|
+
TABQUOTAS
|
277
|
+
].freeze
|
278
|
+
|
279
|
+
def exclude_tables
|
280
|
+
return @exclude_tables if @exclude_tables
|
281
|
+
|
282
|
+
# Rails default tables
|
283
|
+
tables = %w[ar_internal_metadata schema_migrations]
|
284
|
+
|
285
|
+
# Oracle system tables
|
286
|
+
tables += ORACLE_SYSTEM_TABLES
|
287
|
+
|
288
|
+
@exclude_tables = tables.map(&:downcase)
|
289
|
+
@exclude_tables
|
290
|
+
end
|
79
291
|
end
|
80
292
|
end
|
81
293
|
end
|
data/lib/index_shotgun/cli.rb
CHANGED
@@ -56,22 +56,24 @@ module IndexShotgun
|
|
56
56
|
|
57
57
|
private
|
58
58
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
59
|
+
def analyze(adapter_name, gem_name = nil)
|
60
|
+
gem_name ||= adapter_name
|
61
|
+
begin
|
62
|
+
require gem_name
|
63
|
+
rescue LoadError
|
64
|
+
puts "[ERROR] #{adapter_name} is not installed. Please run `gem install #{gem_name}` and install gem"
|
65
|
+
exit!
|
66
|
+
end
|
67
67
|
|
68
|
-
|
68
|
+
config = options.reverse_merge(adapter: adapter_name)
|
69
69
|
|
70
|
-
|
71
|
-
|
70
|
+
ask_password = config.delete("ask_password")
|
71
|
+
config[:password] = ask("Input password (hidden):", echo: false) if ask_password
|
72
72
|
|
73
|
-
|
74
|
-
|
75
|
-
|
73
|
+
ActiveRecord::Base.establish_connection(config)
|
74
|
+
response = IndexShotgun::Analyzer.perform
|
75
|
+
puts response.message
|
76
|
+
response.exit_if_failure!
|
77
|
+
end
|
76
78
|
end
|
77
79
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: index_shotgun
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- sue445
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-11-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 5.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 5.0.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: thor
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -42,18 +42,18 @@ dependencies:
|
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: coveralls
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
@@ -67,21 +67,21 @@ dependencies:
|
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: onkcop
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - '='
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 0.53.0.2
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - '='
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 0.53.0.2
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: rake
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - ">="
|
@@ -95,21 +95,21 @@ dependencies:
|
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: rake_shared_context
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- -
|
101
|
+
- - '='
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
103
|
+
version: 0.2.2
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- -
|
108
|
+
- - '='
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
110
|
+
version: 0.2.2
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: rspec
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - ">="
|
@@ -123,7 +123,7 @@ dependencies:
|
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name: rspec
|
126
|
+
name: rspec-its
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - ">="
|
@@ -137,7 +137,7 @@ dependencies:
|
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
|
-
name: rspec-
|
140
|
+
name: rspec-power_assert
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
143
|
- - ">="
|
@@ -151,7 +151,21 @@ dependencies:
|
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
154
|
+
name: rubocop
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - '='
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: 0.62.0
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - '='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: 0.62.0
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: rubocop_auto_corrector
|
155
169
|
requirement: !ruby/object:Gem::Requirement
|
156
170
|
requirements:
|
157
171
|
- - ">="
|
@@ -165,19 +179,19 @@ dependencies:
|
|
165
179
|
- !ruby/object:Gem::Version
|
166
180
|
version: '0'
|
167
181
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
182
|
+
name: simplecov
|
169
183
|
requirement: !ruby/object:Gem::Requirement
|
170
184
|
requirements:
|
171
|
-
- -
|
185
|
+
- - "<"
|
172
186
|
- !ruby/object:Gem::Version
|
173
|
-
version: 0.
|
187
|
+
version: 0.18.0
|
174
188
|
type: :development
|
175
189
|
prerelease: false
|
176
190
|
version_requirements: !ruby/object:Gem::Requirement
|
177
191
|
requirements:
|
178
|
-
- -
|
192
|
+
- - "<"
|
179
193
|
- !ruby/object:Gem::Version
|
180
|
-
version: 0.
|
194
|
+
version: 0.18.0
|
181
195
|
description: duplicate index checker
|
182
196
|
email:
|
183
197
|
- sue445@sue445.net
|
@@ -187,12 +201,11 @@ extensions: []
|
|
187
201
|
extra_rdoc_files: []
|
188
202
|
files:
|
189
203
|
- ".coveralls.yml"
|
204
|
+
- ".github/workflows/test.yml"
|
205
|
+
- ".github_changelog_generator"
|
190
206
|
- ".gitignore"
|
191
|
-
- ".hound.yml"
|
192
207
|
- ".rspec"
|
193
208
|
- ".rubocop.yml"
|
194
|
-
- ".rubocop_standard.yml"
|
195
|
-
- ".travis.yml"
|
196
209
|
- CHANGELOG.md
|
197
210
|
- Gemfile
|
198
211
|
- LICENSE.txt
|
@@ -200,7 +213,20 @@ files:
|
|
200
213
|
- Rakefile
|
201
214
|
- bin/console
|
202
215
|
- bin/setup
|
216
|
+
- ci/build.sh
|
217
|
+
- ci/database.yml.mysql
|
218
|
+
- ci/database.yml.oracle
|
219
|
+
- ci/database.yml.postgresql
|
220
|
+
- ci/database.yml.sqlite3
|
221
|
+
- ci/install.sh
|
203
222
|
- exe/index_shotgun
|
223
|
+
- gemfiles/activerecord_5_0.gemfile
|
224
|
+
- gemfiles/activerecord_5_1.gemfile
|
225
|
+
- gemfiles/activerecord_5_2.gemfile
|
226
|
+
- gemfiles/activerecord_6_0.gemfile
|
227
|
+
- gemfiles/activerecord_6_1.gemfile
|
228
|
+
- gemfiles/activerecord_7_0.gemfile
|
229
|
+
- gemfiles/common.gemfile
|
204
230
|
- index_shotgun.gemspec
|
205
231
|
- lib/index_shotgun.rb
|
206
232
|
- lib/index_shotgun/analyzer.rb
|
@@ -210,16 +236,15 @@ files:
|
|
210
236
|
- lib/index_shotgun/tasks.rb
|
211
237
|
- lib/index_shotgun/tasks/index_shotgun.rake
|
212
238
|
- lib/index_shotgun/version.rb
|
213
|
-
- travis_ci/build.sh
|
214
|
-
- travis_ci/database.yml.mysql
|
215
|
-
- travis_ci/database.yml.postgresql
|
216
|
-
- travis_ci/database.yml.sqlite3
|
217
239
|
homepage: https://github.com/sue445/index_shotgun
|
218
240
|
licenses:
|
219
241
|
- MIT
|
220
242
|
metadata:
|
221
|
-
|
222
|
-
|
243
|
+
homepage_uri: https://github.com/sue445/index_shotgun
|
244
|
+
source_code_uri: https://github.com/sue445/index_shotgun
|
245
|
+
changelog_uri: https://github.com/sue445/index_shotgun/blob/master/CHANGELOG.md
|
246
|
+
rubygems_mfa_required: 'true'
|
247
|
+
post_install_message:
|
223
248
|
rdoc_options: []
|
224
249
|
require_paths:
|
225
250
|
- lib
|
@@ -227,16 +252,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
227
252
|
requirements:
|
228
253
|
- - ">="
|
229
254
|
- !ruby/object:Gem::Version
|
230
|
-
version: 2.
|
255
|
+
version: 2.4.0
|
231
256
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
232
257
|
requirements:
|
233
258
|
- - ">="
|
234
259
|
- !ruby/object:Gem::Version
|
235
260
|
version: '0'
|
236
261
|
requirements: []
|
237
|
-
|
238
|
-
|
239
|
-
signing_key:
|
262
|
+
rubygems_version: 3.2.22
|
263
|
+
signing_key:
|
240
264
|
specification_version: 4
|
241
265
|
summary: duplicate index checker
|
242
266
|
test_files: []
|
data/.hound.yml
DELETED