table_inspector 0.5.4 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 501b198b975a552496604e4342afac6e837423ca04487327a9a7354c72f9ba36
4
- data.tar.gz: 04d8de8b58039d17d8e5229cfab6b766776c099ce5ef0d39f22cfbba8ffab09a
3
+ metadata.gz: a7b361cd6519e4f22acd13f7414daa56d361f83b2bc742679fd7413bc3a3e9d3
4
+ data.tar.gz: efebb7e0def5dc75c974a06d7504efaa462068d009438885c16d9a0e6ed73ba1
5
5
  SHA512:
6
- metadata.gz: baaf7974ceeb46d135c2d611b7397669b13081e3d29e15d5a5703b080e97f9380f29b599ab6119f6e5f7e4da3eead47201e5cd7a5532993358c8565e9afa8ec4
7
- data.tar.gz: 30175fa53056aaa4716aabd45085b0f84d05cc5f68f746828dd8b06c082565799bfc1bdeec962ad77e3756de883a2d4fc9c6190b104cd2f4508d0ef43d7d60ab
6
+ metadata.gz: cfb17c67a0091dbaccbad92a638bd22de4f7361458baf0bcc25902ce97709d6d15b69d7e01ec51112d5b649f2d89e1c24e762ce3dd2d536055ad9d1b8ab15fe8
7
+ data.tar.gz: dd4b194ebf0c45c0b76c18b447ca77460fc84cc74343673cfe250a561e381efc8bccabd4628ec46c2a42262745e7485d8861c498be8f81f2b2cff82d332bc6f4
data/README.md CHANGED
@@ -1,59 +1,112 @@
1
1
  # TableInspector
