RubyMine で Heroku Postgres に接続する方法


開発時にはちょくちょくデータの中身を見たり書き換えたりしたいもの。
CUI の方が好きって方も多いと思いますが、私は GUI で閲覧・操作したいと思うタイプです。
MySQL を使っている時は MySQL Workbench を使っていたんですが、PostgreSQL の場合ははてどうしようと考え、せっかくなので RubyMine を使うことにしました。
データベースに接続する機能は以前からありましたが、今までは使ったことなかったんですよね。

Heroku Postgres の接続文字列

Heroku Postgres は heroku 自らが提供するアドオンです。
実体は AWS EC2 上に存在しているため、これ単体を利用することも可能になっています(と聞きました)。
今回は普通にアドオンとして使用していますが、これに対してローカルから外部接続を行うことになります。
外部接続に必要なのは以下の情報です。

  • Host
  • Port
  • Database
  • User
  • Password

この情報は Heroku Postgres のアドオン管理画面からでも、heroku config で得られるサーバ環境変数の DATABASE_URL に記載された接続文字列からでも取得できます。
接続文字列の場合は、以下の形式で記載されています。

postgres://(User):(Password)@(Host):(Port)/(Database)

RubyMine に接続設定を行う

必要な情報が揃ったところで、RubyMine の設定を行いましょう。
おそらく初期状態では右端情報に「Database」という文字列が、いかにも畳まれていますという感じで横になって表示されていますので、これをクリックして展開します。
あるいは画面情報のメニューから、 View -> Tool Windows -> Databse と辿ってウィンドウを展開します。

Database ウィンドウを開いたら、ウィンドウ左上の + ボタンをクリック。
+ -> Data Source -> PostgreSQL と選択して、PostgreSQL の接続設定画面を開きましょう。
デフォルトで「Database」タブが開いているので、先ほど確認した5つの情報を入力します。

入力を終えたら、「Advanced」タブを開きます。
設定値と思しき文字列が20個ほど並んでいますが、末尾の <user defined> に以下を入力しましょう。

  • Name ... sslmode
  • Value ... require

入力を終えたら、「Database」タブに戻ります。
「Test Connection」ボタンを押して、テスト接続が正常に行えることを確認しましょう。

テスト接続に成功したら、「OK」ボタンを押して設定を終えます。
Database ウィンドウに登録した Host名で Heroku Postgres のデータベースが表示されているはずです。
数十秒程度待つと同期が終わり、実際に中身を確認できるようになります。

ローカルの PostgreSQL にも接続する

特に難しいことは何もありませんが、ついでですので言及しておきます。
こちらも Host, Port, Database, User, Password の5つの情報が必要です。
ローカル環境の場合、ポートはよほどのことが無い限りデフォルトの 5432 になっていると思います。
User や Password の設定を省略する方も多いので、実際のところ明示的に指定した覚えがあるのはデータベース名だけってことも多いでしょう。
この場合、Database タブで入力する内容は以下のようになります。

  • Host ... localhost
  • Port ... 5432(最初からこれになっています)
  • Database ... 設定しているデータベース名
  • User ... (何も入力しない)
  • Password ... (何も入力しない)

Heroku Postgres で必要だった「Advanced」タブの設定は不要です。

RubyMine が若干のエラーメッセージを表示しますが、無視して構いません。
「Test Connection」ボタンを押し、 テスト接続を行ってみましょう。

ちょっとした注意事項

データベースを扱う GUI ツールに共通することですが、データベースの変更内容は即座に反映されません。
テーブルの作成や削除などのスキーマレベルの変更(DDL 発行)は Database ウィンドウ上部のリロードボタンを、データの追加や更新、削除など CRUD 操作(DML 発行)はテーブル上部のリロードボタンを押し、同期を行ってください。

RubyMine で快適に開発

IDE 上でデータベースの中身を逐次確認できると、開発がとても快適になります。
Rails Console のようなコマンドライン操作はそれはそれで必要になることも多いのですが、視覚的に見やすい状態でデータを閲覧できるのはとても分かりやすいので、RubyMine をお持ちの方はぜひ試してみてください。
MySQL Workbench と同じく、欲しいと思う以下の機能がストレス無く動きます。

  • テーブル内容を表形式で表示(エクセルそのまんま)
  • テーブル内容を視覚的に変更、削除可能(エクセルそのまんm
  • カラム単位でソート順の変更(エクセr
  • テーブル内容を表示しつつ、where 句を打ち込んで簡単に絞り込み可能
  • テーブルなどのデータベースオブジェクトを視覚的に一覧表示
  • テーブル内のカラム、キーの定義を視覚的に一覧表示
  • DDL をデータベース単位、データベースオブジェクト単位で簡単に生成
  • テーブルデータのエクスポートをCSVやTSV、INSERT文方式で行える(日本語も大丈夫)

個人的には SQL 文を打ち込める コンソール画面を複数開けないのが若干の不満ですが、シンプルで見やすく使いやすいので、さらに RubyMine が手放せなくなりました(ステマ)。