IntelliJ IDEA 2020.3 ヘルプ

IntelliJ IDEA で Ruby / Rails プロジェクトを開始する

IntelliJ IDEA は、Ruby / Rails プロジェクトの開発(コードの作成とデバッグから完成したアプリケーションのテストとデプロイまで)のあらゆる側面において、生産性を向上させる統合開発環境 (IDE) です。IntelliJ IDEA は、macOS、Windows、Linux を含むさまざまなプラットフォームで使用できます。

このチュートリアルでは、Rails チュートリアルの Ruby(英語) 用に作成されたサンプルアプリケーションのフォーク(英語)を使用して、IntelliJ IDEA の主な機能を紹介します。このチュートリアルを開始する前に、次のことを行ってください。

macOS にインストールされた IntelliJ IDEA を使用してすべての手順を実行します。

プロジェクトを開く

まず、サンプルアプリケーションを含むリポジトリをクローンする必要があります。

  1. IntelliJ IDEA を実行し、ウェルカム画面バージョン管理から取得をクリックします。

    Welcome Screen / Get from Version Control
  2. バージョン管理から取得ダイアログで、次の操作を行います。

    Get from Version Control dialog
    • バージョン管理フィールドで Git が選択されていることを確認してください。

    • URL フィールドに次のアドレスを挿入します。

      https://github.com/JetBrains/sample_rails_app.git

    クローンボタンをクリックします。IntelliJ IDEA は、クローン作成プロセスを示す進行状況バーを表示します。

    Cloning source repository
  3. リポジトリのクローンを作成した後、プロジェクトを含むディレクトリを開くように求められます。はいをクリックします。

    Checkout from Version Control
  4. IntelliJ IDEA はディレクトリを開き、索引作成プロセスを開始します。ステータスバーの進捗状況を見ることができます。

    Indexing

    IntelliJ IDEA は、プロジェクトのインデックスを作成してソースを分析し、使用可能なファイル、クラスおよびメソッドの定義などに関する情報を収集します。これは、コード補完ナビゲーションなどのコードインサイト機能に必要です。

Ruby インタープリターを選択し、gems をインストールする

プロジェクトを開いた後、必要な Ruby インタープリターを選択し、プロジェクトの Gemfile で指定された依存関係をインストールする必要があります。

  1. ファイル | プロジェクト構造に移動するか、または Ctrl+Alt+Shift+S を押します。

  2. 呼び出されたプロジェクト構造ダイアログで、モジュールページに切り替えて、Ruby インタープリターを選択します。

    Project Structure dialog / Module page

    OK をクリックします。

  3. 次に、Gemfile で指定された gems をインストールします。IntelliJ IDEA では、Bundler(英語) を使用して gems を管理できます。 Ctrl を 2 回押し、bundle install と入力し始めます。次に、リストから bundle install コマンドを選択し、Enter を押します。

    Run Anything / bundle install
  4. (オプション)現在のプロジェクトインタープリターGemfile.lock で指定された必要な Bundler バージョンがない場合、IntelliJ IDEA はそれをインストールすることを提案します。

  5. バンドルインストールダイアログで、次の引数を追加します。

    --without production

    次に、インストールをクリックします。

    Bundle Install dialog
  6. IntelliJ IDEA がすべて gems をインストールするまで待ちます。

    Run Tool window / installing gems

JavaScript の依存関係をインストールする

Yarn(英語) を使用してプロジェクトの package.json ファイルに記載されている JavaScript 依存関係をインストールするには、次の手順を実行します。

  1. Ctrl をもう一度 2 回押して、yarn install と入力し始めます。次に、リストから yarn install コマンドを選択し、Enter を押します。

    yarn install
  2. IntelliJ IDEA がすべてのパッケージをインストールするまで待ちます。

    Run Tool window / installing packages

マイグレーションの実行

Rails アプリケーションを実行する前に、データベースを移行する必要があります。IntelliJ IDEA でこれを行うには、以下の手順に従います。

  1. Ctrl を 2 回押し、db:migrate と入力します。ドロップダウンで rake db:migrate を選択し、Enter を押します。

    Run Anything / rake db:migrate
  2. 呼び出された 'db:migrate' を実行するダイアログでデフォルト設定のままにして、OK をクリックします。

    Execute db:migrate

    これにより、db フォルダーに development.sqlite3 データベースが作成されます。

  3. 最初のステップで説明したように、rake db:migrate をもう一度実行します。今回は、環境オプションを設定して 'db:migrate' を実行するダイアログでテストし、OK をクリックします。作成された test.sqlite3 データベースは、テストの実行に使用されます。