2
- This is a rails gem for print the definition of table. Sometimes we use some gems to embed the table schema to model file(like `annotate`).
3
- but sometimes it is hard to maintain, and it has a little noise. I want to find another way to check the schema of table instead of
4
- using `annotate`, So I wrote this gem to do this.
2
+ ![Test coverage](https://img.shields.io/badge/Test_coverage-99.65-green)
3
+ ![Release version](https://img.shields.io/badge/Release-v0.6.0-green)
4
+ ![Workflow badge](https://github.com/otorain/table_inspector/actions/workflows/run_test.yml/badge.svg)
5
+
6
+ This is a Rails gem that allows you to print the structure of a database table by providing a model class.
7
+ It functions similar to [annotate_models](https://github.com/ctran/annotate_models), but offers an alternative way to checking the table schema.
8
+ The print function is based on [terminal-table](https://github.com/tj/terminal-table)
9
+
10
+ This doc is about version 0.6.0. For version 0.5.0, please see [here](https://github.com/otorain/table_inspector/tree/v0.5.5)
11
+
12
+ ## Installation
13
+ Add this line to your application's Gemfile:
14
+
15
+ ```ruby
16
+ gem "table_inspector", "~> 0.6.0"
17
+ ```
18
+
19
+ And then execute:
20
+ ```bash
21
+ $ bundle
22
+ ```
23
+
24
+ Or install it yourself as:
25
+ ```bash
26
+ $ gem install table_inspector
27
+ ```
5
28
 
6
29
  ## Usage
7
30
  Assuming there is a model call `User` which has `id` and `name` column, and has a unique index for `name`.
8
- For print the definition of User, we can use:
31
+ For print the table structure of User, we can use:
9
32
  ```ruby
10
33
  require "table_inspector"
11
34
 
12
35
  TableInspector.scan User
13
36
  ```
14
37
 
15
- ![TableInspect scan table](/img/table_inspector_scan_table_2.png)
38
+ ![TableInspect scan table](/img/table_inspector_scan_table_3.png)
16
39
 
17
- It will print the all table definition and all indexes.
40
+ It will print the scheme of table and indexes.
41
+ (If the table content is too long, It may be printed messy. You can adjust the scaling of the terminal window to fix it.
42
+ Alternatively, you can use `TableInspector.scan(User, :name)` to print a specific column)
18
43
 
19
44
  Or you can use `TableInspector.ascan` to print more colorful table(`ascan` means `awesome scan`) :
20
45
  ```ruby
21
46
  TableInspector.ascan User
22
47
  ```
23
- ![TableInspect ascan table](/img/table_inspector_ascan_table_2.png)
48
+ ![TableInspect ascan table](/img/table_inspector_ascan_table_3.png)
24
49
 
25
50
  And to print a specific column by:
26
51
 
27
52
  ```ruby
28
53
  TableInspector.scan User, :name
29
54
  ```
30
- ![Table Inspector scan column](/img/table_inspector_scan_column_2.png)
55
+ ![Table Inspector scan column](/img/table_inspector_scan_column_3.png)
31
56
 
32
57
  It will print the column definition and which indexes that contains this column.
33
58
 
34
- Also, you can print `sql_type` which type of column in database by provide `sql_type: true` option:
35
-
59
+ **It is recommended to include `TableInspector::Inspectable` in `app/models/application_record.rb` and use `ti` or `ati` method to print the table definition: **
36
60
  ```ruby
37
- TableInspector.scan User, sql_type: true
61
+ # app/models/application_record.rb
62
+ class ApplicationRecord < ActiveRecord::Base
63
+ self.abstract_class = true
64
+
65
+ # Add this line
66
+ include TableInspector::Inspectable
67
+
68
+ # ...
69
+ end
38
70
  ```
39
- ![Table Inspector scan table column with sql type](/img/table_inspector_scan_table_with_sql_type_2.png)
71
+ and call:
72
+ ```ruby
73
+ # Same as TableInspector.scan User
74
+ User.ti
40
75
 
41
- ## Installation
42
- Add this line to your application's Gemfile:
76
+ # Same as TableInspector.ascan User
77
+ User.ati
78
+ ```
79
+ The module `TableInspector::Inspectable` only defines two class methods: `ti` and `ati`, which delegate to `TableInspector.scan` and `TableInspector.ascan` respectively.
43
80
 
81
+ You can print the database column type by providing the `sql_type: true` option:
44
82
  ```ruby
45
- gem "table_inspector"
83
+ User.ti sql_type: true
84
+ # or
85
+ TableInspector.scan User, sql_type: true
46
86
  ```
87
+ ![Table Inspector scan table column with sql type](/img/table_inspector_scan_table_with_sql_type_3.png)
47
88
 
48
- And then execute:
49
- ```bash
50
- $ bundle
89
+ To print comment column only for the table, use `comment_only: true` option:
90
+ ```ruby
91
+ User.ti comment_only: true
92
+ # or
93
+ TableInspector.scan User, comment_only: true
51
94
  ```
95
+ ![Table Inspector scan table comment only](/img/table_inspector_scan_table_comment_only.png)
96
+ If the `sql_type: true` option is also provided, the sql_type option will be omitted.
52
97
 
53
- Or install it yourself as:
54
- ```bash
55
- $ gem install table_inspector
98
+ ## Style
99
+ You can change the style of the table by setting the `TableInspector.style` in `config/initalizers/table_inspector.rb`(create it if not exists):
100
+ ```ruby
101
+ # config/initializers/table_inspector.rb
102
+
103
+ TableInspector.style = { border: :unicode }
104
+ # TableInspector.style = { border: :ascii } # default border style
105
+ # TableInspector.style = { border: :unicode_round }
106
+ # TableInspector.style = { border: :unicode_thick_edge }
107
+ # TableInspector.style = { border: :markdown }
56
108
  ```
109
+ You can use other options available in `TerminalTable#style` of the [terminal-table](https://github.com/tj/terminal-table)
57
110
 
58
111
  ## Contributing
59
112
  Contribution directions go here.
@@ -1,36 +1,42 @@
1
1
 
2
2
  module TableInspector
3
3
  class Column
4
- attr_reader :column, :klass, :sql_type, :presenter
4
+ attr_reader :column, :klass, :presenter
5
+ delegate :break_line, :bold, to: TableInspector::Text
5
6
 
6
- def initialize(klass, column_name, sql_type: false, colorize: false )
7
- @column = klass.columns.find {|column| column.name == column_name.to_s}
7
+ def initialize(klass, column_name, presenter_option)
8
+ @column = klass.columns.find { |column| column.name == column_name.to_s }
8
9
  @klass = klass
9
- @sql_type = sql_type
10
- @presenter = Presenter.new(klass, sql_type: sql_type, colorize: colorize)
10
+ @presenter = Presenter.new(klass, presenter_option)
11
11
  end
12
12
 
13
13
  def render
14
- Text.break_line
14
+ break_line # empty line
15
15
  render_title
16
16
  render_body
17
- Text.break_line
18
- Indexes.new(klass, column.name).render
19
- Text.break_line
17
+ break_line # empty line
18
+ render_indexes
19
+ break_line # empty line
20
20
  end
21
21
 
22
22
  private
23
23
 
24
24
  def render_title
25
- Grid.new do |grid|
26
- grid.add_row(["#{Text.bold('Table')}: #{klass.table_name}", "#{Text.bold('Column')}: #{column.name}"])
25
+ TerminalTable.new do |terminal_table|
26
+ table_name = bold('Table') + ": " + klass.table_name
27
+ column_name = bold('Column') + ": " + column.name
28
+ terminal_table.add_row([table_name, column_name])
27
29
  end.render
28
30
  end
29
31
 
30
32
  def render_body
31
- Grid.new(headings: presenter.headings) do |grid|
32
- grid.add_row(@presenter.extract_meta(column).values)
33
+ TerminalTable.new(headings: presenter.headings) do |terminal_table|
34
+ terminal_table.add_row(@presenter.extract_meta(column).values)
33
35
  end.render
34
36
  end
37
+
38
+ def render_indexes
39
+ Indexes.new(klass, column.name, colorize: presenter.option.colorize).render
40
+ end
35
41
  end
36
42
  end
@@ -22,7 +22,7 @@ module TableInspector
22
22
  end
23
23
 
24
24
  def column_is_not_exists_hint
25
- puts "Column '#{column_name}' doesn't exists in table '#{klass.table_name}'!"
25
+ puts "Column '#{column_name}' doesn't exist in table '#{klass.table_name}'!"
26
26
  end
27
27
  end
28
28
  end
@@ -3,16 +3,17 @@ module TableInspector
3
3
  class Indexes
4
4
  attr_reader :klass, :column_name
5
5
 
6
- def initialize(klass, column_name = nil)
6
+ def initialize(klass, column_name = nil, colorize: false)
7
7
  @klass = klass
8
8
  @column_name = column_name
9
+ @colorize = colorize
9
10
  end
10
11
 
11
12
  def render
12
13
  render_title
13
14
 
14
15
  if column_name
15
- render_indexes_with_specific_column
16
+ render_indexes_of_column
16
17
  else
17
18
  render_indexes
18
19
  end
@@ -21,32 +22,53 @@ module TableInspector
21
22
  private
22
23
 
23
24
  def render_title
24
- Grid.new do |grid|
25
- grid.add_row([Text.bold("Indexes")])
25
+ TerminalTable.new do |terminal_table|
26
+ terminal_table.add_row([Text.bold("Indexes")])
26
27
  end.render
27
28
  end
28
29
 
29
- def render_indexes_with_specific_column
30
- Grid.new(headings: headings) do |grid|
31
- indexes_with_specific_column.each do |index|
32
- grid.add_row(compose_index_data(index))
30
+ def render_indexes_of_column
31
+ TerminalTable.new(headings: headings) do |terminal_table|
32
+ indexes_of_column.each do |index|
33
+ terminal_table.add_row(compose_index_data(index))
33
34
  end
34
35
  end.render
35
36
  end
36
37
 
37
38
  def render_indexes
38
- Grid.new(headings: headings) do |grid|
39
+ TerminalTable.new(headings: headings) do |terminal_table|
39
40
  indexes.each do |index|
40
- grid.add_row(compose_index_data(index))
41
+ terminal_table.add_row(compose_index_data(index))
41
42
  end
42
43
  end.render
43
44
  end
44
45
 
45
46
  def compose_index_data(index)
47
+ if @colorize
48
+ compose_index_data_with_color(index)
49
+ else
50
+ compose_index_data_without_color(index)
51
+ end
52
+ end
53
+
54
+ def compose_index_data_with_color(index)
55
+ index_columns_text = index.columns.join(', ')
56
+ unique_text = index.unique ? "UNIQUE" : ""
57
+
58
+ [
59
+ index.name,
60
+ "[#{Text.yellow(index_columns_text)}]",
61
+ unique_text
62
+ ]
63
+ end
64
+
65
+ def compose_index_data_without_color(index)
66
+ index_columns_text = index.columns.join(', ')
67
+ unique_text = index.unique ? "UNIQUE" : ""
46
68
  [
47
69
  index.name,
48
- "[#{index.columns.join(', ')}]",
49
- index.unique ? "UNIQUE" : ""
70
+ "[#{index_columns_text}]",
71
+ unique_text
50
72
  ]
51
73
  end
52
74
 
@@ -58,8 +80,8 @@ module TableInspector
58
80
  @indexes ||= connection.indexes(klass.table_name)
59
81
  end
60
82
 
61
- def indexes_with_specific_column
62
- indexes.select{|index| index.columns.include?(column_name) }
83
+ def indexes_of_column
84
+ indexes.select{ |index| index.columns.include?(column_name.to_s) }
63
85
  end
64
86
 
65
87
  def connection
@@ -0,0 +1,16 @@
1
+
2
+ module TableInspector
3
+ module Inspectable
4
+ extend ActiveSupport::Concern
5
+
6
+ module ClassMethods
7
+ def ti(*args, **kwargs, &block)
8
+ TableInspector.scan(self, *args, **kwargs, &block)
9
+ end
10
+
11
+ def ati(*args, **kwargs, &block)
12
+ TableInspector.ascan(self, *args, **kwargs, &block)
13
+ end
14
+ end
15
+ end
16
+ end
@@ -1,16 +1,16 @@
1
1
 
2
2
  module TableInspector
3
3
  class Presenter
4
- attr_reader :klass, :sql_type
4
+ attr_reader :klass, :option
5
+ delegate :green, :yellow, :red, :blue, :cyan, to: Text
5
6
 
6
- def initialize(klass, sql_type:, colorize: false)
7
+ def initialize(klass, option)
7
8
  @klass = klass
8
- @sql_type = sql_type
9
- @colorize = colorize
9
+ @option = option
10
10
  end
11
11
 
12
12
  def extract_meta(column)
13
- if @colorize
13
+ if option.colorize
14
14
  extract_meta_with_highlight(column)
15
15
  else
16
16
  extract_meta_without_highlight(column)
@@ -18,14 +18,13 @@ module TableInspector
18
18
  end
19
19
 
20
20
  def headings
21
- first_column = klass.columns.first
22
- extract_meta(first_column).keys.map(&:humanize)
21
+ ordered_keys.map(&:humanize)
23
22
  end
24
23
 
25
24
  private
26
25
 
27
26
  def extract_meta_with_highlight(column)
28
- column_data = column.as_json.merge(column.sql_type_metadata.as_json)
27
+ column_data = extract_meta_without_highlight(column)
29
28
 
30
29
  # Colorize text but except "comment" field
31
30
  column_data.each do |k, v|
@@ -40,27 +39,35 @@ module TableInspector
40
39
  end
41
40
 
42
41
  def extract_meta_without_highlight(column)
43
- column.as_json.merge(column.sql_type_metadata.as_json).slice(*ordered_keys)
42
+ column.as_json.merge(column.sql_type_metadata.as_json).slice(*ordered_keys).tap do |column_data|
43
+ if column_data["default"] == ""
44
+ column_data["default"] = column_data["default"].inspect
45
+ end
46
+ end
44
47
  end
45
48
 
46
49
  def ordered_keys
47
- %w[name type limit null default precision scale comment].tap do |keys|
48
- keys << "sql_type" if sql_type
50
+ if option.comment_only
51
+ %w[name comment]
52
+ else
53
+ %w[name type limit null default precision scale comment].tap do |keys|
54
+ keys << "sql_type" if option.sql_type
55
+ end
49
56
  end
50
57
  end
51
58
 
52
59
  def colorize(value)
53
60
  case value
54
61
  when TrueClass, DateTime, 'datetime'
55
- Text.green(value)
62
+ green(value)
56
63
  when FalseClass
57
- Text.red(value)
64
+ red(value)
58
65
  when Numeric, 'integer', 'decimal'
59
- Text.blue(value)
66
+ blue(value)
60
67
  when 'boolean'
61
- Text.cyan(value)
68
+ cyan(value)
62
69
  when String
63
- Text.yellow(value)
70
+ yellow(value)
64
71
  else
65
72
  value
66
73
  end
@@ -0,0 +1,12 @@
1
+
2
+ module TableInspector
3
+ class PresenterOption
4
+ attr_accessor :sql_type, :comment_only, :colorize
5
+
6
+ def initialize(options = {})
7
+ @sql_type = options.fetch(:sql_type, false)
8
+ @comment_only = options.fetch(:comment_only, false)
9
+ @colorize = options.fetch(:colorize, false)
10
+ end
11
+ end
12
+ end
@@ -1,41 +1,43 @@
1
1
 
2
2
  module TableInspector
3
3
  class Table
4
- attr_reader :klass, :sql_type, :presenter
4
+ attr_reader :klass, :presenter, :presenter_option
5
+ delegate :break_line, :bold, to: TableInspector::Text
5
6
 
6
- def initialize(klass, sql_type: false, colorize: false)
7
+ def initialize(klass, presenter_option)
7
8
  @klass = klass
8
- @sql_type = sql_type
9
- @presenter = Presenter.new(klass, sql_type: sql_type, colorize: colorize)
9
+ @presenter = Presenter.new(klass, presenter_option)
10
+ @presenter_option = presenter_option
10
11
  end
11
12
 
12
13
  def render
13
- Text.break_line
14
+ break_line # empty line
14
15
  render_title
15
16
  render_body
16
- Text.break_line
17
+ break_line # empty line
17
18
  render_indexes
18
- Text.break_line
19
+ break_line # empty line
19
20
  end
20
21
 
21
22
  private
22
23
 
23
24
  def render_title
24
- Grid.new do |grid|
25
- grid.add_row(["#{Text.bold('Table')}: #{klass.table_name}"])
25
+ TerminalTable.new do |terminal_table|
26
+ table_name = bold('Table') + ": " + klass.table_name
27
+ terminal_table.add_row([table_name])
26
28
  end.render
27
29
  end
28
30
 
29
31
  def render_body
30
- Grid.new(headings: presenter.headings) do |grid|
32
+ TerminalTable.new(headings: presenter.headings) do |terminal_table|
31
33
  klass.columns.each do |column|
32
- grid.add_row(presenter.extract_meta(column).values)
34
+ terminal_table.add_row(presenter.extract_meta(column).values)
33
35
  end
34
36
  end.render
35
37
  end
36
38
 
37
39
  def render_indexes
38
- Indexes.new(klass).render
40
+ Indexes.new(klass, colorize: presenter.option.colorize).render
39
41
  end
40
42
  end
41
43
  end
@@ -1,6 +1,6 @@
1
1
 
2
2
  module TableInspector
3
- class Grid
3
+ class TerminalTable
4
4
  attr_reader :terminal_table
5
5
 
6
6
  delegate :add_row,
@@ -9,13 +9,15 @@ module TableInspector
9
9
 
10
10
  def initialize(**options, &block)
11
11
  @terminal_table = ::Terminal::Table.new(**options)
12
+ style = TableInspector.style || { border: :ascii }
13
+ @terminal_table.style = style
12
14
  yield self if block_given?
13
15
  end
14
16
 
15
17
  def render
16
18
  if rows.empty?
17
19
  Text.break_line
18
- puts " Empty."
20
+ puts " Empty."
19
21
  else
20
22
  puts self
21
23
  end
@@ -1,3 +1,3 @@
1
1
  module TableInspector
2
- VERSION = "0.5.4"
2
+ VERSION = "0.6.0"
3
3
  end
@@ -1,70 +1,68 @@
1
1
  require "table_inspector/version"
2
2
  require "table_inspector/railtie"
3
3
  require "terminal-table"
4
+ require "table_inspector/text"
4
5
  require "table_inspector/table"
5
- require "table_inspector/grid"
6
+ require "table_inspector/terminal_table"
6
7
  require "table_inspector/indexes"
7
- require "table_inspector/text"
8
8
  require "table_inspector/column"
9
9
  require "table_inspector/presenter"
10
10
  require "table_inspector/model_validator"
11
11
  require "table_inspector/column_validator"
12
+ require "table_inspector/presenter_option"
13
+ require "table_inspector/inspectable"
12
14
 
13
15
  module TableInspector
14
16
  extend self
17
+ mattr_accessor :style
15
18
 
16
- def ascan(klass, column_name = nil, sql_type: false)
17
- klass = classify!(klass)
18
-
19
- return unless klass
20
- return unless validate!(klass, column_name)
21
-
22
- render(klass, column_name, sql_type, colorize: true)
19
+ # options:
20
+ # - sql_type: pass "true" print sql type, pass "false" not print sql type, default is false
21
+ # - comment_only: pass "true" print comment only, pass "false" will print all column info, default is false
22
+ def ascan(klass, column_name = nil, **options)
23
+ scan(klass, column_name, colorize: true, **options)
23
24
  end
24
25
 
25
- def scan(klass, column_name = nil, sql_type: false)
26
+ # options:
27
+ # - sql_type: pass "true" print sql type, pass "false" not print sql type, default is false
28
+ # - comment_only: pass "true" print comment only, pass "false" will print all column info, default is false
29
+ # - colorize: pass "true" print colorful scheme, pass "false" will print scheme without color, default is false
30
+ def scan(klass, column_name = nil, colorize: false, **options)
26
31
  klass = classify!(klass)
27
32
 
28
33
  return unless klass
29
34
  return unless validate!(klass, column_name)
30
35
 
31
- render(klass, column_name, sql_type)
36
+ presenter_options = PresenterOption.new({ **options, colorize: colorize })
37
+ render(klass, column_name, presenter_options)
32
38
  end
33
39
 
34
40
  private
35
41
 
36
42
  def classify!(klass)
37
- begin
38
- unless klass.is_a?(Class)
39
- klass = klass.to_s.classify.constantize
40
- end
41
- rescue NameError
42
- puts invalid_model_name_hint(klass.inspect)
43
- return
44
- end
45
-
46
- klass
43
+ return klass if klass.is_a?(Class)
44
+ klass.to_s.classify.constantize
45
+ rescue NameError
46
+ puts invalid_model_name_hint(klass.inspect)
47
47
  end
48
48
 
49
49
  def validate!(klass, column_name)
50
50
  model_validator = ModelValidator.new(klass)
51
- unless column_name
52
- return model_validator.validate!
53
- end
51
+ return model_validator.validate! unless column_name
54
52
 
55
53
  column_validator = ColumnValidator.new(klass, column_name)
56
54
  model_validator.validate! && column_validator.validate!
57
55
  end
58
56
 
59
- def render(klass, column_name, sql_type, colorize: false)
57
+ def render(klass, column_name, presenter_option)
60
58
  if column_name
61
- Column.new(klass, column_name, sql_type: sql_type, colorize: colorize).render
59
+ Column.new(klass, column_name, presenter_option).render
62
60
  else
63
- Table.new(klass, sql_type: sql_type, colorize: colorize).render
61
+ Table.new(klass, presenter_option).render
64
62
  end
65
63
  end
66
64
 
67
65
  def invalid_model_name_hint(klass)
68
- "'#{klass}' can be transform to a model class."
66
+ "'#{klass}' cannot be transformed to a valid model class."
69
67
  end
70
68
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: table_inspector
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.4
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ian
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-31 00:00:00.000000000 Z
11
+ date: 2023-08-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -38,7 +38,7 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 3.0.2
41
- description: Inspect table structure of ActiveRecord class
41
+ description: Print table structure of ActiveRecord class
42
42
  email:
43
43
  - ianlynxk@gmail.com
44
44
  executables: []
@@ -51,12 +51,14 @@ files:
51
51
  - lib/table_inspector.rb
52
52
  - lib/table_inspector/column.rb
53
53
  - lib/table_inspector/column_validator.rb
54
- - lib/table_inspector/grid.rb
55
54
  - lib/table_inspector/indexes.rb
55
+ - lib/table_inspector/inspectable.rb
56
56
  - lib/table_inspector/model_validator.rb
57
57
  - lib/table_inspector/presenter.rb
58
+ - lib/table_inspector/presenter_option.rb
58
59
  - lib/table_inspector/railtie.rb
59
60
  - lib/table_inspector/table.rb
61
+ - lib/table_inspector/terminal_table.rb
60
62
  - lib/table_inspector/text.rb
61
63
  - lib/table_inspector/version.rb
62
64
  - lib/tasks/table_inspector_tasks.rake
@@ -82,8 +84,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
82
84
  - !ruby/object:Gem::Version
83
85
  version: '0'
84
86
  requirements: []
85
- rubygems_version: 3.4.7
87
+ rubygems_version: 3.4.10
86
88
  signing_key:
87
89
  specification_version: 4
88
- summary: Inspect table structure of ActiveRecord class
90
+ summary: Print table structure of ActiveRecord class
89
91
  test_files: []