IntelliJ IDEA で Ruby / Rails プロジェクトを開始する
IntelliJ IDEA は、Ruby / Rails プロジェクトの開発(コードの作成とデバッグから完成したアプリケーションのテストとデプロイまで)のあらゆる側面において、生産性を向上させる統合開発環境 (IDE) です。IntelliJ IDEA は、macOS、Windows、Linux を含むさまざまなプラットフォームで使用できます。
このチュートリアルでは、Rails チュートリアルの Ruby(英語) 用に作成されたサンプルアプリケーションのフォーク(英語)を使用して、IntelliJ IDEA の主な機能を紹介します。このチュートリアルを開始する前に、次のことを行ってください。
Git(英語) をインストールします。
プラットフォームに Ruby ディストリビューションをインストールします。
Node.js(英語) および Yarn(英語) をインストールします。
macOS にインストールされた IntelliJ IDEA を使用してすべての手順を実行します。
プロジェクトを開く
まず、サンプルアプリケーションを含むリポジトリをクローンする必要があります。
IntelliJ IDEA を実行し、ウェルカム画面のバージョン管理から取得をクリックします。
バージョン管理から取得ダイアログで、次の操作を行います。
バージョン管理フィールドで Git が選択されていることを確認してください。
URL フィールドに次のアドレスを挿入します。
https://github.com/JetBrains/sample_rails_app.git
クローンボタンをクリックします。IntelliJ IDEA は、クローン作成プロセスを示す進行状況バーを表示します。
リポジトリのクローンを作成した後、プロジェクトを含むディレクトリを開くように求められます。はいをクリックします。
IntelliJ IDEA はディレクトリを開き、索引作成プロセスを開始します。ステータスバーの進捗状況を見ることができます。
IntelliJ IDEA は、プロジェクトのインデックスを作成してソースを分析し、使用可能なファイル、クラスおよびメソッドの定義などに関する情報を収集します。これは、コード補完やナビゲーションなどのコードインサイト機能に必要です。
Ruby インタープリターを選択し、gems をインストールする
プロジェクトを開いた後、必要な Ruby インタープリターを選択し、プロジェクトの Gemfile で指定された依存関係をインストールする必要があります。
に移動するか、または Ctrl+Alt+Shift+S を押します。
呼び出されたプロジェクト構造ダイアログで、モジュールページに切り替えて、Ruby インタープリターを選択します。
OK をクリックします。
次に、Gemfile で指定された gems をインストールします。IntelliJ IDEA では、Bundler(英語) を使用して gems を管理できます。 Ctrl を 2 回押し、bundle install と入力し始めます。次に、リストから bundle install コマンドを選択し、Enter を押します。
(オプション)現在のプロジェクトインタープリターに Gemfile.lock で指定された必要な Bundler バージョンがない場合、IntelliJ IDEA はそれをインストールすることを提案します。
バンドルインストールダイアログで、次の引数を追加します。
--without production
次に、インストールをクリックします。
IntelliJ IDEA がすべて gems をインストールするまで待ちます。
JavaScript の依存関係をインストールする
Yarn(英語) を使用してプロジェクトの package.json ファイルに記載されている JavaScript 依存関係をインストールするには、次の手順を実行します。
Ctrl をもう一度 2 回押して、yarn install と入力し始めます。次に、リストから yarn install コマンドを選択し、Enter を押します。
IntelliJ IDEA がすべてのパッケージをインストールするまで待ちます。
マイグレーションの実行
Rails アプリケーションを実行する前に、データベースを移行する必要があります。IntelliJ IDEA でこれを行うには、以下の手順に従います。
Ctrl を 2 回押し、db:migrate と入力します。ドロップダウンで
rake db:migrate
を選択し、Enter を押します。呼び出された 'db:migrate' を実行するダイアログでデフォルト設定のままにして、OK をクリックします。
これにより、db フォルダーに development.sqlite3 データベースが作成されます。
最初のステップで説明したように、
rake db:migrate
をもう一度実行します。今回は、環境オプションを設定して 'db:migrate' を実行するダイアログでテストし、OK をクリックします。作成された test.sqlite3 データベースは、テストの実行に使用されます。
プロジェクトをナビゲートする
IntelliJ IDEA は、あらゆるサイズのプロジェクトを探索するための豊富なナビゲーション機能を提供します。ファイル間を移動したり、宣言に移動したり、任意のタイプのエンティティを検索したりできます。
プロジェクトビュー
IDE の左側にあるプロジェクトビュー(Alt+1)には、プロジェクトの構造が表示されます。これを使用して、プロジェクト内の任意のファイルを開いたり、新しいファイルを作成したりできます。

