![見出し画像](https://assets.st-note.com/production/uploads/images/158909061/rectangle_large_type_2_29d1d4499a636b8f26ae391920ea2022.png?width=1200)
rails dbconsole で使用する DB インターフェースを変更してみる
はじめに
こんにちは。
株式会社 Ruby 開発でエンジニアをしております、高木です。
2024年の9月に入社し、現在研修の一環で、gem rails に PR で追加された新機能を実際に rails new して試してみるという課題を行っております。
今回は、本課題の一例として、下記の PR で Rails 8.0.0.beta1 から導入された新機能を試してみた過程を書いていこうと思います。
https://github.com/rails/rails/pull/52656
PR の要約
本課題の PR の内容は下記のとおりです。
・rails dbconsole は指定されたデータベースのデフォルトの DB インターフェースを使用するよう設定されているが、Rails の設定ファイルでそれを変更できるようにする。
rails dbconsole は、アプリで使用しているデータベースを特定し、適切な DB インターフェースのコマンドラインツールを起動するものです。そこで SQL を使用することができます。
MySQL(MariaDB), PostgreSQL, そして SQLite をサポートしています。
今回は本 PR のテストを参考にし、PostgreSQL を用いて、デフォルトの psql というインターフェースを pgcli に変更してみようと思います。
pgcli は、PostgreSQL 用のコマンドラインインターフェースです。
オートコンプリートや構文ハイライトなどの機能があり便利です。
下記がデフォルトの rails dbconsole 画面です。psql を使用していることが確認できます。オートコンプリートや構文ハイライトはありません。
![](https://assets.st-note.com/img/1729580493-ftJgmS2yrUd9jQBach8P6DVO.png?width=1200)
PR 作成者は最初に yaml ファイルで cmd キーを設定することを考えていたみたいですが、修正の過程で Rails の設定ファイルを用いるよう変更したみたいです。
試した過程
とても簡単です。
まず最初に、development.rb に設定を記載します。
Rails.application.configure do
config.active_record.database_cli = { postgresql: “pgcli” }
end
これで rails dbconsole が呼び出すインターフェースが pgcli に変わります。 次に、pgcli をローカルにインストールする必要があります。
公式 に則ってインストールします。
brew install pgcli
Rails で用いる場合、インストールだけで大丈夫です。
また、psql はインストールしなくても使えたのにと思う方がいるかもしれませんが、psql は PostgreSQL のデフォルトのインターフェースなので、PostgreSQL をインストールしたら一緒にインストールされるみたいです。 今回はデフォルトのものではないので別途インストールが必要だったということです。
以上の手順で OK です。あとは rails dbconsole するだけです。
コマンドラインの表示がデフォルトの psql から pgcli に変わっているのが確認できると思います。 先述の通りオートコンプリートや構文ハイライトが使えるため、SQL を頻繁に書く場合はこっちの方がいいかもしれません。
ただし、psql と違い、pgcli は起動に少し時間がかかりました(10秒ほど)。
![](https://assets.st-note.com/img/1729580516-lM3Rr4zJ6WnXOEubfxadLQjB.png?width=1200)
終わりに
いかがだったでしょうか。
本課題を通じて、Ruby on Rails の様々な機能を知り、理解が深まっていると実感しております。
また、一次情報を見ることと、英語記事への抵抗がかなり減りました。
私は試していませんが、MySQL と SQLite の例も PR でテストされていました(テストは PR の Files changed で見ることができます)。
ただし、SQLite で使われていた sqlitecli についてはネットで調べてもほとんど情報が出てこなかったです。
また興味深い PR を見つけたら記事にしてみようと思います。
最後まで読んでいただき、ありがとうございました!
参考文献
株式会社Ruby開発 SpiceTech事業部 高木