0
0

Railsであれば便利なコマンドTips

Posted at

環境

Ubuntu20.4
Rails 5.2

はじめに

railsコマンドのオプションには用意されていないが、あれば便利なコマンドを作成してみました。

内容

その1

schema.rbの中から、テーブルの一覧を抽出するコマンドです。
app/modelsの配下のファイル一覧を参照してもいいでしょうけど・・・。

$cat ./db/schema.rb | grep create_table | awk '{print $2}' | tr -d [,\"] | nl

このようなイメージの表示となります。

結果.rb
 1  table_aaaaa
 2  table_bbbbb
 3  table_ccccc
 4  table_ddddd

その2

マイグレーションファイルの日付と時間を見やすく成形して表示するコマンドです。

$ls -l ./db/migrate/ | awk '{print $8}' | sed -E 's/([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})_(.*)/\1-\2-\3-\4:\5:\6 \7/'

このようなイメージの表示となります。

結果.rb
# Before
20220809075253 create_table_aaaaa.rb
20220809075456 add_column_table_aaaaa.rb
20220809075812 change_column_table_aaaaa.rb
20220809082542 create_table_bbbbb.rb
20220809082619 add_column_table_bbbbb.rb
20220809082631 change_column_table_bbbbb.rb

# After
2022-08-09 07:52:53 create_table_aaaaa.rb
2022-08-09 07:54:56 add_column_table_aaaaa.rb
2022-08-09 07:58:12 change_column_table_aaaaa.rb
2022-08-09 08:25:42 create_table_bbbbb.rb
2022-08-09 08:26:19 add_column_table_bbbbb.rb
2022-08-09 08:26:31 change_column_table_bbbbb.rb

その3

このようなやり方もあります。マイグレーションファイルがupされていることが前提となっています。

$rails db:migrate:status | sed 's/up     \([0-9]\{4\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)/\1-\2-\3 \4:\5:\6/'

このようなイメージの表示となります。

結果.rb
#Befor
up    20220809075253 Create table aaaaa
up    20220809075456 Add column table aaaaa
up    20220809075812 Change column table aaaaa
up    20220809082542 Create table bbbbb
up    20220809082619 Add column table bbbbb
up    20220809082631 Change column table bbbbb

# After
2022-08-09 07:52:53 Create table aaaaa
2022-08-09 07:54:56 Add column table aaaaa
2022-08-09 07:58:12 Change column table aaaaa
2022-08-09 08:25:42 Create table bbbbb
2022-08-09 08:26:19 Add column table bbbbb
2022-08-09 08:26:31 Change column table bbbbb

その4(補足)

ちょっとしたテクニックとなります。Railsを動かしている最中に、rails cでデータベースの中身を確認したり、rails routes でルートが正しく設定されているか、確認する場合があるかと思います。そんなときは、Railsを始めからバックグラウンドで実行させておくと、Railsをいちいち停止させることなく、フォアグランドでコマンドを実行することができます。

バックグラウンドで実行させるには、コマンドの後ろに&を1つつけるだけです。

$rails s &
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0