また、ファイルやディレクトリではなく Rails 要素としてコントローラー、モデル、ビュー、DB 移行を表示する論理プロジェクト構造を示す特別な Rails ビューに切り替えることもできます。

宣言に移動
宣言に移動を使用すると、任意のシンボル使用箇所からシンボルの宣言にナビゲートできます。この機能を実際に使用するには、Ctrl+Shift+N を押して「users_controller」と入力し、users_controller.rb ファイルを選択して Enter をクリックします。

開いた app/controllers/users_controller.rb ファイルで、ユーザークラスの横にキャレットを置き、Ctrl+B を押します。

user.rb ファイルのクラス宣言にジャンプします。
プロジェクトエンティティだけでなく、外部ライブラリ内の定義(この例では gems)にジャンプできることに注意してください。たとえば、Ctrl を押したまま、has_many メソッドにマウスポインターを合わせます。メソッドがハイパーリンクになったら、キーを放さずにクリックします。

IntelliJ IDEA は ActiveRecord Rails モジュール内のメソッド定義を開きます。
使用箇所の検索
使用箇所の検索機能を実演しましょう。 app/controllers/users_controller.rb ファイルで、編集アクションまでスクロールし、キャレットをその横に置き、Alt+F7 を押します。検索ウィンドウでは、このアクションが使用されている場所を探索することができます。

Rails エンティティ間を移動する
コントローラーなどの特定の Rails エンティティで作業する場合、関連するビュー、モデル、テスト、またはヘルパーに移動できます。編集メソッドの横にキャレットを置き、Ctrl+Alt+Home を押し、表示を選択して Enter を押します。IntelliJ IDEA は、対応するビューを含む edit.html.erb ファイルを開きます。

ビュー内で同じショートカットを使用するか、エディターのガターの アイコンを使用して、対応するアクションにすばやく移動できます。

どこでも検索
次の IntelliJ IDEA 機能を使用すると、ファイル、クラス、シンボル、またはオプションを検索し、必要なエンティティにジャンプすることができます。
UsersController 内で destroy アクションを見つけようとしましょう。 Shift を 2 回押して、destroy と入力し始めます。ドロップダウンリストには、シンボルグループ内のすべてのコントローラーの destroy がリストされます。UsersController から destroy アクションを選択して Enter を押します。

users_controller.rb ファイルが開き、キャレットが destroy アクションの定義に配置されます。

コードの編集
IntelliJ IDEA はエディターで複数のコード編集機能を使用できるため、開発プロセスのスピードアップを図ることができます。これらには、コード補完、リファクタリング、コードインスペクションなどが含まれます。
コード補完
IntelliJ IDEA は、クラス、メソッド、キーワードなどの名前を完成させるのに役立ちます。コード補完を呼び出すと、IntelliJ IDEA はコンテキストを分析し、現在のキャレット位置に適用可能な選択肢を提案します。
たとえば、users_controller.rb ファイルを開き、UsersController クラスで宣言されているインデックスメソッドに移動します。メソッド内に次のコードを入力します。
... と入力し、ドットを入力します。ユーザークラスは ApplicationRecord モジュールから継承されるため、エディターには継承されたすべてのメンバーが表示されます。

その後、first と入力してリストをフィルタリングし、クエリモジュールから対応するメンバーを見つけて、Enter を押します。
インテンション
インテンションは、さまざまなコード変更をすばやく適用できます: より良いコードスタイルのためのステートメントの変換、ロケール辞書への文字列の追加、言語インジェクションの使用など。
インテンションの動作を確認するには、user.rb ファイルを開き、複数行の 3 項演算子(? :) を使用する User.digest メソッドまでスクロールダウンします。Ruby スタイルガイド(英語)によれば、そのような演算子を if/then/else/end ブロックに置き換えることが好ましい。これを行うには、キャレットをこの三項演算子(たとえば、ActiveModel の隣)に配置し、Alt+Enter を押します。 Enter を押して、三項演算子を if/then/else/end ブロックに変換します。

