CSC/ECE 517 Fall 2012/ch1 1w29 sa

From Expertiza_Wiki
Revision as of 20:13, 20 September 2012 by Ssasidh (talk | contribs) (→‎References)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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 designed 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 IDEs were introduced.

What is an IDE


An IDE(Integrated Development Environment) is a software application which provides comprehensive facilities during a project for its design, development, production. An IDE normally consists of:

  1. A source code editor
  2. A compiler and/or an interpreter (computing)|interpreter
  3. Build automation tools
  4. A debugger
  5. Version Control System
  6. 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

RadRails Logo
The Code Assist Feature

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


Netbeans Logo
Netbeans IDE for Ruby
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


TextMate Logo
Ruby Code for Binary Tree in 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 Logo
RubyMine Interface

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]
  1. RubyMine has a ruby editor with highlighting feature and coloring scheme. It contains smart auto code completion and code navigation features.
  2. RubyMine supports Ruby on rails with intelligent code maintenance.
  3. Testing features of RuyMine:
    1. Unit Testing
    2. Functional testing with Cucumber
    3. Support for Shoulda Framework
  4. It has a graphical debugger. Debugging features include:
    1. Convinient user interface
    2. Smart and flexible breakpoints
    3. Call stack.
    4. Remote debugging is also possible.
  5. VCS specific operations include subversion, git, cvs, perforce, github .
Pros
  1. RubyMine is a completely Ruby on Rails focused tool.
  2. It provides built in support for all common gems required for rails development.
  3. It also provides very good support for other frameworks.
  4. Autocomplete feature makes the tool intelligent.
  5. Debugger in RubyMine is easy to set up.
Cons
  1. RubyMine is not a lightweight tool.
  2. Lots of bundles are required to create a project. If developer doesn't have all of them, project won't work.
  3. Refactoring in RubyMine is more confusing than that in other tools like Ecllipse, NetBeans.

jRuby


JRuby Logo
JRuby Debugger
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:

  1. It is an open source software.
  2. It is platform independent.
  3. It can be called directly from Java programs.
  4. It supports swing class in Java.
  5. It is compatible with all the versions of Ruby.
  6. It has built in support for Ruby on Rails, Rspec, Rake and most of the Ruby gems.
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. This method iscalled "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)


Eclipse Logo
Eclipse Interface

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:

  1. Code folding — Folding can be enabled for classes and methods.
  2. Outline view — More detailed, with support for local variables.
  3. RI view — Use Ruby's ri utility from an RDT view.
  4. Task tags — Create tasks for configurable keywords (like TODO, FIXME) in Ruby comments.
  5. Editor improvements — Auto-complete of brackets, parentheses, and single/double quotes; better code-assist.
  6. 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 Unit Testing
RadRails Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes
NetBeans Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
TextMate Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
RubyMine Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes
jRuby Yes Yes Yes Yes Yes Yes Yes No Yes No Yes
RDT (Eclipse) Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes

Refactoring Comparison

[23] [24][25][26][27]

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


  1. http://en.wikipedia.org/wiki/Ruby_(programming_language)
  2. http://rubylearning.com/satishtalim/ruby_installation.html
  3. http://en.wikipedia.org/wiki/RadRails
  4. http://en.wikipedia.org/wiki/Ruby_on_Rails
  5. http://www.heroku.com/
  6. http://www.aptana.com/products/studio3/download
  7. http://en.wikipedia.org/wiki/RadRails
  8. http://netbeans.org/about/history.html
  9. http://netbeans.org/features/index.html
  10. http://wiki.netbeans.org/Ruby
  11. http://sourceforge.net/projects/rubyeclipse/
  12. http://manual.macromates.com/en/working_with_multiple_files#auto-updating_projects
  13. http://www.gnu.org/software/emacs/
  14. http://macromates.com/
  15. http://www.jetbrains.com/company/history.jsp
  16. http://www.jetbrains.com/ruby/features/index.html
  17. http://en.wikipedia.org/wiki/JRuby
  18. http://jruby.org/
  19. http://www.easyeclipse.org/site/plugins/rubyeclipse.html
  20. http://www.ibm.com/developerworks/opensource/library/os-rubyeclipse/
  21. http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_517_Fall_2011/ch1_1a_lj
  22. http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_517_Fall_2011/ch1_1a_cs
  23. http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_517_Fall_2011/ch1_1a_ms
  24. http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_517_Fall_2011/ch1_1a_ri

Additional References