IntelliJ IDEA は、あらゆるサイズのプロジェクトを探索するための豊富なナビゲーション機能を提供します。ファイル間を移動したり、宣言に移動したり、任意のタイプのエンティティを検索したりできます。

プロジェクトビュー

IDE の左側にあるプロジェクトビュー(Alt+1)には、プロジェクトの構造が表示されます。これを使用して、プロジェクト内の任意のファイルを開いたり、新しいファイルを作成したりできます。

Project view

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

Rails View

宣言に移動

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

Go to file

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

Go to declaration

user.rb ファイルのクラス宣言にジャンプします。

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

Go to declaration

IntelliJ IDEA は ActiveRecord Rails モジュール内のメソッド定義を開きます。

使用箇所の検索

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

Find usages

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

Navigate from controller to view

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

Navigate from view to controller

どこでも検索

次の IntelliJ IDEA 機能を使用すると、ファイル、クラス、シンボル、またはオプションを検索し、必要なエンティティにジャンプすることができます。

UsersController 内で destroy アクションを見つけようとしましょう。 Shift を 2 回押して、destroy と入力し始めます。ドロップダウンリストには、シンボルグループ内のすべてのコントローラーの destroy がリストされます。UsersController から destroy アクションを選択して Enter を押します。

Go to symbol

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

destroy action in editor

コードの編集

IntelliJ IDEA はエディターで複数のコード編集機能を使用できるため、開発プロセスのスピードアップを図ることができます。これらには、コード補完、リファクタリング、コードインスペクションなどが含まれます。

コード補完

IntelliJ IDEA は、クラス、メソッド、キーワードなどの名前を完成させるのに役立ちます。コード補完を呼び出すと、IntelliJ IDEA はコンテキストを分析し、現在のキャレット位置に適用可能な選択肢を提案します。

たとえば、users_controller.rb ファイルを開き、UsersController クラスで宣言されているインデックスメソッドに移動します。メソッド内に次のコードを入力します。

@user = User

... と入力し、ドットを入力します。ユーザークラスは ApplicationRecord モジュールから継承されるため、エディターには継承されたすべてのメンバーが表示されます。

Code completion

その後、first と入力してリストをフィルタリングし、クエリモジュールから対応するメンバーを見つけて、Enter を押します。

インテンション

インテンションは、さまざまなコード変更をすばやく適用できます: より良いコードスタイルのためのステートメントの変換、ロケール辞書への文字列の追加、言語インジェクションの使用など。

インテンションの動作を確認するには、user.rb ファイルを開き、複数行の 3 項演算子(? :) を使用する User.digest メソッドまでスクロールダウンします。Ruby スタイルガイド(英語)によれば、そのような演算子を if/then/else/end ブロックに置き換えることが好ましい。これを行うには、キャレットをこの三項演算子(たとえば、ActiveModel の隣)に配置し、Alt+Enter を押します。 Enter を押して、三項演算子を if/then/else/end ブロックに変換します。

Convert statement

インスペクションを使用してコードを確認し、起こりうる問題を検出することができます。

コードのリファクタリング

リファクタリングは、ソースコードを変更したり維持したりするのを容易にするために、ソースコードを変更するプロセスですが、動作を変更することはありません。IntelliJ IDEA で利用できるリファクタリング機能をいくつか見てみましょう。

名前の変更リファクタリングを使用すると、クラス、メソッド、ファイル、変数、パラメーターの名前を変更でき、コード内のそれらへのすべての参照がそれに応じて修正されます。 users.rb ファイルを開き、before_save ActiveRecord コールバックで育っ downcase_email メソッドまでスクロールします。このメソッドの横にキャレットを置き、Ctrl+Shift+I を押してその定義を確認します。

Show method definition

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

Refactor this popup

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

Rename dialog

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

Do refactor

リファクタリング実行をクリックして、すべての場所でメソッドの名前を変更します。

変数を抽出

変数の抽出リファクタリングは、選択した式の結果を変数に代入します。新しい変数を宣言し、その式を初期化子として使用します。元の式は新しい変数に置き換えられます。

user.rb ファイルを開き、フィード方法に移動します。このメソッドでは、SQL サブクエリを変数に抽出できます。これを行うには、対応する部分文字列を選択して Ctrl+Alt+V を押します。次に、変数名を指定し、Enter を押して抽出を終了します。

Extract variable

コードの整形

IntelliJ IDEA を使用すると、コードスタイルの要件を満たすようにソースコードを再フォーマットできます。

user.rb ファイルのコードを再フォーマットしましょう。このファイルを開いて Ctrl+Alt+L を押してください。

Reformat code

IntelliJ IDEA はファイル全体を再フォーマットし、いくつかの変更された行を表示します。

コードを分析する

この部分では、静的コード分析を実行し、問題を検出します。