インスペクションを使用してコードを確認し、起こりうる問題を検出することができます。
コードのリファクタリング
リファクタリングは、ソースコードを変更したり維持したりするのを容易にするために、ソースコードを変更するプロセスですが、動作を変更することはありません。IntelliJ IDEA で利用できるリファクタリング機能をいくつか見てみましょう。
名前の変更リファクタリングを使用すると、クラス、メソッド、ファイル、変数、パラメーターの名前を変更でき、コード内のそれらへのすべての参照がそれに応じて修正されます。 users.rb ファイルを開き、before_save ActiveRecord コールバックで育っ downcase_email メソッドまでスクロールします。このメソッドの横にキャレットを置き、Ctrl+Shift+I を押してその定義を確認します。

Esc をクリックし、Ctrl+Alt+Shift+T を押します。呼び出されたポップアップで名前の変更を選択すると、さまざまなリファクタリングが提案されます。

名前の変更ダイアログで、新しいメソッド名(この場合 lowercase_email)を指定してリファクタリングをクリックします。

リファクタリングプレビューウィンドウには、名前を変更したメソッドへの参照がすべて表示されます。

リファクタリング実行をクリックして、すべての場所でメソッドの名前を変更します。
変数を抽出
変数の抽出リファクタリングは、選択した式の結果を変数に代入します。新しい変数を宣言し、その式を初期化子として使用します。元の式は新しい変数に置き換えられます。
user.rb ファイルを開き、フィード方法に移動します。このメソッドでは、SQL サブクエリを変数に抽出できます。これを行うには、対応する部分文字列を選択して Ctrl+Alt+V を押します。次に、変数名を指定し、Enter を押して抽出を終了します。

コードの整形
IntelliJ IDEA を使用すると、コードスタイルの要件を満たすようにソースコードを再フォーマットできます。
user.rb ファイルのコードを再フォーマットしましょう。このファイルを開いて Ctrl+Alt+L を押してください。

IntelliJ IDEA はファイル全体を再フォーマットし、いくつかの変更された行を表示します。
コードを分析する
この部分では、静的コード分析を実行し、問題を検出します。
IntelliJ IDEA は複数のインスペクションタイプをサポートし、さらに IDE 内で RuboCop(英語) の違反を表示することができます。RuboCop インスペクションはデフォルトで IntelliJ IDEA で有効になっており、プロジェクトの SDK に RuboCop gem(英語) をインストールする必要があります。この gem がインストールされていない場合、IntelliJ IDEA はこれを行うことを提案します。

アプリケーションで使用される gems のリストを含む Gemfile を開きましょう。bcrypt gem に表示される警告の上にマウスポインターを合わせます。

IntelliJ IDEA はアルファベット順に gems を並べ替える必要性を通知する Rubocop メッセージを表示します(OrderedGems(英語) を参照)。
キャレットを bcrypt gem の横に置き、Alt+Enter を押します。エディターは、誤った gems 順序に関連するすべての問題を修正することを提案します。これを行うには、Enter を押します。

プロジェクト全体を確認し、すべての警告を 1 つのレポートに表示することもできます。これを行うには、メインメニューの
を選択します。呼び出されたダイアログで、目的のインスペクションスコープを指定することができます。
プロジェクト全体オプションを終了し、OK をクリックします。インスペクションの結果ウィンドウには、プロジェクト全体の警告が表示されます。

このレポートをナビゲートして、特定の警告を修正または抑制することができます。
テストの実行
IntelliJ IDEA では、Minitest、RSpec、Cucumber などのさまざまなテストフレームワークを使用できます。
すべてのテストを実行
プロジェクトの test フォルダーには Minitest テストが含まれています。すべてのテストを実行するには、Alt+1 を押してプロジェクトビューを開きます。次に、test フォルダーを右クリックし、コンテキストメニューから を選択します。

IntelliJ IDEA が実行され、テスト結果が実行ツールウィンドウに表示されます。

