RubyMine 2.0 : A Clear Path to Dynamic Development
JetBrains has taken it on themselves to create one of the premier Ruby IDEs on the market. It has been just over 6 months since version 1.0 was released and today, RubyMine 2.0.
At the time of the first release we talked with lead RubyMine developer Dmitry Jemerov where he indicated what was coming in future releases and as promised, RubyMine is evolving as a solid development environment for Ruby developers.
A complete list of new features is available looking at the What's New section of the RubyMine web site. The key new features of this release include:
• Support for Ruby 1.9 and the latest Ruby on Rails framework
• Advanced refactorings for Ruby code with support for Rails project specifics
• Improved Ruby code analysis and new code duplicates detection routine
• Rails internationalization (i18n) support with coding assistance
• Specific assistance for creating and running Cucumber test scenarios and Shoulda
InfoQ had the opportunity to have a conversation with Eugene Toporov, Product Marketing Manager at JetBrains, about the release of RubyMine 2.0.
When asked about which are considered the biggest features of this 2.0 release, Eugene elaborated, saying:
Generally speaking, we've been working on making RubyMine 2.0 cover the needs of the majority of Rails applications developers. With this release, we feel that our IDE provides a strong integration for the most widely used technologies and frameworks in the Ruby and Rails world.
We've been moving in many directions though. JetBrains is the pioneer in creating refactoring tools, so we wanted Ruby developers to have a set of reliable Ruby code refactorings. Testing is very important part of the development process and with the added full support for Cucumber and Shoulda, RubyMine can cover the demands of virtually any Ruby/Rails project now. One other very important aspect is the performance of the IDE and we've put lots of effort into this too.
It appears Cucumber and Shoulda are becoming first-class citizens in RubyMine. The topic is one JetBrains is very passionate about:
Yes, exactly! We got so excited about Cucumber that the RubyMine team even uses it to test our code now. So, we've been dog-fooding our Cucumber integration and we are confident it is the best in terms of editing and running Cucumber scenarios. The smart steps completion works great even for huge amount of step definitions and you do not need to remember them exactly. Step definition creation from usage and automatic examples creation save great amount of time too.
Those who prefer Shoulda can now enjoy writing and running tests with their framework in RubyMine, with coding assistance, ability to run individual tests and all other things we provide for integrated test frameworks.
The addition of i18n support in RubyMine is a major new feature, which has been exercised in a real project. Eugene explains his personal use of this feature:
Oh, i18n is one of my favorite. I took part in localizing Radiant CMS this spring with no assistance from the IDE available at that time. And I did some more internationalization recently using RubyMine 2.0. The difference is huge! Extracting strings from the code, both from Ruby and from Rails views (ERB or HAML), is the matter of seconds now and is less error prone. You can instantly navigate to localization files, see what text your code will generate, no matter how many languages you have in your application. Yes, this is much easier now.
Developer productivity is a major focus in the release, on this subject the explanation is apparent:
There are quite many. Some are quite big, such as code duplicates detection routine. It allows inspecting project code and finding similar code blocks. We've been testing it on many open-source Ruby projects, including even Rails framework code. It gives really interesting and useful results.
Comparing to RubyMine 1.x, the new version is built on the latest IntelliJ platform which brings many IDE generic additions and improvements—in VCS support, UI and usability. One example is custom background colors for files and file-sets. Now, when you have 3 show.html.erb files open in editor tabs you can tell which is which.
The discussion moved to Ruby 1.9.1 support and how the support in RubyMine 2.0 is different than prior releases:
Actually, RubyMine 1.x only allowed to use Ruby 1.9 as a target SDK but did not understand the new language syntax. Now RubyMine's editor knows and understands the new lambda syntax, local variables semantics, etc. This is far more than just syntax highlighting, the knowledge is now the part of RubyMine's code analysis routines.
Refactoring has been a distinguished feature of JetBrains products in the past. When asked about the level of refactoring in 2.0:
RubyMine 2.0 adds several new refactorings, such as Extract Module/Superclass, Introduce Variable/Constant/Field, Inline Variable and Pull Up/Push Down Members. These refactorings is quite enough to keep the project code in a good shape by making project-wide changes. And the old Rename and Extract Method refactorings are now smarter, easier to use and work even better for Rails projects.
One interesting and important feature to notice is the integration with TeamCity, the company’s continuous integration (CI) server, Eugene explains the use of a CI server in a developer’s workflow:
With TeamCity Rake Runner you can set-up continuous integration for your Ruby/Rails projects and run project tests in a dedicated environment. With the TeamCity plugin installed, RubyMine allows to run builds on the build-server right from the IDE, review build results and statistic, and perform pre-tested commits. Additionally, you can open source code files in RubyMine right from TeamCIty web UI while browsing test results or VCS history.
On the subject of what developers can look for in the future:
We already have a long roadmap for future versions of RubyMine and right after 2.0 release we will be aligning it with dates and splitting into different versions. Some things that will appear soon are integrated SQL console, deployment support and even better support for Rails development, including support for Rails 3.0. We'll be adding integration with issue trackers, including JetBrains YouTrack, And of course we'll be working on improving the quality of the existing integrations. We are trying to be on the cutting edge and we adopt our plans depending on the trends and users needs, so if you want something done — just let us know!
A full list of the new features of RubyMine and to download a free 30-day evaluation copy can be found on the JetBrains web site. RubyMine 2.0 is a free upgrade for RubyMine 1.x owners and runs on Windows, Mac OS X and Linux and is available today.