{"id":283255,"date":"2022-10-10T10:14:05","date_gmt":"2022-10-10T09:14:05","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=ruby&#038;p=283255"},"modified":"2022-10-19T11:17:23","modified_gmt":"2022-10-19T10:17:23","slug":"rubymine-2022-3-eap2","status":"publish","type":"ruby","link":"https:\/\/blog.jetbrains.com\/fr\/ruby\/2022\/10\/rubymine-2022-3-eap2","title":{"rendered":"RubyMine 2022.3 EAP2"},"content":{"rendered":"<p>RubyMine 2022.3 EAP2 is now available. Here are the most notable new features of this build:<\/p>\n<h2>RSpec<\/h2>\n<h3>Support for example group aliases: <code>xdescribe<\/code>, <code>xcontext<\/code>, <code>fdescribe<\/code>, <code>fcontext<\/code><\/h3>\n<p>RubyMine recognizes the <code>xdescribe<\/code>, <code>xcontext<\/code>, <code>fdescribe<\/code>, and <code>fcontext<\/code> example group aliases and shows such blocks in the <a href=\"https:\/\/www.jetbrains.com\/help\/ruby\/2022.3\/viewing-structure-of-a-source-file.html\" target=\"_blank\" rel=\"noopener\">Structure tool window<\/a> (<strong>\u2318 7<\/strong> on macOS or <strong>Alt+7<\/strong> on Windows). Now, you can also <a href=\"https:\/\/www.jetbrains.com\/help\/ruby\/2022.3\/performing-tests.html#run-tests\" target=\"_blank\" rel=\"noopener\">run these tests<\/a> using the gutter icons right in the editor.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-283269\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/09\/rspec_aliases.png\" alt=\"\" width=\"2104\" height=\"1044\" \/><\/p>\n<h3>Completion of shared context names<\/h3>\n<p>In this build, we\u2019ve added support for completion of shared contexts and examples. RubyMine offers completion options from any defined shared contexts and examples.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-283280\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/09\/rm_shared_context_completion.png\" alt=\"\" width=\"1228\" height=\"368\" \/><\/p>\n<p>Filtering of completion options will be coming next, so stay tuned.<\/p>\n<h3>Navigation between controllers and request and routing specs<\/h3>\n<p>RubyMine links request and routing specs to their respective controllers. Open the necessary request or routing spec and press <strong>\u21e7 \u2318 T <\/strong>on macOS or <strong>Ctrl+Shift+T <\/strong>on Windows to navigate to the controller used as a test subject. You can use the same shortcut to navigate from the controller file to the corresponding spec.<\/p>\n<div style=\"width: 2168px;\" class=\"wp-video\"><!--[if lt IE 9]><script>document.createElement('video');<\/script><![endif]--><br \/>\n<video class=\"wp-video-shortcode\" id=\"video-283255-1\" width=\"2168\" height=\"1380\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/09\/rm_controller_spec_navigation.mp4?_=1\" \/><a href=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/09\/rm_controller_spec_navigation.mp4\">https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/09\/rm_controller_spec_navigation.mp4<\/a><\/video><\/div>\n<p>You can always find request specs in the <code>spec\/requests\/<\/code> folder, and routing specs in the <code>spec\/routing\/<\/code> folder.<\/p>\n<h2>Other improvements<\/h2>\n<h3>Clickable URLs in string literals<\/h3>\n<p>You can now open URLs directly from your Ruby code. While holding <strong>\u2318 <\/strong>(on macOS) or <strong>Ctrl<\/strong> (on Windows), click the URL to open it in your default browser.<\/p>\n<div style=\"width: 3360px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-283255-2\" width=\"3360\" height=\"1900\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/09\/rm_clickable_urls.mp4?_=2\" \/><a href=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/09\/rm_clickable_urls.mp4\">https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/09\/rm_clickable_urls.mp4<\/a><\/video><\/div>\n<p>Alternatively, place the caret next to the desired URL and press <strong>\u2318 B <\/strong>on macOS or <strong>Ctrl+B<\/strong> on Windows.<\/p>\n<h3>Support for the Devise gem<\/h3>\n<p>In this release, we\u2019ve added support for the <a href=\"https:\/\/github.com\/heartcombo\/devise\" target=\"_blank\" rel=\"noopener\">Devise<\/a> gem as well as several of code assistance features for the Devise methods, including:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.jetbrains.com\/help\/ruby\/2022.3\/auto-completing-code.html\" target=\"_blank\" rel=\"noopener\">Code completion<\/a><\/li>\n<li><a href=\"https:\/\/www.jetbrains.com\/help\/ruby\/2022.3\/navigating-through-the-source-code.html\" target=\"_blank\" rel=\"noopener\">Navigation<\/a> from dynamic methods<\/li>\n<li><a href=\"https:\/\/www.jetbrains.com\/help\/ruby\/2022.3\/find-highlight-usages.html\" target=\"_blank\" rel=\"noopener\">Search for usages<\/a><\/li>\n<li><a href=\"https:\/\/www.jetbrains.com\/help\/ruby\/2022.3\/viewing-reference-information.html#type-info\" target=\"_blank\" rel=\"noopener\">Type info<\/a><\/li>\n<li><a href=\"https:\/\/www.jetbrains.com\/help\/ruby\/2022.3\/refactoring-source-code.html\" target=\"_blank\" rel=\"noopener\">Refactorings<\/a><\/li>\n<\/ul>\n<h3>RuboCop as an external formatter<\/h3>\n<p>Starting with this release, RubyMine can use RuboCop <a href=\"https:\/\/docs.rubocop.org\/rubocop\/usage\/server.html\" target=\"_blank\" rel=\"noopener\">running in server mode<\/a> as an external formatter.<\/p>\n<p>This feature is experimental and to try it, you need to select the <code>ruby.external.formatter<\/code> key in the <em>Registry<\/em>.<\/p>\n<p>Once the feature is enabled, you can configure the external formatter. Go to <em>Settings \/ Preferences | Editor | Code Style | Ruby. <\/em>Then open the <em>Other<\/em> tab, toggle the <em>Use external formatter<\/em> checkbox, and select <em>Rubocop <\/em>in the <em>Select external formatter<\/em> field.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-283335\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/09\/rm_select_external_editor.png\" alt=\"\" width=\"1964\" height=\"760\" \/><\/p>\n<p>To reformat a code fragment using RuboCop, select the necessary code in the editor and press <strong>\u2325 \u2318 L<\/strong> on macOS or <strong>Ctrl+Alt+L<\/strong> on Windows.<\/p>\n<div style=\"width: 1954px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-283255-3\" width=\"1954\" height=\"1130\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/09\/rm_rubocop_formatting.mp4?_=3\" \/><a href=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/09\/rm_rubocop_formatting.mp4\">https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/09\/rm_rubocop_formatting.mp4<\/a><\/video><\/div>\n<p>If you disable the use of RuboCop as an external formatter, RubyMine will use its internal formatter again. The same is true in cases where the RuboCop gem is not added to your Gemfile.<\/p>\n<h3>Updated Ruby template header<\/h3>\n<p>We\u2019ve included the <code># frozen_string_literal: true<\/code> comment in the header of the default Ruby file template. Previously, you could edit the template manually in <em>Settings \/ Preferences<\/em>, but now everything works out of the box.<\/p>\n<p>When you create a new Ruby file, class, or module, RubyMine will add the comment at the beginning of the file automatically.<\/p>\n<div style=\"width: 2504px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-283255-4\" width=\"2504\" height=\"1498\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/09\/rm_frozen_comment.mp4?_=4\" \/><a href=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/09\/rm_frozen_comment.mp4\">https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/09\/rm_frozen_comment.mp4<\/a><\/video><\/div>\n<h2>Join the Early Access Program<\/h2>\n<p>You can download the latest EAP build <a href=\"https:\/\/www.jetbrains.com\/ruby\/nextversion\/\" target=\"_blank\" rel=\"noopener\">from our website<\/a> or via the <a href=\"https:\/\/www.jetbrains.com\/toolbox-app\/\" target=\"_blank\" rel=\"noopener\">Toolbox app<\/a>. The full list of closed tickets in this EAP build is available in the <a href=\"https:\/\/youtrack.jetbrains.com\/articles\/RUBY-A-220365003\" target=\"_blank\" rel=\"noopener\">release notes<\/a>.<\/p>\n<p>To learn about the newest features as they come out, please follow <a href=\"https:\/\/twitter.com\/rubymine\" target=\"_blank\" rel=\"noopener\">RubyMine on Twitter<\/a>. We post product news and tips several times a week.<\/p>\n<p>We encourage you to share your thoughts in the comments below and to create and vote for new features in the <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/ruby\" target=\"_blank\" rel=\"noopener\">issue tracker<\/a>.<\/p>\n<p><em>Happy developing!<\/em><\/p>\n<p>The RubyMine team<\/p>\n","protected":false},"author":1310,"featured_media":285087,"comment_status":"closed","ping_status":"closed","template":"","categories":[826],"tags":[7086,600],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/ruby\/283255"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/ruby"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/types\/ruby"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/users\/1310"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/comments?post=283255"}],"version-history":[{"count":10,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/ruby\/283255\/revisions"}],"predecessor-version":[{"id":288202,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/ruby\/283255\/revisions\/288202"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media\/285087"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media?parent=283255"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/categories?post=283255"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/tags?post=283255"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/cross-post-tag?post=283255"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}