特定のテストを実行する
それでは、特定のテストを実行する方法を見てみましょう。 users_controller_test.rb ファイルを開き、テストにログインしていない場合はリダイレクト先のインデックスまでスクロールし、このテストの横にある左ガターの実行ボタンをクリックします。

呼び出されたメニューで、'test_should_redirect ...' を実行しますを選択します。IntelliJ IDEA はこのテストの結果を表示します。

失敗したテストの再実行
それでは users_controller_test.rb に戻り、2 つのテストを破りましょう。ログインしていないときはインデックスをリダイレクトし、新しいテストで get users_path
と get_sighup_path
の行をコメントアウトする必要があります。これを行うには、これらの行を選択して Ctrl+/ ショートカットを使用します。

すべてのテストを実行の説明に従って、すべてのテストを再度実行します。これらのテストが失敗したことがわかります。

get users_path
および get_sighup_path
行 Ctrl+/ のコメントを外して、現在開いている users_controller_test.rb ファイルのこれらのテストを修正しましょう。 ボタンを使用して、これらの失敗したテストのみを再実行できるようになりました。

これでアプリケーションを実行する準備が整いました。
実行 / デバッグ構成を作成する
Rails アプリケーションを実行してデバッグするには、対応する Rails 構成を作成する必要があります。 Ctrl+Shift+A を押して、編集構成の入力を開始します。実行構成の編集を選択し、Enter を押します。

呼び出された実行 / デバッグ構成ダイアログで をクリックし、Rails と入力してリストから選択します。

作成した構成名を開発: sample_rails_app に変更し、OK をクリックします。

アプリケーションの実行
Rails アプリケーションを実行するには、Ctrl を 2 回押して、開発の入力を開始します。リストから開発: sample_rails_app 構成を選択し、Enter を押します。

IntelliJ IDEA は、実行するアプリケーションを準備するプロセスを示します。

Web サーバーで使用されている 0.0.0.0:3000 アドレスをコピーし、ブラウザーのアドレスバーに挿入し、Enter を押して、動作中のアプリケーションを表示します。

アプリケーションのデバッグ
IntelliJ IDEA の主な機能の 1 つはデバッグサポートです。デバッガーは、実行中のアプリケーションの状態を調べるさまざまな方法を提供します。コードをステップ実行して変数の値をチェックしたり、変数のウォッチを設定して値が変化するかどうかを確認したりできます。
ブレークポイントを設定してデバッグを開始する
まず、users_controller.rb ファイルを開きます。新しいユーザーが作成された行の横にある create メソッド内にブレークポイントを設定します。

デバッグを開始するには、Ctrl を二回押して、sample_rails_app と入力し始めます。リストから開発: sample_rails_app 設定を選択し、Shift キーを押しながら(ダイアログのタイトルがデバッグに変わります)、Enter を押します。

デバッグに必要な debase(英語) および ruby-debug-ide(英語) gems がまだインストールされていない場合、IntelliJ IDEA はそれらをインストールすることをお勧めします。

gems をインストールすると、デバッグツールウィンドウにアプリケーションの出力が表示されます。

ローカルマシンでブラウザーを開き、アプリケーションアドレス 0.0.0.0:3000 を指定します。

今すぐサインアップ ! ボタンをクリックします。サインアップページで、資格情報を入力し、アカウントを作るをクリックします。

プログラムはブレークポイントに達すると停止します。
変数を調べる
これで、アプリケーションの状態と変数の値を調べることができます。

フレームペインには、アプリケーションスレッドとそれに対応する呼び出しスタックが表示されます。今回の場合、create メソッドはスレッド 30 で呼び出されます。変数ペインでは、現在のコンテキストで利用可能な変数を調べることができます。
リストに user_params 変数を追加しましょう。変数ペインのボタン をクリックして、user_params の入力を 開始します。呼び出されたドロップダウンから user_params 変数を選択して Enter を押します。

次に、この変数の横にある ボタンをクリックし、同じ方法で @parameters 変数を展開します。サインアップ形式で指定されたユーザー資格情報が表示されます。
ブレークポイントに達すると、コードをステップ実行できます。
ステップオーバー
ステップオーバーは、現在のスコープ内の次の行に進みます(たとえば、次の行に移動します)。途中でメソッド呼び出しに降下することはありません。
以下の画面では、ユーザーオブジェクトがまだ作成されておらず、@user 変数が初期化されていない( nil に等しい)ことがわかります。

