RubyMine 2019.2の新機能

RubyMine 2019.2ではRails 6およびRuby 2.7のサポートを追加し、YARDのサポートとデバッガを改善し、多数のプラットフォームの改良を取り入れています。

デバッガー

デバッガ速度比較 v2019.1 v2019.2

デバッガの高速化

当社のデバッガではTracePoint :lineを使用して1行ずつプログラムの実行を追跡していました。 バージョン2019.2では、デバッガでコードのどの部分で実行を中断するかを選択し、残りのコードをオーバーヘッドから解放できるようするMRI用のネイティブな拡張機能を考案しました。 その結果、デバッガの速度を劇的に向上させ、以下の新機能を実装することができました。

スマートステップイン

スマートステップイン

これまではデバッグセッション中に多数のメソッドを含む行に遭遇した場合、RubyMineは行内の最初のメソッドにしかステップインできませんでした。 新たに追加されたSmart Step Intoはこの制限を解除し、同一行内の各メソッドやブロック呼び出しに対して(対象を矢印キーで選択し)ステップインして調査できるようになりました。

ブロックのブレークポイント

ブロックのブレークポイント

新バージョンでは行だけではなく、ブロックにもブレークポイントを設定できます。 ブロックを含む行にブレークポイントを設定するために左ガターをクリックすると、RubyMineは行、ブロック、またはその両方にブレークポイントを設定するかどうかを尋ねます。

RubyMineでRuby&Railsスクリプトをデバッグする方法に関する詳細は、RubyMineでのデバッグをお読みください。

Ruby 2.7

パターンマッチング

RubyMine 2019.2は、Ruby 2.7の初回プレビューで実験的機能として導入されていたパターンマッチングをサポートしています。 このIDEは新しい構文を識別することができ、オブジェクト間を移動し、オブジェクトの使用箇所を検索し、名前を変更できるようにします。

Rubyのパターンマッチングに関する詳細

番号指定ブロックパラメータ

番号指定ブロックパラメータ

RubyMineの新バージョンは番号指定パラメータの構文を認識し、その使用箇所を表示/検索します。 これは、ブロック変数を定義する代わりに、パラメータ番号をデフォルトのパラメータに使用してブロックの値を割り当てられる、Ruby 2.7のもう一つの実験的機能です。

Rails 5.x

Action Mailboxのサポート

Action Mailbox

RubyMine 2019.2は、Rails 6で送り出されるAction Mailboxをサポートしています。 このIDEはroutingメソッドやコールバックの自動補完候補を表示し、それらの実装や使用箇所の間を移動できるようにします。

Action Mailbox対応のインスペクション

また、ApplicationMailboxroutingの呼び出しや、メールボックスでprocessメソッドを追加し忘れていた場合に通知を行う2つのインスペクションを追加しました。 後者はクイックフィックスも提供しています。

Action Mailboxの使用方法については、こちらの詳細なGoRailsのエピソードをご覧ください。

列挙型のサポート

ActiveRecord::Enum向けに適切なコードインサイトのサポートを追加しました。 これには列挙型の名前やメソッドに対するコード補完、ナビゲーション、使用箇所の検索が含まれます。 Rails 6で導入された列挙型の否定範囲(Negative scopes for enums)もサポートされています。

YARD

YARDサポートの強化

YARDサポートの強化

当社はYARDのサポートを徐々に改善し、YARDタグを作成や管理を支援し、RubyMineでYARDの注釈に基づいた優れたコード補完を使えるようにしています。 新バージョンでは@overloadおよび@yieldparamタグに適切な型の注釈とインスペクションを追加しています。

RubyMineの詳細な機能概要とYARDに関する最新の改善点については、RubyMineにおけるYARDのサポートをお読みください。

Factory Bot

Factoryに対するrename

Factoryに対するrename

