RubyMine 4.0 Beta is Available for Download!

Hello everyone,

Many of you have asked us when RubyMine 4.0 would be released. Today we’re entering the home stretch! And we glad to announce the first beta version of RubyMine 4 that is available to download.

So let me tell you about the new features:

  • Inline method refactoring we told about can now be tried.
  • We also have good news for those who prefer to deploy with Phusion Passenger. Now it can be chosen as a server in your run/debug configuration.
  • About 2 weeks have passed since RSpec 2.8.0 release and it is already supported by RubyMine.
  • SCSS and LESS users might be glad to here that IDE now provides formatting for these languages.

Please check release notes to take a look on some screenshots.

RubyMine 4 is on the threshold and these days your feedback is very appreciated! Thank you for staying with us and helping the IDE to become better.

One last thing I want to mention. RubyMine versions now have the codenames, so don’t be surprised with a name Tōhi. It is a codename for RubyMine 4 and goes from Japan where it means “fir-tree”. You also can now search our blog with tag Tōhi to find all the posts related to RubyMine 4.


Develop with pleasure!
JetBrains RubyMine Team

Posted in Announcement, Better Code, Cutting Edge | Tagged , , , , , | 9 Comments

What’s Mining: Inline Method Refactoring

Hello guys,

RubyMine team recently was on New Year and Christmas holidays, less than a week has passed since our days off ended, however today we want to show you the new cool feature coming in 4.0 – inline method refactoring.

We are pretty sure most of you are already familiar with extract method refactoring and many of you use it on daily basis. Inline method refactoring is the inverse one for extract method. Let me show you several examples on how it works.

Operations Priority Control

Let’s go to the code fragment:

Place caret on the sum(1) call and invoke Inline method action.

If method has only one usage the second option is not available. So we choose to remove the method and inline the invocation. And in result we get:

Here you can see that RubyMine was smart enough to inline argument default value and simplify the method body by removing unnecessary return statement. (By the way you do know that RubyMine has “Remove unnecessary return statements” intention action, right?)

Local Variables Control

RubyMine analyzes the way locals are used inside a method body you are about to inline and inlines them if it is possible to simplify the result. Let’s take a look:

Before: 

After: 

Here you can see that method parameter 'a' was successfully inlined, and parameter 'b' was renamed to 'b1' to avoid conflicts.

Execution Flow Control


RubyMine guarantees that your program semantics won’t be changed after refactoring.

Accessibility Control

It is guaranteed that all the methods, constants, etc. used in method body are accessible on the call site.

Before: 

After: 

You can see that the 'CCC' constant was changed to a qualified call of 'AAA::CCC'.

Of course there are much more supported cases, and we hope you’ll spend some time exploring and enjoying them. We hope inline method refactoring will become your everyday tool you can rely on.

Stay tuned for more exciting news coming soon!

Develop with pleasure!
-JetBrains RubyMine Team

Posted in Better Code, Feature, WhatsMining | Tagged , | 2 Comments

New Year’s Eve with New RubyMine 4 EAP!

New Year is coming!

We’re licking our chops to make the next significant release at the first quarter of 2012. And in these last days of the year we want to make a small gift to farewell the old year.  We are glad to announce the last EAP of 2011 with some celebratory changes.

Ruby Class Dependency UML Diagram

You might remember that we already have a model dependency diagram for Rails projects. One more diagram is available now showing relationships between any classes and modules in UML notation. The new diagram can be opened in a pop-up or in editor mode. The first one can be invoked by Ctrl+Alt+U/⌘⌥U or from the class context menu. It gives a brief structure overview:

The editor mode can be invoked by Ctrl+Alt+Shift+U/⌘⌥⇧U or from the class context menu as well. It provides more facilities, for instance different types of class members can also be observed:

In editor mode you can also add (by hitting Space) or delete (by hitting Delete) classes from diagram:

——–

New Design of Project View Toolbar

In this EAP we also have made a small though pretty UI improvement. Take a look on how project view toolbar has changed:

For more features please read the release notes or just download and try the new build. You can also read about RubyMine 4.0 features implemented for the moment on our site.

Thank you for staying with us and see you next year.
Happy New Year and Christmas time!


Develop with pleasure in 2012!
JetBrains RubyMine Team

Posted in Announcement, Comfort | Tagged , , , , | 3 Comments

RubyMine 4.0 EAP: More Strength for HAML and CoffeeScript

Hello everyone,

The next RubyMine 4.0 EAP (112.219) is already here. We have some novelties I want to tell about.

HAML

First of all there are good news for those who prefer HAML to RHTML.  From today you can take an advantage of full HTML code insight support in HAML files. Auto-completion is available not only for tag names, but for tag attributes and CSS/SCSS/LESS class names as well:

Special HAML view on Structure panel helps not to get lost in a file:

CoffeeScript

We hope CoffeeScript users will also be pleased with a new feature that allows launching .coffee files via Node.js. You can either run a .coffee file from context menu or create a run configuration. Before the first launch please follow set up instruction.

For more details and screenshots please go to release notes. For download please visit RubyMine 4.0 EAP page.

Looking forward for your comments!


Develop with pleasure!
JetBrains RubyMine Team

Posted in Announcement, Cutting Edge, Productivity | Tagged , , , , | 4 Comments