F8 を押すか、デバッグウィンドウのツールバーの ボタンをクリックします。デバッガーは次の行( if ステートメント)に進みます。エディターと変数ペインで、@user 変数が初期化されたことを確認できます。

ボタンを使用して、@user のプロパティを調べます。
ステップイン
ステップインはデバッガーを現在の行のメソッド呼び出しまたはブロックに移動させ、追跡します。複数のメソッド呼び出しまたはブロックがある場合は、目的のターゲットを選択できます。
プログラムの実行を再開するには、 ボタンをクリックします。ブラウザーに再度アクセスし、別のユーザーをサインアップ形式で作成します。スクリプトは、ユーザーが作成された行に到達すると停止します。

F7 を押すか、 ボタンをクリックしてください。エディターは user_params メソッドにフォーカスを置きます。矢印キーまたは Tab を使用してステップインする方法を選択できます(以下の例では new または user_params)。user_params を選択して Enter を押す。プログラムの実行は user_params メソッド定義にジャンプします。

F7 をもう一度押すと、デバッガーは params から選択することを提案し、StrongParameters(英語) モジュールのメソッドを要求します。

コンソールでデバッグする
デバッガーにはコンソールタブがあり、IRB のようなコンソールでデバッグされたアプリケーションと対話できます。
コンソールで user_params と入力し始め、対応する変数を選択して Enter を押します。

コンソールウィンドウに変数の値が表示されます。
関連ページ:

Ruby 開発環境をセットアップする
このトピックでは、開発マシンでローカル Ruby / Rails 環境を準備する方法と、IntelliJ IDEA がこのセットアップでの作業にどのように役立つかについて概要を説明します。前提条件の依存関係をインストールする:IntelliJ IDEA は、Ruby(Ruby MRI)のリファレンス実装と、JRuby や TruffleRuby などの代替実装をサポートしています。Ruby インタープリターをインストールする前に、Ruby をコンパイルするために必要な依存関係をマシンにインストー...

Ruby インタープリターを構成する
IntelliJ IDEA で Ruby プロジェクトを使用するには、必要な Ruby インタープリターを構成する必要があります。現在開いているプロジェクトまたは新しいプロジェクトの作成時にインタープリターを設定できます。Ruby インタープリターの構成は、インストール方法によって異なります。パッケージマネージャー(Ubuntu では apt、macOS では Homebrew など)または Ruby インストーラー(たとえば、Windows では RubyInstaller)を使用して Ruby をイ...

Ruby バージョンマネージャー
Linux または macOS に Ruby をインストールする最も一般的な方法は、バージョンマネージャー(RVM や rbenv など)を使用することです。バージョンマネージャーを使用すると、マシンに複数の Ruby バージョンをインストールして、すばやく切り替えることができます。IntelliJ IDEA は、ローカルマシンにインストールされ、次のバージョンマネージャーによって管理されるインタープリターを自動的に検出します。RVM、gemsets 用の rbenv-gemsets プラグインを備えた...

コードスタイルの構成
特定のコーディングガイドラインが企業内に存在する場合は、ソースコードを作成する際に、このガイドラインに従わなければなりません。IntelliJ IDEA は、必要なコードスタイルを維持できます。コードスタイルは、プロジェクトレベルと IDE レベル(グローバル)で定義されます。プロジェクトレベルでは、設定はプロジェクトスキームにグループ化されます。これは事前定義されており、太字でマークされています。プロジェクトスタイルスキームは現在のプロジェクトにのみ適用されます。IDE にコピーコマンドを使用し...

最初の Ruby プロジェクトを作成して実行する
このチュートリアルでは、IntelliJ IDEA で簡単な対話式 Ruby プログラムを作成して実行する方法を説明します。このチュートリアルを始める前に、次のことを行ってください。使用しているプラットフォーム用の Ruby ディストリビューションをダウンロードしてインストールします。インストールとセットアップ IntelliJ IDEA.、macOS にインストールされた IntelliJ IDEA を使用してすべての手順を実行します。空のアプリケーションを作成する:Ruby プログラムを最初か...