バージョン2019.2では、factory、sequence、traitの名前をrename(Shift+F6)でリファクタリングできます。 このIDEはこれらの定義を検出し、その定義とそのすべての使用箇所で名前を変更するよう提案し、ファイル名がfactory名に一致する場合も名前を変更するよう提案します。

また、File Structureビュー(Alt+F7)とポップアップ(Ctrl + F12)にfactory、sequence、traitを追加し、それらを安全に削除できる機能を追加しました(Refactor | Safe Delete)。

JavaScript

デストラクチャリングインテンション

新しいインテンションアクション

新しいPropagate to destructuringインテンション(Alt-Enter)を使うと、可能な場合に追加の変数を別のデストラクチャリングに置き換えることができます。 デストラクチャリングを完全に削除するには、Replace destructuring with property or index accessというインテンションアクションを使用してください。

Refactoring Previewでの動的な使用箇所

名前の変更リファクタリングの改善

JavaScriptまたはTypeScriptファイル内のシンボル名を変更する際、IDEが動的な使用箇所をグループにまとめ、デフォルトでそれらをリファクタリング対象から除外するようになりました。 これにより、リファクタリングの精度が向上し、Refactoring Previewツールウィンドウで正確に名前を変更すべきものをより細かくコントロールできるようになりました。

Vuetifyのプロパティ

Vue.jsコンポーネントライブラリのサポートを強化

Vuetify、BootstrapVue、Quasar、およびその他のVueコンポーネントライブラリのコンポーネントとそのプロパティに対するコード補完がより正確になりました。 これは、当社がIDEでこれらのライブラリを処理するために採用した新しいアプローチにより実現しました。

重複コード検査

重複コードの検索

新しいDuplicate code fragmentインスペクションはその場でコードをチェックし、エディタ内で即座に潜在的な重複箇所をハイライトします。 この機能はJavaScript、TypeScript、CSS、Sass、SCSS、Lessで動作します。

RubyMine 2019.2で使用可能なJavaScriptの改善に関する詳細は、WebStormの新機能をご覧ください。

コードスタイル

コードスタイル設定の編集

EditorConfigサポートの改善

バージョン2019.2では、複数の.editorconfigファイルを追加することで、複数プロジェクトのさまざまな部分で異なるコードスタイルを維持できます。 長年サポートされてきた標準的なEditorConfigオプションのほか、使用可能なすべてのIDEコードスタイルオプションを網羅したIDE固有のプロパティを使用できるようになりました。

シェルスクリプト

シェルスクリプト編集

シェルスクリプトの編集

新しいバージョンでは、シェルスクリプトのサポートを追加しています。 この中には、.shおよび.bashファイルに対するコード補完、クイックドキュメント、テキストベースの名前変更、およびシェルスクリプト用の実行構成が含まれています。 このIDEは、リンティング用のShellCheckとコード整形用のshfmtも統合しています。

Git

.gitignoreのコード補完

.gitignoreでのコード補完

このIDEは、.gitignoreファイルでファイル名やフォルダ名のコード補完機能を提供できるようになりました。 名前の上でCtrl-クリックすると、Projectツールウィンドウ内の対象ファイルやフォルダにジャンプできます。 また、Project表示およびLocal Changesタブから.gitignoreに素早くファイルを追加できます。対象ファイルを右クリックしてAdd to .gitignoreを選択してください。

データベースツール

データベースツールの改善:全文検索

全文検索によるデータの発見

データの正確な位置が分からなくても、データベース内でデータを検索できるようになりました。 検索したいデータソースを右クリックして、Full-text SearchCtrl+Alt+Shift+F)を選択してください。 クエリ結果が絞り込まれ、データが見つかった場所の文字列だけが表示されます。

RubyMine 2019.2で使用可能なデータベースに関するその他の改善については、DataGripの新機能をご覧ください。

その他の改善

  • 標準gemのサポート
  • Action Textのサポート
  • Cucumber 4のサポート
  • Version Controlツールウィンドウの軽微なUI改善