What’s Mining: Faster Code Modifications with “Unwrap”

RubyMine makes code editing agile and easy with code fragment surrounding actions. To choose one just hit Ctrl+Alt+T / Cmd+Opt+T and invoke “Surround With” panel:

From the last EAP version RubyMine also supports code fragment unwrapping actions, inverting the ones from “Surround With”. They can be invoked by hitting Ctrl+Shift+Del / Cmd+Shift+Del:

Please note, that a special color highlighting shows code fragments to be deleted and to remain. Take a look at how we can revert the first “Surround With” action:

Voila! Feel free to surround and unwrap for faster code editing.

Note: Of course both surround and unwrap actions support Undo action.


Develop with pleasure!
JetBrains RubyMine Team

Posted in Better Code, Feature, WhatsMining | Tagged , | 1 Comment

What’s Mining: Git Revisions Graph

Hello everyone,

If you have already tried the last EAP version you might have noticed the new incredible Git revisions graph feature. If not, let me tell you about it.

First of all, Git log now visualizes all the changes:

Then, you can highlight all the commits in “ancestors subgraph” for a selected change. It helps a lot on dealing with your working tree or some special branch:

RubyMine can also highlight HEAD subgraph, as it does by default actually.

Moreover, you can find any change in Git log (in already loaded fragment) by commit hash, or any description substring, or branch/tag name:

And finally,  you can mark commits with a ‘Star’ by just pressing space to track some set of changes:

That’s it. Please download the last EAP version or read about RubyMine 4 on our site.


Develop with pleasure!
JetBrains RubyMine Team

Posted in Comfort, Feature, WhatsMining | Tagged , | 6 Comments

No Respite on Making RubyMine Faster: Next EAP Is Available

Hello everyone,

We’re keeping on fighting for performance. Thank you for your feedback, it charges us with energy and helps a lot to make RubyMine better from build to build. The next faster RubyMine 4.0 EAP build is available for download.

Try it to get a first-hand impression on IDE responsiveness. And we just show you the numbers. Benchmark results for ‘Inspect Code’ run again on two example projects (Radiant and Diaspora). The results are the time, so the smaller the better:

Besides an improved performance, you will also find some other small but cozy changes:
Ruby code inspections help you improve you code, show inherited and show type hierarchy functions make code analyze and navigation more convenient.

More details and screenshots are available in the full changelog. Looking forward to your feedback!


Develop with pleasure!
JetBrains RubyMine Team

Posted in Announcement, Productivity | Tagged , , | 10 Comments

What’s Mining: Improved Type Hierarchy

Hello everyone,

Next RubyMine 4.0 EAP build is on its way to you. It is very close! Meanwhile let me tell you about one more nice feature that will come with it.

Now you can see the full type hierarchy for a selected class:

… or supertypes and subtypes apart:

That’s it. Hope it will make code analyze and navigation more convenient to you.


Develop with pleasure!
JetBrains RubyMine Team

Posted in Feature, Productivity, WhatsMining | Tagged , | 2 Comments

What’s Mining: New Ruby Inspections for Better Code

Hello everyone,

Writing a code that smells isn’t as terrible as it seems to be. But leaving an ugly code without changing it is much worse. Refactoring is one of the bases of development, and Ruby development is not an exception. RubyMine has a very powerful tool that can help a lot with making your code smell good. I’m talking about ‘Code Inspection’ mechanism. We are tuning it all the time and now it’s time for some Ruby code inspection improvements.

The list of ‘bad code’ metrics for Ruby code inspection is based on Ruby style guide and such tools as Roodi, ReekSaikuroFlogFlay e.t.c. Today I’ll show you some examples how different code checks are performed by RubyMine. Lets take a look at some new code inspections coming in RubyMine 4.

Empty rescue block
This check goes from Roodi and allows to find all rescue blocks without any content. You can decide whether to consider comments as a content and also whether to ignore empty catch blocks when the parameter is named ‘_’. The warning is shown directly in a code that can be rewritten immediately with a help of intention actions.

‘Then’ identifier in multi-line if/unless block
According to Syntax section of the Ruby style guide, you should never use ‘then’ for multi-line if/unless blocks. RubyMine reminds you about it.

Naming conventions
If you’re a newcomer to Ruby or develop with many different languages you might not remember all naming conventions by heart. And it can be really annoying to look after all the names in your code. RubyMine follows Naming section of the style guide by default for Ruby code, but you also can set your own pattern and length as a convention for names.

The list of inspection results is also shown at the ‘Code Inspection’ panel.

The full list of checks with short descriptions is placed in the IDE Settings | Inspections section where every check can switched on or off or configured.

Check out the full list of Ruby code inspection checks available in RubyMine.

Posted in Better Code, Feature, WhatsMining | Tagged , | 3 Comments

What’s Mining: Show You Inherited Methods

Hello everyone,

You know we focus a lot on the performance issues these days. But we don’t forget about other cool features. Let me show you the one, quite yummy…

In the next EAP build you will be able to surf and search not only methods of a class you worked at, but all inherited methods as well. Go to the Structure view and find the new “Show Inherited” icon:

Voila:

Don’t forget you can search:

That’s it. Will be back with more delicious features soon.

Develop with pleasure!
JetBrains RubyMine Team

Posted in Feature, Productivity, WhatsMining | Tagged | 1 Comment