💎

VSCode Ruby-LSP Rails で database connection エラーが発生する場合の解決方法

はじめに

VSCodeのRuby-LSPはコードジャンプやフォーマットなど、VSCodeでのRuby開発効率をあげるのに非常に強力なツールです。

この記事では、VSCodeでRuby-LSP Rails add-onを使用した際、以下のエラーが発生する問題の解決方法を紹介します。

Request model failed because database connection was not established

このエラーが発生すると、一部のケースでRuby-LSPが処理中にハングし、コードジャンプなどの機能が利用できなくなります。

なお、Ruby-LSP Rails add-onはRuby-LSPにデフォルトで組み込まれています。

エラーの確認方法

処理がハングした際に、VSCodeの出力タブからエラーを確認することができます。

ログの確認方法:

  1. コマンドパレットを開く (Cmd+Shift+P または Ctrl+Shift+P)。
  2. 「Output: Focus on Output View」を選択。
  3. 出力パネルで「Ruby-LSP」を選択してログを確認。

エラーの原因

このエラーは以下の箇所でDB接続に失敗した際に、ログにメッセージが出力されていることがわかりました。

Ruby-LSP RailsはRailsアプリケーションを内部で起動しており、その際にプロジェクト内のconfig/database.yamlを参照してDBに接続します。

問題の詳細

私たちの環境では、Docker ComposeでRailsとDBを動かしており、データベースのホスト名にDockerサービス名(例: db)を指定していました。

しかし、このホスト名はDockerのコンテナ内でのみ有効であり、VSCodeのRuby-LSPが動作するホストマシンからは参照できないため、接続が失敗していました。

解決方法

対策として以下を実施しました。

  • config/database.yamlのデフォルトホスト名を、ホストマシンから直接アクセスできるホスト名(localhostまたは127.0.0.1)に設定します。
  • コンテナ内からアクセスする場合は環境変数DB_HOSTを使用します。

設定の例:

development:
  host: <%= ENV.fetch("DB_HOST") { "127.0.0.1" } %>

この設定変更により、Ruby-LSP Railsは正常にデータベースへ接続できるようになり、エラーが解消されました。

まとめ

VSCodeでRuby-LSP Railsを利用する場合、ホストマシンからデータベースにアクセスできる設定を行いましょう。また、Ruby-LSP Railsでは.envファイルは読み込まれないため、必ずdatabase.yamlで明示的に設定する必要があります。

株式会社primeNumber

Discussion