IntelliJ IDEA は複数のインスペクションタイプをサポートし、さらに IDE 内で RuboCop(英語) の違反を表示することができます。RuboCop インスペクションはデフォルトで IntelliJ IDEA で有効になっており、プロジェクトの SDK に RuboCop gem(英語) をインストールする必要があります。この gem がインストールされていない場合、IntelliJ IDEA はこれを行うことを提案します。

Install Rubocop

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

Rubocop warning

IntelliJ IDEA はアルファベット順に gems を並べ替える必要性を通知する Rubocop メッセージを表示します(OrderedGems(英語) を参照)。

キャレットを bcrypt gem の横に置き、Alt+Enter を押します。エディターは、誤った gems 順序に関連するすべての問題を修正することを提案します。これを行うには、Enter を押します。

Fix Rubocop offences

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

Inspection scope

プロジェクト全体オプションを終了し、OK をクリックします。インスペクションの結果ウィンドウには、プロジェクト全体の警告が表示されます。

Inspection results

このレポートをナビゲートして、特定の警告を修正または抑制することができます。

テストの実行

IntelliJ IDEA では、Minitest、RSpec、Cucumber などのさまざまなテストフレームワークを使用できます。

すべてのテストを実行

プロジェクトの test フォルダーには Minitest テストが含まれています。すべてのテストを実行するには、Alt+1 を押してプロジェクトビューを開きます。次に、test フォルダーを右クリックし、コンテキストメニューから実行 'All tests in test' を選択します。

Run all tests in a directory

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

Test results

特定のテストを実行する

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

Run a specific test

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

Test result

失敗したテストの再実行

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

Broken tests

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

Failed tests

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

Test result

これでアプリケーションを実行する準備が整いました。

実行 / デバッグ構成を作成する

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

Find Action

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

Run/Debug Configurations dialog

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

Run/Debug Configurations dialog

アプリケーションの実行

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

Run Anything / run configuration

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

Run tool window / run Rails application

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

Rails application in a browser

アプリケーションのデバッグ

IntelliJ IDEA の主な機能の 1 つはデバッグサポートです。デバッガーは、実行中のアプリケーションの状態を調べるさまざまな方法を提供します。コードをステップ実行して変数の値をチェックしたり、変数のウォッチを設定して値が変化するかどうかを確認したりできます。

ブレークポイントを設定してデバッグを開始する

まず、users_controller.rb ファイルを開きます。新しいユーザーが作成された行の横にある create メソッド内にブレークポイントを設定します。

Set a breakpoint

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

Start debugging

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

Install gems for debugging

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

Debug console output

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

Rails application in a browser

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

User credentials

プログラムはブレークポイントに達すると停止します。

変数を調べる

これで、アプリケーションの状態と変数の値を調べることができます。

Stop on a breakpoint

フレームペインには、アプリケーションスレッドとそれに対応する呼び出しスタックが表示されます。今回の場合、create メソッドはスレッド 30 で呼び出されます。変数ペインでは、現在のコンテキストで利用可能な変数を調べることができます。

リストに user_params 変数を追加しましょう。変数ペインのボタン add をクリックして、user_params の入力を 開始します。呼び出されたドロップダウンから user_params 変数を選択して Enter を押します。

Add watch

次に、この変数の横にある expand ボタンをクリックし、同じ方法で @parameters 変数を展開します。サインアップ形式で指定されたユーザー資格情報が表示されます。

ブレークポイントに達すると、コードをステップ実行できます。

ステップオーバー

ステップオーバーは、現在のスコープ内の次の行に進みます(たとえば、次の行に移動します)。途中でメソッド呼び出しに降下することはありません。

以下の画面では、ユーザーオブジェクトがまだ作成されておらず、@user 変数が初期化されていない( nil に等しい)ことがわかります。

Breakpoint

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

Step over

expand ボタンを使用して、@user のプロパティを調べます。

ステップイン

ステップインはデバッガーを現在の行のメソッド呼び出しまたはブロックに移動させ、追跡します。複数のメソッド呼び出しまたはブロックがある場合は、目的のターゲットを選択できます。

プログラムの実行を再開するには、Resume Program ボタンをクリックします。ブラウザーに再度アクセスし、別のユーザーをサインアップ形式で作成します。スクリプトは、ユーザーが作成された行に到達すると停止します。

Breakpoint

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

Step into

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

Step into

コンソールでデバッグする

デバッガーにはコンソールタブがあり、IRB のようなコンソールでデバッグされたアプリケーションと対話できます。

コンソールで user_params と入力し始め、対応する変数を選択して Enter を押します。

Debug in console

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

関連ページ:

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 プログラムを最初か...