CSC/ECE 517 Fall 2012/ch1 1w29 sa
IDEs for Ruby
Overview
Ruby
Ruby is a dynamic, reflective, object oriented programming language which was first developed in mid 90s by Yukihiro "Matz" Matsumoto in Japan.[1]. It is a cross plat-form interpreted and object-oriented language. It is desined for the principle of least surprise.Matz says "I wanted to minimize my frustration during programming, so I want to minimize my effort in programming. That was my primary goal in designing Ruby. I want to have fun in programming myself. After releasing Ruby and many people around the world got to know Ruby, they said they feel the way I feel. They came up with the phrase the principle of least surprise."[2] In 2004, web application framework of Ruby "Ruby on Rails" was introduced by David Heinemeier Hansson. With increased complexity of codes, it became essential to design a development environment which will include some intelligence in code writing with increased version control and simpler debugging. Thus IDE's were introduced.
What is an IDE
An IDE(Intgrated Development Environment) is a software application which provides comprehensive facilities during a project for its design, development, production. With these facilities for heavy projects, it should be seen that simpler projects are not being implemented with increased complexity. An IDE normally consists of:
- A source code editor
- A compiler and/or an interpreter (computing)|interpreter
- Build automation tools
- A debugger
- Version Control System
- Testing facilities
This article explains features of various IDE which are widely used for development of Ruby on Rails.
List of Popular IDEs for Ruby
RadRails
History
RadRails was started as an open source project by Kyle Shank, Marc Baumbach, and Matt Kent in September 2005 during their time as developers at IBM at Raleigh, NC. Along with Andy Gianfagna and Ryan Lowe, the project continued through 2006. Based on their idea for a startup, Kyle and Matt working on Persai with RadRails pushed as a side project. In the best interests of the RadRails community, Kyle handed over the project to Aptana who later on March 9, 2007 took over it and renamed it to Aptana RadRails.
Overview
RadRails[3] is a complete open source, web development tool supported by Aptana[4]. RadRails is essentially a Rapid Application Development IDE for the Ruby on Rails[5] framework. It comes bundled with an Integrated Debugger (for a more visual and intuitive debugging experience) and a Built-in Terminal (to run utilities like gem, rake etc.). The IDE can be customized to include custom scripts and commands. Some of the other salient features of RadRails include:
- HTML, CSS, and JavaScript Unification
- Apart from Ruby and Rails, it supports development with HTML, CSS, Javascript, PHP and Python. It also provides support for latest versions of popular browsers along with HTML5 and CSS3.
- Deployment Wizard
- Provides support for multiple protocols like FTP, SFTP, FTPS and Capistrano. Enables support for continuous and multiple synchronized setups and integration and deployment to hosting services like Heroku[6].
- Git Integration
- Supports most Github based functions like git source code control, collaborating with team mates to use merge, pull and push to repositories set up at Github or other servers. Git-based deployments are also supported.
Architecture
The RadRails IDE is built on the Eclipse RCP, and includes the RDT and Subclipse plug-in. The RadRails tools are also available as Eclipse +plug-ins. The IDE is built to support cross platform compatibility and comes with a GNU GPL license. The latest stable release is version 3.2.2.[7] At EclipseCon 2006 RadRails won the Community Award for Best Open-Source Eclipse-based tool.[8]
Netbeans
History
NetBeans started as a student project (originally called Xelfi) in Czechoslovakia, now the Czech Republic, in 1996. The goal was to write a Delphi-like Java IDE (Integrated Development Environment) in Java. Xelfi was the first Java IDE written in Java, with its first pre-releases in 1997. Xelfi was a fun project to work on, especially since the Java IDE space was uncharted territory at that time.[9]
Overview
A free, open-source Integrated Development Environment for software developers. All the tools needed to create professional desktop, enterprise, web, and mobile applications with the Java platform, as well as with C/C++, PHP, JavaScript and Groovy.[10] Some of the smart features[11] in Netbeans IDE for Ruby are:
- Refactoring and Debugging
- Code Coverage Support
- Rake Runner
- Live Code Templates
- Ruby Gems Manager
Architecture
Ruby architecture for NetBeans consists of the following three layers:
- Backends
NetBeans utilizes debug-commons project from RubyForge. This project is common effort of RDT developers (mainly Markus Barchfeld) and Netbeans. All backend works are being done there.
- Intermediate library
It is an IDE-independent Java library intermediating communication between various Ruby debugging backends and a frontend. It is based on the one that was in RDT[12] but with slightly remade threading part and others part refactored. Also this library will be kept and developed as part of debug-commons since it is supposed to be developed by all interested parties in the future. It uses kxml2 XML Pull Parser implementation which needs to be bundled within a frontend.
- NetBeans frontend
Standard NetBeans module utilizing libraries/layers above.
Textmate
History
Allan Odgaard is known to be the principal developer of TextMate. He started the project way back in 2004 and released the first version TextMate 1.0 on 5 October 2004. Through the period of the following years, Odgaard released more stable versions, like TextMate 1.5, before it was recognized officially by winning the Apple Design Award for Best Developer Tool, at Apple’s Worldwide Developers Conference in San Francisco, California in August 2006. It has continued to release improvements over the years with TextMate 1.5.11 being the latest stable release as of 13 July 2012. Also, on 7 September, 2012, TextMate 2.0 has been made available as a preview release.
Overview
TextMate is the most popular Ruby based IDE for the Mac OS. It is a simple GUI based text editor tool specially made for Mac OS X. Some the most important features provided by TextMate include:
- Nested scopes
- CSS-like Selectors to Pinpoint the Scope of Actions and Settings
- Auto-Complete
- Dynamic Outline for Working With Multiple Files[13]
- Project management
Architecture
TextMate is often referred to as a culmination of EMACs[14] and Mac OS X. In spite of numerous requests for a Windows or Linux version, TextMate continues to be exclusive to the Mac Operating Systems. TextMate is not an IDE but by using its powerful snippets, macros, and unique scoping system, it can often provide features that even a language specific IDE lacks. It has enough project management features to keep most users happy, but is otherwise kept lightweight with a clean and minimalistic GUI.[15]
RubyMine
RubyMine is a new IDE for Ruby and Rails developers, which is built on JetBrains' IntelliJ IDEA platform. First version of RubyMine was released on April 28th, 2009.Its most recent version is RubyMine 4.5[16]
Overview[17]
- RubyMine has a ruby editor with highlighting feature and coloring scheme. It contains smart auto code completion and code navigation features.
- RubyMine supports Ruby on rails with intelligent code maintenance.
- Testing features of RuyMine:
- Unit Testing
- Functional testing with Cucumber
- Support for Shoulda Framework
- It has a graphical debugger. Debugging features include:
- Convinient user interface
- Smart and flexible breakpoints
- Call stack.
- Remote debugging is also possible.
- VCS specific operations include subversion, git, cvs, perforce, github .
Pros
- RubyMine is a completely Ruby on Rails focused tool.
- It provides built in support for all common gems required for rails development.
- It also provides very good support for other frameworks.
- Autocomplete feature makes the tool intelligent.
- Debugger in RubyMine is easy to set up.
Cons
- RubyMine is not a lightweight tool.
- Lots of bundles are required to create a project. If developer doesn't have all of them, project won't work.
- Refactoring in RubyMine is more confusing than that in other tools like Ecllipse, NetBeans.
jRuby
History
JRuby was created in 2001 by Jan Petersen. It was created to support Ruby development. It started supporting Ruby on Rails from version 0.9 which was released in May 2006. Latest version of Jruby is 1.6.0 which includes Ruby 1.9.2 compatibility and experimental support for C APIs of ruby 1.9.2[18]
Features[19]
JRuby is essentially a Ruby interpreter which is written in Java. Important features of Jruby include:
- It is an open source software.
- It is platform independent.
- It can be called directly from Java programs.
- It supports swing class in Java.
- It is compatible with all the versions of Ruby.
- It has built in support for Ruby on Rails, Rspec, Rake andmost of the Rubygems.
Architecture[20]
JRuby's virtual machine has 3 features. It can interpret the code directly, compile it just after typing it to produce Java Bytecode which is called Just In Time(JIT) or it can compile it ahead of time to produce Java bytecode i.e. Ahead Of Time(AOT). Second and third modes are available from version 1.1. JRuby virtual machine runs in all the 3 modes. Interpretation and compilation can be done at the same time. Decompilation of the code is also possible to optimize it.
RDT (Ruby Plugin for Eclipse)
Overview
Eclipse is an Integrated Development Environment which supports development in numerous languages like C, C++, COBOL, Perl, PHP, Python, R, Ruby on Rails etc. It is basically written mostly in Java was initially developed for Java development. But then it was developed not only for development phase but also for design phase. RDT(Ruby Development Tool) is used for Ruby development in eclipse.
Eclipse is a multi-language software development environment comprising an integrated development environment (IDE) and an extensible plug-in system. It is written mostly in Java and can be used to develop applications in Java and, by means of various plug-ins, other programming languages including Ada, C, C++, COBOL, Perl, PHP, Python, R, Ruby (including Ruby on Rails framework), Scala, Clojure, Groovy and Scheme.
Features
The Ruby Development Tools (RDT) contain all the components needed to develop applications using Ruby languagage. RDT includes a Ruby debugger, code outline, syntax highlighting, ri/rdoc integration, code completion, code folding, variable occurence marking and much more. [21] Current version of RDT is 0.5 . Improvements in next version i.e. 0.6 include:
- Code folding — Folding can be enabled for classes and methods.
- Outline view — More detailed, with support for local variables.
- RI view — Use Ruby's ri utility from an RDT view.
- Task tags — Create tasks for configurable keywords (like TODO, FIXME) in Ruby comments.
- Editor improvements — Auto-complete of brackets, parentheses, and single/double quotes; better code-assist.
- Inspection shortcuts — Configurable shortcuts for frequently used inspections during a Debug session, like showing all methods of an object, #global constants, and so on.[22]
Comparison Table of Popular IDEs for Ruby
Basic Comparison
IDE | Developer | Last stable release | Platform Dependence | License |
---|---|---|---|---|
RadRails | Aptana, Inc. | Aptana RadRails 2.0.5 | Cross-platform | GPL, proprietary |
NetBeans | Oracle Corporation | 7.0 (Ruby on Rails unsupported by 7.2) | Cross-platform | CDDL or GPL v2 |
TextMate | MacroMates Ltd. | 1.5.11 | Mac OS X | 2.0 GPL, 1.0 proprietary |
RubyMine | JetBrains | 4.0.3 | Cross-platform | Proprietary |
jRuby | Charles Nutter, Thomas Enebo, Ola Bini and Nick Sieger | 1.6.7.2 | Cross-platform | CPL, GPL, LGPL |
RDT (Eclipse) | Open Source Community | 4.2 | Cross-platform | Eclipse Public License |
Feature Comparison
IDE | Refactoring | Error Reporting & Suggestion | Code Formatting | Git Integration | Syntax Highlights | Code Folding | Debugging Mode | Code Analysis | Rake Integration | Support for Other Languages |
---|---|---|---|---|---|---|---|---|---|---|
RadRails | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No |
NetBeans | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
TextMate | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
RubyMine | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No |
jRuby | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | No |
RDT (Eclipse) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Refactoring Comparison
IDE | Rename | Convert Local Variable to Field | Encapsulate Field | Extract Method | Inline Class | Inline Local Variable | Inline Method | Merge Class Parts in File | Merge with External Parts | Move Field | Move Method | Push Down | Push Up |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
RadRails | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
NetBeans | Yes | No | No | No | No | No | No | No | No | No | No | No | No |
TextMate | Yes | No | No | No | No | No | No | No | No | No | No | No | No |
RubyMine | Yes | No | Yes | No | No | No | No | No | No | No | No | No | No |
jRuby | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
RDT (Eclipse) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
References
- http://en.wikipedia.org/wiki/Ruby_(programming_language)
- http://rubylearning.com/satishtalim/ruby_installation.html
- http://en.wikipedia.org/wiki/RadRails
- http://en.wikipedia.org/wiki/Ruby_on_Rails
- http://www.heroku.com/
- http://www.aptana.com/products/studio3/download
- http://en.wikipedia.org/wiki/RadRails
- http://netbeans.org/about/history.html
- http://netbeans.org/features/index.html
- http://wiki.netbeans.org/Ruby
- http://sourceforge.net/projects/rubyeclipse/
- http://manual.macromates.com/en/working_with_multiple_files#auto-updating_projects
- http://www.gnu.org/software/emacs/
- http://macromates.com/
- http://www.jetbrains.com/company/history.jsp
- http://www.jetbrains.com/ruby/features/index.html
- http://en.wikipedia.org/wiki/JRuby
- http://jruby.org/
- http://www.easyeclipse.org/site/plugins/rubyeclipse.html
- http://www.ibm.com/developerworks/opensource/library/os-rubyeclipse/
- http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_517_Fall_2011/ch1_1a_lj
- http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_517_Fall_2011/ch1_1a_cs
- http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_517_Fall_2011/ch1_1a_ms