Dogfooding Analyzed
As you may remember we dedicated one week to use RubyMine as you would use it and work on Exception Browser application. In addition to the “dogfooding” we wanted to improve the process of tracking issues reported from RubyMine and IntelliJ IDEA. Well, I guess now is a good time to share some of our experience of working with RubyMine.
So let’s start. We took our laptops and occupied one of JetBrains conference rooms (see the photo) to concentrate on Rails development instead of our daily Java work.
Most of our team, including me, is not too experienced in writing real-life Ruby and Rails applications (book examples is obviously not quite enough). So the first days I personally was getting into Rails development. At that time I really appreciated the navigation features of RubyMine. ‘Rails aware navigate’ as well as ‘partial declarations’ and ‘overriding elements’ navigation helped a lot.
We had to work with an already defined database of the existing application. And its table names did not follow the Rails naming conventions, so some of the nodes in Rails Project View were not enabled. We had fixed it by renaming models according to Rails conventions and everything went OK. This allowed us to write migrations in Rails 2.2 style.
Of course we`ve faced other problems during the development week. Most of them were kind of usability issues: some bugs on editing code, parentheses typing inside a comment or a string, some exceptions, etc. Totally, we’ve added over 50 issues to our JIRA and some of them were even IDEA core issues.
Apart from the bugs we had also noticed some lack of functionality. I was really missing the ‘find usages’ for partial views, named routes support and support of set_table_name inside Models. Anyway, what really rocks is our support of Rails calls (paramdefs notation) like hide_action
in controllers of has_*
, belongs_to
, etc. in Models. It smartly completes the parameters available for a given call with resolve and automatic inspections.
Many of the usability problems we had found then are already fixed and available in the latest RubyMine EAP and Ruby plugin for IntelliJ IDEA. We’ve also significantly improved the performance of background code analysis tasks by completely rewriting some parts of the code.
At the moment we put lots of our effort to improving the overall usability of RubyMine (new rake run action, enhancing Ruby Quick documentation layout, etc).
I think it was a great experience and I’m sure we will do it again!
As for the Exception Browser, there are still some things to finish: improve the layout, add some minor features. Once it is ready, we will deploy it to let you track you exception reports and help us make RubyMine even better!
But now we have the Beta release to concentrate on.
To finish, the project code navigation features that I really love in RubyMine:
Navigate to Rails
Go to overridden class
Go to partial view from Controller