depend_lister 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +24 -0
- data/Gemfile +10 -2
- data/Gemfile.lock +13 -2
- data/README.md +41 -15
- data/depend_lister.gemspec +2 -1
- data/lib/depend_lister/belong.rb +43 -0
- data/lib/depend_lister/depend_lister_core.rb +172 -0
- data/lib/depend_lister/version.rb +1 -1
- data/lib/tasks/depend_lister.rake +4 -140
- metadata +22 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 748b8e0c6661dba50f1ff1dca1302bc40f4cde0ff0169b16f0f9f349a30a1743
|
4
|
+
data.tar.gz: bd424a38f6cce4d542795b048604152a9ae12ca00026dfab0d43aad8247b6419
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 68e795e7ba69f213e980e8b5ca9a0de7a223584612cd972187897d4cfdad0b4787b18c135c55c5c99fdd5a2872d7b7522168dbbfed12a369ed010d066c7ba450
|
7
|
+
data.tar.gz: 8375045722cb62eb85a0f805b5449c63e53d2892f647ca0519ed5ca67c0070a78f003dbb9885114bb69e230f9d50307dc47667e6a5e1fbe7ef7f3b222f9584a6
|
@@ -0,0 +1,24 @@
|
|
1
|
+
name: Ruby
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [ master ]
|
6
|
+
pull_request:
|
7
|
+
branches: [ master ]
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
build:
|
11
|
+
|
12
|
+
runs-on: ubuntu-latest
|
13
|
+
|
14
|
+
steps:
|
15
|
+
- uses: actions/checkout@v2
|
16
|
+
- name: Set up Ruby 2.6
|
17
|
+
uses: actions/setup-ruby@v1
|
18
|
+
with:
|
19
|
+
ruby-version: 2.6.x
|
20
|
+
- name: Build and test with Rake
|
21
|
+
run: |
|
22
|
+
gem install bundler
|
23
|
+
bundle install --jobs 4 --retry 3
|
24
|
+
bundle exec rake
|
data/Gemfile
CHANGED
@@ -3,5 +3,13 @@ source "https://rubygems.org"
|
|
3
3
|
# Specify your gem's dependencies in depend_lister.gemspec
|
4
4
|
gemspec
|
5
5
|
|
6
|
-
gem "rake", "~> 12.
|
7
|
-
|
6
|
+
gem "rake", "~> 12.3.3"
|
7
|
+
|
8
|
+
group :development, :test do
|
9
|
+
gem "pry"
|
10
|
+
gem "pry-byebug"
|
11
|
+
end
|
12
|
+
|
13
|
+
group :test do
|
14
|
+
gem "rspec", "~> 3.0"
|
15
|
+
end
|
data/Gemfile.lock
CHANGED
@@ -6,7 +6,16 @@ PATH
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
+
byebug (11.1.1)
|
10
|
+
coderay (1.1.2)
|
9
11
|
diff-lcs (1.3)
|
12
|
+
method_source (1.0.0)
|
13
|
+
pry (0.13.0)
|
14
|
+
coderay (~> 1.1)
|
15
|
+
method_source (~> 1.0)
|
16
|
+
pry-byebug (3.9.0)
|
17
|
+
byebug (~> 11.0)
|
18
|
+
pry (~> 0.13.0)
|
10
19
|
rake (12.3.3)
|
11
20
|
rspec (3.9.0)
|
12
21
|
rspec-core (~> 3.9.0)
|
@@ -28,8 +37,10 @@ PLATFORMS
|
|
28
37
|
DEPENDENCIES
|
29
38
|
bundler (~> 2.1)
|
30
39
|
depend_lister!
|
31
|
-
|
40
|
+
pry
|
41
|
+
pry-byebug
|
42
|
+
rake (~> 12.3.3)
|
32
43
|
rspec (~> 3.0)
|
33
44
|
|
34
45
|
BUNDLED WITH
|
35
|
-
2.1.
|
46
|
+
2.1.4
|
data/README.md
CHANGED
@@ -1,39 +1,65 @@
|
|
1
1
|
# DependLister
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
TODO: Delete this and the text above, and describe your gem
|
3
|
+
DependLister analyzes belongs_to defined by a model and outputs a list of tables in order with a little dependence.
|
4
|
+
When You begin the maintenance of the existing project, it may be helpful.
|
6
5
|
|
7
6
|
## Installation
|
8
7
|
|
9
|
-
|
8
|
+
To use it, add it to your Gemfile:
|
10
9
|
|
11
10
|
```ruby
|
12
11
|
gem 'depend_lister'
|
13
12
|
```
|
14
13
|
|
15
|
-
|
14
|
+
and bundle:
|
15
|
+
|
16
|
+
```shell
|
17
|
+
bundle
|
18
|
+
```
|
16
19
|
|
17
|
-
|
20
|
+
#### Post Installation
|
18
21
|
|
19
|
-
|
22
|
+
Install migrations:
|
20
23
|
|
21
|
-
|
24
|
+
```shell
|
25
|
+
rake db:migrate
|
26
|
+
```
|
22
27
|
|
23
28
|
## Usage
|
24
29
|
|
25
|
-
|
30
|
+
```shell
|
31
|
+
rails depend_lister
|
32
|
+
```
|
26
33
|
|
27
|
-
|
34
|
+
### Example of Result
|
35
|
+
|
36
|
+
```shell
|
37
|
+
$ rails depend_lister
|
38
|
+
Level Table BelongsTo
|
39
|
+
Lv1 accounts
|
40
|
+
Lv2 follows accounts
|
41
|
+
Lv2 statuses accounts
|
42
|
+
Lv2 users accounts
|
43
|
+
Lv3 favourites accounts, statuses
|
44
|
+
Lv3 mentions accounts, statuses
|
45
|
+
Lv3 stream_entries accounts, statuses
|
46
|
+
```
|
28
47
|
|
29
|
-
|
48
|
+
You can copy the result and paste to Excel Sheet or Google Spread Sheet.
|
30
49
|
|
31
|
-
|
50
|
+
| Level | Table | BelongsTo |
|
51
|
+
| --- | --- | --- |
|
52
|
+
| Lv1 | accounts | |
|
53
|
+
| Lv2 | follows | accounts |
|
54
|
+
| Lv2 | statuses | accounts |
|
55
|
+
| Lv2 | users | accounts |
|
56
|
+
| Lv3 | favourites | accounts, statuses |
|
57
|
+
| Lv3 | mentions | accounts, statuses |
|
58
|
+
| Lv3 | stream_entries | accounts, statuses |
|
32
59
|
|
33
60
|
## Contributing
|
34
61
|
|
35
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
36
|
-
|
62
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/kayamak/depend_lister. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/kayamak/depend_lister).
|
37
63
|
|
38
64
|
## License
|
39
65
|
|
@@ -41,4 +67,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
|
|
41
67
|
|
42
68
|
## Code of Conduct
|
43
69
|
|
44
|
-
Everyone interacting in the DependLister project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/
|
70
|
+
Everyone interacting in the DependLister project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/kayamak/depend_lister).
|
data/depend_lister.gemspec
CHANGED
@@ -28,6 +28,7 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.require_paths = ["lib"]
|
29
29
|
|
30
30
|
spec.add_development_dependency "bundler", "~> 2.1"
|
31
|
-
spec.add_development_dependency "rake",
|
31
|
+
spec.add_development_dependency "rake", ">= 12.3.3"
|
32
32
|
spec.add_development_dependency "rspec", '~> 0'
|
33
|
+
spec.add_development_dependency "pry"
|
33
34
|
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
class Belong
|
2
|
+
# Generates the hash(key: table name, value: belongs_to point table name).
|
3
|
+
def to_table_belongs_hash
|
4
|
+
# Generates the hash(key: table name, value: model).
|
5
|
+
table_model_hash = to_table_model_hash
|
6
|
+
|
7
|
+
all_tables = table_model_hash.keys
|
8
|
+
belogs = {}
|
9
|
+
table_model_hash.each do |table, model|
|
10
|
+
next unless model
|
11
|
+
# the model which does not exist is ignored.
|
12
|
+
tables = belong_tables(model)
|
13
|
+
# models of alias are exclusion.
|
14
|
+
belogs[table] = tables & all_tables
|
15
|
+
end
|
16
|
+
belogs
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
# Generates the hash(key: table name, value: model name).
|
22
|
+
def make_table_model_hash
|
23
|
+
tables = gain_tables
|
24
|
+
models = to_models(tables)
|
25
|
+
Hash[*tables.zip(models).flatten]
|
26
|
+
end
|
27
|
+
|
28
|
+
# Gains table names.
|
29
|
+
def gain_tables
|
30
|
+
ActiveRecord::Base.connection.tables.sort
|
31
|
+
end
|
32
|
+
|
33
|
+
def to_models(tables)
|
34
|
+
tables.map{ |table| Object.const_get(table.classify) rescue nil }
|
35
|
+
end
|
36
|
+
|
37
|
+
# Gains the table name of the belongs_to point of the model.
|
38
|
+
def belong_tables(model)
|
39
|
+
model.reflect_on_all_associations(:belongs_to).map do |belong|
|
40
|
+
belong.name.to_s.pluralize
|
41
|
+
end.sort
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,172 @@
|
|
1
|
+
require 'depend_lister/belong'
|
2
|
+
class DependListerCore
|
3
|
+
LEVEL_LIMITTER = 1000
|
4
|
+
|
5
|
+
def execute
|
6
|
+
make_table_belongs_hash
|
7
|
+
|
8
|
+
level_tables_hash = to_level_tables_hash_main!
|
9
|
+
|
10
|
+
adjust_circulation_main!(level_tables_hash)
|
11
|
+
|
12
|
+
displayed = display_hash(level_tables_hash)
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def make_table_belongs_hash
|
18
|
+
@table_belongs_hash = Belong.new.make_table_belongs_hash
|
19
|
+
@table_belongs_hash_bak = @table_belongs_hash.dup
|
20
|
+
end
|
21
|
+
|
22
|
+
def adjust_circulation_main!(level_tables_hash)
|
23
|
+
loop do
|
24
|
+
adjust_circulation!(level_tables_hash)
|
25
|
+
break if @table_belongs_hash.empty?
|
26
|
+
if level_tables_hash.keys.max > LEVEL_LIMITTER
|
27
|
+
puts 'over loop!'
|
28
|
+
break
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def adjust_circulation!(level_tables_hash)
|
34
|
+
unless @table_belongs_hash.empty?
|
35
|
+
extract_no_belong!
|
36
|
+
table, blong = find_circulation
|
37
|
+
if table
|
38
|
+
@table_belongs_hash[table] = []
|
39
|
+
@table_belongs_hash[blong] = []
|
40
|
+
next_level = level_tables_hash.keys.max + 1
|
41
|
+
next_level_tables_hash = to_level_tables_hash_main!(next_level)
|
42
|
+
level_tables_hash.merge!(next_level_tables_hash)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def extract_belogs_to_self!
|
48
|
+
@table_belongs_hash.each do |table, belongs|
|
49
|
+
|
50
|
+
if belongs.include?(table)
|
51
|
+
@table_belongs_hash[table] = belongs - [table]
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def to_level_tables_hash_main!(level=1)
|
57
|
+
extract_belogs_to_self!
|
58
|
+
level_tables_hash = {}
|
59
|
+
top_tables = to_top_tables!
|
60
|
+
level_tables_hash[level] = top_tables
|
61
|
+
loop do
|
62
|
+
level += 1
|
63
|
+
next_hash = to_level_tables_hash!(level, level_tables_hash)
|
64
|
+
level_tables_hash.merge!(next_hash)
|
65
|
+
break if level_tables_hash[level].empty?
|
66
|
+
if level > LEVEL_LIMITTER
|
67
|
+
puts 'over loop!!'
|
68
|
+
break
|
69
|
+
end
|
70
|
+
end
|
71
|
+
level_tables_hash
|
72
|
+
end
|
73
|
+
|
74
|
+
def extract_no_belong!
|
75
|
+
tables = @table_belongs_hash.keys
|
76
|
+
@table_belongs_hash.each do |table, belongs|
|
77
|
+
@table_belongs_hash[table] = belongs.select { |belong| tables.include?(belong) }
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def find_circulation
|
82
|
+
tables = @table_belongs_hash.keys
|
83
|
+
@table_belongs_hash.each do |table, belongs|
|
84
|
+
belongs.each do |belong|
|
85
|
+
# the belong without a reference point is inapplicable.
|
86
|
+
next unless tables.include?(belong)
|
87
|
+
# belog with a reference point.
|
88
|
+
next_belongs = @table_belongs_hash[belong]
|
89
|
+
if next_belongs.include?(table)
|
90
|
+
# When former table is included in reference point belog
|
91
|
+
return [table, belong].sort
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
return [nil, nil]
|
96
|
+
end
|
97
|
+
|
98
|
+
def to_top_tables!
|
99
|
+
# Gains table names without belongs_to
|
100
|
+
top_tables = @table_belongs_hash.select do |table, belongs|
|
101
|
+
if belongs.empty?
|
102
|
+
@table_belongs_hash.delete(table)
|
103
|
+
end
|
104
|
+
belongs.empty?
|
105
|
+
end.keys
|
106
|
+
top_tables.sort
|
107
|
+
end
|
108
|
+
|
109
|
+
# Converts it into the hash(key: level, value: table name).
|
110
|
+
def to_level_tables_hash!(level, level_tables_hash)
|
111
|
+
# Gains table names of level-1
|
112
|
+
prev_levels = []
|
113
|
+
(2..level).each do |level|
|
114
|
+
prev_levels << level_tables_hash.fetch(level-1, [])
|
115
|
+
end
|
116
|
+
prev_levels.flatten!
|
117
|
+
|
118
|
+
# A table name of level-1 selects
|
119
|
+
# the level of the table name of
|
120
|
+
# the belongt_to point as level
|
121
|
+
@table_belongs_hash.each do |table, belongs|
|
122
|
+
found = false
|
123
|
+
belongs.each do |belong|
|
124
|
+
if prev_levels.include?(belong)
|
125
|
+
found = true
|
126
|
+
break
|
127
|
+
end
|
128
|
+
end
|
129
|
+
if found
|
130
|
+
level_tables_hash[level] ||= []
|
131
|
+
level_tables_hash[level] << table
|
132
|
+
end
|
133
|
+
end
|
134
|
+
# Gains the table name that belongs of
|
135
|
+
# @table_belongs_hash was included in
|
136
|
+
# the table of the previous level and
|
137
|
+
# exclude it from level_tables_hash[level]
|
138
|
+
extract_tables = []
|
139
|
+
@table_belongs_hash.each do |table, belongs|
|
140
|
+
unless belongs.to_set.subset?(prev_levels.to_set)
|
141
|
+
# When all belongs is not included in prev_levels
|
142
|
+
extract_tables << table
|
143
|
+
end
|
144
|
+
end
|
145
|
+
level_tables_hash[level] ||= []
|
146
|
+
level_tables_hash[level] -= extract_tables
|
147
|
+
|
148
|
+
level_tables_hash[level].each do |table|
|
149
|
+
@table_belongs_hash.delete(table)
|
150
|
+
end
|
151
|
+
level_tables_hash
|
152
|
+
end
|
153
|
+
|
154
|
+
def debug_hash(hash)
|
155
|
+
hash.each{|key, value| puts "#{key}:#{value}" }
|
156
|
+
end
|
157
|
+
|
158
|
+
def display_hash(level_tables_hash)
|
159
|
+
displayes = []
|
160
|
+
displayes << "Level\tTable\tBelongsTo"
|
161
|
+
level_tables_hash.each do |level, tables|
|
162
|
+
tables.each do |table|
|
163
|
+
blongs = @table_belongs_hash_bak[table].join(', ')
|
164
|
+
displayes << "Lv#{level}\t#{table}\t#{blongs}"
|
165
|
+
end
|
166
|
+
displayes << "Lv#{level}\t\t" if tables.empty?
|
167
|
+
end
|
168
|
+
result = displayes.join("\n")
|
169
|
+
puts result
|
170
|
+
result
|
171
|
+
end
|
172
|
+
end
|
@@ -1,143 +1,7 @@
|
|
1
|
-
|
1
|
+
require "depend_lister/depend_lister_core"
|
2
|
+
|
3
|
+
desc "Table list of dependence order"
|
2
4
|
task depend_lister: :environment do
|
3
|
-
|
5
|
+
DependListerCore.new.execute
|
4
6
|
end
|
5
7
|
|
6
|
-
class DependListerMain
|
7
|
-
def execute
|
8
|
-
tables = gain_tables
|
9
|
-
models = to_models(tables)
|
10
|
-
# テーブル名がキーで値がモデルのハッシュを生成
|
11
|
-
table_model_hash = to_table_model_hash(tables, models)
|
12
|
-
# テーブル名がキーで値がbelongs_to先テーブル名のハッシュを生成
|
13
|
-
table_belongs_hash = to_table_belongs_hash(table_model_hash, tables)
|
14
|
-
#debug_hash(table_belongs_hash)
|
15
|
-
# レベルがキーで値がテーブル名のハッシュを生成
|
16
|
-
level_table_hash = to_level_table_hash_main(table_belongs_hash)
|
17
|
-
# レベルを整理する
|
18
|
-
organized_level_table_hash = organize_level(level_table_hash, table_belongs_hash)
|
19
|
-
display_hash(organized_level_table_hash, table_belongs_hash)
|
20
|
-
end
|
21
|
-
|
22
|
-
private
|
23
|
-
|
24
|
-
def organize_level(level_table_hash, table_belongs_hash)
|
25
|
-
organized_level_table_hash = {}
|
26
|
-
pre_tables = []
|
27
|
-
level_table_hash.each do |level, tables|
|
28
|
-
if level == 1
|
29
|
-
organized_level_table_hash[level] = tables
|
30
|
-
pre_tables = tables
|
31
|
-
next
|
32
|
-
end
|
33
|
-
exist_belongs = []
|
34
|
-
tables.each do |table|
|
35
|
-
belongs = table_belongs_hash.fetch(table, [])
|
36
|
-
exist_belongs << belongs.find{ |belong| pre_tables.include?(belong) }
|
37
|
-
end
|
38
|
-
exist_belongs.compact!
|
39
|
-
if exist_belongs.empty?
|
40
|
-
level_tables = organized_level_table_hash[level-1] || []
|
41
|
-
level_tables << tables
|
42
|
-
organized_level_table_hash[level-1] = level_tables.flatten
|
43
|
-
pre_tables << tables
|
44
|
-
else
|
45
|
-
organized_level_table_hash[level] = tables
|
46
|
-
pre_tables = tables
|
47
|
-
end
|
48
|
-
end
|
49
|
-
organized_level_table_hash
|
50
|
-
end
|
51
|
-
|
52
|
-
def to_level_table_hash_main(arg_table_belongs_hash)
|
53
|
-
table_belongs_hash = arg_table_belongs_hash.dup
|
54
|
-
level = 0;
|
55
|
-
level_table_hash = {}
|
56
|
-
loop do
|
57
|
-
level += 1
|
58
|
-
level_table_hash.merge!(to_level_table_hash!(table_belongs_hash, level))
|
59
|
-
break if table_belongs_hash.empty?
|
60
|
-
raise 'over loop' if level > 99
|
61
|
-
end
|
62
|
-
level_table_hash
|
63
|
-
end
|
64
|
-
|
65
|
-
# テーブル名を取得
|
66
|
-
def gain_tables
|
67
|
-
ActiveRecord::Base.connection.tables.sort
|
68
|
-
end
|
69
|
-
|
70
|
-
def to_models(tables)
|
71
|
-
tables.map{ |table| Object.const_get(table.classify) rescue nil }
|
72
|
-
end
|
73
|
-
|
74
|
-
# テーブル名がキーで値がモデルのハッシュを生成
|
75
|
-
def to_table_model_hash(tables, models)
|
76
|
-
Hash[*tables.zip(models).flatten]
|
77
|
-
end
|
78
|
-
|
79
|
-
# テーブル名がキーで値がモデルのハッシュを生成
|
80
|
-
def models_per_table(tables, models)
|
81
|
-
Hash[*tables.zip(models).flatten]
|
82
|
-
end
|
83
|
-
|
84
|
-
# テーブル名がキーで値がbelongs_to先テーブルのハッシュを生成
|
85
|
-
def to_table_belongs_hash(table_model_hash, all_tables)
|
86
|
-
belogs = {}
|
87
|
-
table_model_hash.each do |table, model|
|
88
|
-
next unless model # モデルが存在しないtableは無視する
|
89
|
-
tables = belong_tables(model)
|
90
|
-
# 別名のmodelやparents(自身のモデルをbelongs_toのみしているものは)は除外
|
91
|
-
belogs[table] = tables & all_tables
|
92
|
-
end
|
93
|
-
belogs
|
94
|
-
end
|
95
|
-
|
96
|
-
# モデルのbelongs_to先のテーブル名を取得
|
97
|
-
def belong_tables(model)
|
98
|
-
model.reflect_on_all_associations(:belongs_to).map do |belong|
|
99
|
-
belong.name.to_s.pluralize
|
100
|
-
end.sort
|
101
|
-
end
|
102
|
-
|
103
|
-
# ハッシュが空ではなかったら1.から繰り返す。
|
104
|
-
def to_level_table_hash!(table_belongs_hash, level)
|
105
|
-
level_table_hash = {}
|
106
|
-
# 1. ハッシュの値が空のテーブル名のテーブル名を空テーブル名を取得する。
|
107
|
-
top_tables = table_belongs_hash.select do |table, belongs|
|
108
|
-
belongs.empty?
|
109
|
-
end.keys
|
110
|
-
if top_tables.empty?
|
111
|
-
top_tables = table_belongs_hash.select do |table, belongs|
|
112
|
-
belongs.size == 1
|
113
|
-
end.keys
|
114
|
-
end
|
115
|
-
# 2. 空テーブル名をレベルiとする。
|
116
|
-
level_table_hash[level] = top_tables
|
117
|
-
# 3. ハッシュから空テーブル名をキーにして除去する。
|
118
|
-
top_tables.each do |table|
|
119
|
-
table_belongs_hash.delete(table)
|
120
|
-
end
|
121
|
-
# 4. ハッシュの値から空テーブル名を削除する。
|
122
|
-
tables = table_belongs_hash.keys
|
123
|
-
tables.each do |table|
|
124
|
-
belongs = table_belongs_hash[table]
|
125
|
-
table_belongs_hash[table] = belongs - top_tables
|
126
|
-
end
|
127
|
-
level_table_hash
|
128
|
-
end
|
129
|
-
|
130
|
-
def debug_hash(hash)
|
131
|
-
hash.each{|key, value| puts "#{key}:#{value}" }
|
132
|
-
end
|
133
|
-
|
134
|
-
def display_hash(level_table_hash, table_belongs_hash)
|
135
|
-
puts "Level\tTable\tBelongsTo"
|
136
|
-
level_table_hash.each do |level, tables|
|
137
|
-
tables.each do |table|
|
138
|
-
blongs = table_belongs_hash[table].join(', ')
|
139
|
-
puts "Lv#{level}\t#{table}\t#{blongs}"
|
140
|
-
end
|
141
|
-
end
|
142
|
-
end
|
143
|
-
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: depend_lister
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Keiichi Kayama
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-03-
|
11
|
+
date: 2020-03-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -26,6 +26,20 @@ dependencies:
|
|
26
26
|
version: '2.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 12.3.3
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 12.3.3
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
30
44
|
requirements:
|
31
45
|
- - "~>"
|
@@ -39,17 +53,17 @@ dependencies:
|
|
39
53
|
- !ruby/object:Gem::Version
|
40
54
|
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
56
|
+
name: pry
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
|
-
- - "
|
59
|
+
- - ">="
|
46
60
|
- !ruby/object:Gem::Version
|
47
61
|
version: '0'
|
48
62
|
type: :development
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
|
-
- - "
|
66
|
+
- - ">="
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: '0'
|
55
69
|
description: depend_lister is a command line tool which displays a list sorted by
|
@@ -61,6 +75,7 @@ extensions: []
|
|
61
75
|
extra_rdoc_files: []
|
62
76
|
files:
|
63
77
|
- ".gem/credentials"
|
78
|
+
- ".github/workflows/ruby.yml"
|
64
79
|
- ".gitignore"
|
65
80
|
- ".rspec"
|
66
81
|
- ".travis.yml"
|
@@ -74,6 +89,8 @@ files:
|
|
74
89
|
- bin/setup
|
75
90
|
- depend_lister.gemspec
|
76
91
|
- lib/depend_lister.rb
|
92
|
+
- lib/depend_lister/belong.rb
|
93
|
+
- lib/depend_lister/depend_lister_core.rb
|
77
94
|
- lib/depend_lister/version.rb
|
78
95
|
- lib/tasks/depend_lister.rake
|
79
96
|
homepage: https://github.com/kayamak/depend_lister
|