TableInspector
This is a Rails gem that allows you to print the structure of a database table by providing a model class. It functions similar to annotate_models, but offers an alternative way to checking the table schema. The print function is based on terminal-table
Installation
Add this line to your application's Gemfile:
gem "table_inspector", "~> 1.0.0"And then execute:
$ bundleOr install it yourself as:
$ gem install table_inspectorUsage
Assuming there is a model call User which has id and name column, and has a unique index for name.
For print the table structure of User, we can use:
TableInspector.scan UserThis will print the scheme of table and indexes.
If the table content is too long and appears messy, you can adjust the scaling of the terminal window or use the TableInspector.scan(User, :name) syntax to print a specific column.
Alternatively, you can use TableInspector.ascan to print a more colorful table(ascan means awesome scan) :
TableInspector.ascan UserAnd to print a specific column by:
TableInspector.scan User, :nameIt will print the column definition and which indexes that contains this column.
If you are using Ruby version 2.7.0 or later, you can define a helper method directly in the model itself by editing the app/models/application_record.rb file and adding the code provided below:
# app/models/application_record.rb
class ApplicationRecord < ActiveRecord::Base
# ...
def self.ti(...)
TableInspector.scan(self, ...) if const_defined?("TableInspector")
end
def self.ati(...)
TableInspector.ascan(self, ...) if const_defined?("TableInspector")
end
# ...
endThen you will be able to achieve the same effect as scan and ascan do by invoking ti and ati on the model class:
# Same as TableInspector.scan User
User.ti
# Same as TableInspector.ascan User
User.atiYou can print the database column type by providing the sql_type: true option:
User.ti sql_type: true
# or
TableInspector.scan User, sql_type: trueAdditionally, if you want to print the comments associated with the columns of the table, you can use the comment_only option:
User.ti comment_only: true
# or
TableInspector.scan User, comment_only: true
If the sql_type: true option is also provided, the sql_type option will be omitted.
Style
To change the style of the table by setting the TableInspector.style in config/initializers/table_inspector.rb(create it if not exists):
# config/initializers/table_inspector.rb
TableInspector.style = { border: :unicode }
# TableInspector.style = { border: :ascii } # default border style
# TableInspector.style = { border: :unicode_round }
# TableInspector.style = { border: :unicode_thick_edge }
# TableInspector.style = { border: :markdown }You can use other options available in TerminalTable#style of the terminal-table
Contributing
Contribution directions go here.
License
The gem is available as open source under the terms of the MIT License.



