CSC/ECE 517 Fall 2011/ch1 1a lj: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
 
(153 intermediate revisions by 2 users not shown)
Line 2: Line 2:
----
----
=Introduction=
=Introduction=
In this Wiki, several kinds of [http://en.wikipedia.org/wiki/Integrated_development_environment IDEs] for [http://en.wikipedia.org/wiki/Ruby_(programming_language) Ruby language] is shown and their features are compared carefully.
In this Wiki, several kinds of [http://en.wikipedia.org/wiki/Integrated_development_environment Integrated Development Environments (IDEs)] for [http://en.wikipedia.org/wiki/Ruby_(programming_language) Ruby language] are shown and their features are compared.


=What is Ruby=     
=What is Ruby=     
[[File:Ruby.jpg]]
[[File:Ruby.jpg]]


Ruby is a dynamic, reflective, general-purpose object-oriented programming language. Ruby supports multiple programming paradigms, including functional, object oriented, imperative and reflective. It also has a dynamic type system and automatic memory management.
==Ruby==
Ruby is a dynamic, open-source and general-purpose object-oriented programming language with a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write. Ruby supports multiple programming paradigms, including functional, object oriented, imperative and reflective. It also has a dynamic type system and automatic memory management. In Ruby, everything is an object. Every bit of information and code can be given their own properties and actions. Ruby is seen as a flexible language, since it allows its users to freely alter its parts. Ruby’s block are also seen as a source of great flexibility. A programmer can attach a closure to any method, describing how that method should act. Unlike many object-oriented languages, Ruby features single inheritance only, on purpose. But Ruby knows the concept of modules (called Categories in Objective-C). <ref> [http://www.ruby-lang.org/en/about/ http://www.ruby-lang.org/en/about/] </ref>
 
==Some Key Features of Ruby== 
<b>Interpreted</b><ref>http://www.ntecs.de/old-hp/s-direktnet/ruby_en.html</ref>
 
Advantage: Immediately executable (no waiting period while compiling)
 
Disadvantage: Execution speed much slower than with compiler (e.g. Pascal, C++)
 
 
<b>Portable</b>
 
Ruby is highly portable, so that one and the same Ruby program runs without changes under UNIX, Windows, DOS, Mac, BeOS and others. Of course that's only true unless using platform-specific modules, like for example some GUI's for UNIX or WinGKR (Win32 GUI Kit for Ruby).
 
Advantage:less expenditure (only one program had to be managed); wider distribution of the program (because it runs on serveral platforms)
 
 
<b>Untyped</b>
 
Variables in Ruby have no type, such as in Smalltalk, BASIC or Python. Variables behave as placeholders, but data is typed. In C++ or Pascal, variables are typed (e.g. int / Integer), but the data in the memory is not, that is you cannot recognize if it's a String or an Integer. In C++ or Pascal the types are checked at compile-time, whereas Ruby checks the type at runtime, so if the object understands the message (method-call) is first known after a method-call. You do not have to declare variables, because they are automatically created when you use them.
 
 
<b>Automatic memory-management (garbage collection)</b>
 
You do not have to release allocated memory in Ruby (as you have to do in Pascal/C++ with dispose/free). No longer used memory, i.e. memory-frames where no variable points to, are automatically freed by the garbage collector.
 
 
<b>Advanced OO-concepts and features</b>
 
-Singleton methods
 
-Mix-in instead of multiple-inheritance
 
-Operator overloading
 
-Method-overloading (such as C++)
 
-Exception handling
 
-Iterators and closures
 
-Meta-class
 
-Build-in pattern-matching (like Perl)


=What is an IDE=
=What is an IDE=
An '''integrated development environment (IDE)''' (also known as '''integrated design environment''', '''integrated debugging environment''' or '''interactive development environment''') is an [http://en.wikipedia.org/wiki/Application_software application software] that provides comprehensive facilities to [http://en.wikipedia.org/wiki/Computer_programmer computer programmers] for [http://en.wikipedia.org/wiki/Software_development software development]. [1] An IDE normally consists of:  
An '''integrated development environment (IDE)''' (also known as '''integrated design environment''', '''integrated debugging environment''' or '''interactive development environment''') is an [http://en.wikipedia.org/wiki/Application_software application software] that provides comprehensive facilities to [http://en.wikipedia.org/wiki/Computer_programmer computer programmers] for [http://en.wikipedia.org/wiki/Software_development software development]. <ref>[http://en.wikipedia.org/wiki/Integrated_development_environment http://en.wikipedia.org/wiki/Integrated_development_environment]</ref> An IDE normally consists of:  


* a source code editor
* a source code editor
Line 16: Line 60:
* build automation tools
* build automation tools
* a debugger
* a debugger
Sometimes a version control system and various tools are integrated to simplify the construction of a GUI. Many modern IDEs also have a class browser, an object inspector, and a class hierarchy diagram, for use with object-oriented software development.


=Popular IDEs for Ruby=
=Popular IDEs for Ruby=
===<b>Eclipse</b>===
===<b>Eclipse</b>===
[[File:eclipse1.png]]
[[File:eclipse1.png]] [http://www.eclipse.org/downloads/ Download Here!]


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. [2]
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. <ref>[http://en.wikipedia.org/wiki/Eclipse_(software) http://en.wikipedia.org/wiki/Eclipse_(software)]</ref>


===<b>Aptana RadRails</b>===
===<b>Aptana RadRails</b>===
[[File:Aptana.jpg]]
[[File:Aptana.jpg]]  [http://www.aptana.com/products/radrails Download Here!]


Aptana RadRails is a Rapid Application Development IDE for the Ruby on Rails framework. The goal of RadRails is to provide Ruby on Rails developers with everything they need to develop, manage, test and deploy their applications. Features include source control, code assist, refactoring, debugging, WEBrick servers, generator wizards, syntax highlighting, data tools, and much more. [3] RadRails is now included as part of Aptana Studio 3. [4]
Aptana RadRails is a Rapid Application Development IDE for the Ruby on Rails framework. The goal of RadRails is to provide Ruby on Rails developers with everything they need to develop, manage, test and deploy their applications. Features include source control, code assist, refactoring, debugging, WEBrick servers, generator wizards, syntax highlighting, data tools, and much more. <ref>[http://en.wikipedia.org/wiki/RadRails http://en.wikipedia.org/wiki/RadRails]</ref> RadRails is now included as part of Aptana Studio 3. <ref>[http://www.aptana.com/products/radrails http://www.aptana.com/products/radrails] </ref>


===<b>RubyMine</b>===
===<b>RubyMine</b>===


[[File:rubymine.jpg]]
[[File:rubymine.jpg]]  [http://www.jetbrains.com/ruby/download/index.html Download Here!]


JetBrains RubyMine IDE provides a comprehensive Ruby code editor aware of dynamic language specifics and delivers smart coding assistance, intelligent code refactoring and code analysis capabilities. Easy project configuration, automatic Ruby Gems management, Rake support. [5]
JetBrains RubyMine IDE provides a comprehensive Ruby code editor aware of dynamic language specifics and delivers smart coding assistance, intelligent code refactoring and code analysis capabilities. Easy project configuration, automatic Ruby Gems management, Rake support. <ref>[http://www.jetbrains.com/ruby/features/index.html http://www.jetbrains.com/ruby/features/index.html] </ref>


===<b>NetBeans IDE</b>===
===<b>NetBeans IDE</b>===
[[File:netbeans6.5.png]]
[[File:netbeans6.5.png]] [http://netbeans.org/community/releases/69/ Download Here!]
 
NetBeans refers to both a platform framework for Java desktop applications, and an integrated development environment (IDE) for developing with Java, JavaScript, PHP, Python, Groovy, C, C++ ,Ruby and others. NetBeans IDE is 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. Noting that in NetBeans IDE 7.0, support for Ruby and Ruby on Rails is no longer available in the standard NetBeans IDE build. <ref>[http://netbeans.org/features/index.html http://netbeans.org/features/index.html]</ref> In the following comparison we will use NetBeans IDE 6.9.
 
=Comparison of Different IDEs for Ruby= 
 
===Features===
{| class="wikitable" border="1"
|-
|
! Eclipse
! RubyMine
! NetBeans
! Aptana RadRails
|-
!
| Open Source
| Commercial
| Open Source
| Open Source
|-
! Language
| Multilingual
| Ruby
| Multilingual
| Ruby
|-
! Platform
| Cross-Platform
| Cross-Platform
| Cross-Platform
| Cross-Platform
|-
! Support Multiple Processes
| Yes
| Yes
| Yes
| Yes
|-
! Plug-In
| Plug-In Supported
| API Supported
| Plug-In Supported
| Plug-In Supported
|-
! Some Uniqueness to Point out
| Complicated for new learner;
Support client plug-in
| Graphical Ruby Debugger;
Model Dependency Diagram for Ruby on Rails projects;
 
Code refactorings for Ruby with knowledge about Ruby on Rails specifics;
 
RSpec, Cucumber, Shoulda & Test::Unit test frameworks support with test-runner GUI
| From Version7, NetBeans IDE no longer support Ruby
| Fast, integrated debugger;
Embedded database navigator and query console;
 
Snippets and wizards;
 
Deep support for Ruby;


NetBeans refers to both a platform framework for Java desktop applications, and an integrated development environment (IDE) for developing with Java, JavaScript, PHP, Python, Groovy, C, C++ ,Ruby and others. NetBeans IDE is 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. Noting that in NetBeans IDE 7.0, support for Ruby and Ruby on Rails is no longer available in the standard NetBeans IDE build. [6] In the following comparison we will use NetBeans IDE 6.9.
Ruby code generation: constructors, overrides, templates, accessors
|-


=Comparison of Different IDEs for Ruby=
|}
<ref>http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Freference%2Fref-menu-refactor.htm</ref>
<ref>http://www.ruzee.com/blog/2007/02/rdt-and-radrails-keyboard-shortcuts</ref>


===Refactoring Tools===
===Refactoring===  
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 106: Line 215:
! Convert Anonymous Class to Nested
! Convert Anonymous Class to Nested
| Yes
| Yes
| Yes?
| No
| Yes
| Yes
| Yes
| Yes
Line 112: Line 221:
! Move Type to New File
! Move Type to New File
| Yes
| Yes
| Yes?
| No
| Yes
| Yes
| Yes
| Yes
Line 160: Line 269:
! Introduce Indirection
! Introduce Indirection
| Yes
| Yes
| Yes?
| No
| Yes?
| No
| Yes
| Yes
|-
|-
! Introduce Factory
! Introduce Factory
| Yes
| Yes
| Yes?
| No
| Yes?
| No
| Yes
| Yes
|-
|-
Line 184: Line 293:
! Generalize Declared Type
! Generalize Declared Type
| Yes
| Yes
| Yes?
| No
| Yes?
| No
| Yes
| Yes
|-
|-
Line 191: Line 300:
| Yes
| Yes
| Yes
| Yes
| Yes?
| No
| Yes
| Yes
|-
|-
Line 200: Line 309:
| Yes
| Yes
|}
|}
<ref>http://tnlessone.wordpress.com/2007/02/28/ruby-rails-ide-comparison-idea-netbeans-radrails/</ref>
<ref>http://netbeans.org/project_downloads/usersguide/shortcuts.pdf</ref>


===Multiple Processes===
===Version Control===
 
===Features===
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 212: Line 321:
! Aptana RadRails
! Aptana RadRails
|-
|-
!
! Subversion
| Open Source
| Commercial
| Open Source
| Open Source
|-
!
| Multilingual
| Ruby
| Multilingual
| Ruby
|-
! Platform
| Cross-Platform
| Cross-Platform
| Cross-Platform
| Cross-Platform
|-
! Copy
| Support Multiple Processes
| Support Multiple Processes
| Support Multiple Processes
| Support Multiple Processes
|-
! Plug-In
| Plug-In Supported
| API Supported
| Plug-In Supported
| Plug-In Supported
|-
! Others
| Yes
| Yes
| Graphical Ruby Debugger
Model Dependency Diagram for Ruby on Rails projects
Code refactorings for Ruby with knowledge about Ruby on Rails specifics
RSpec, Cucumber, Shoulda & Test::Unit test frameworks support with test-runner GUI
| Yes
| Yes
| Fast, integrated debugger
Embedded database navigator and query console
Snippets and wizards
deep support for Ruby
Ruby code generation: constructors, overrides, templates, accessors
|-
! Extract Local Variable
| Yes
| Yes
| Yes
| Yes
|-
! Git
| Yes
| Yes
| Yes
| Yes
| No
| No
|-
|-
! Extract Constant
! Perforce
| Yes
| Yes
| Yes
| Yes
| Yes
| Yes
| No
| No
|-
|-
! Inline
! CVS
| Yes
| Yes
| Yes
| Yes
Line 273: Line 345:
| Yes
| Yes
|-
|-
! Convert Anonymous Class to Nested
!Mercurial
| Yes
| Yes?
| Yes
| Yes
| No
| Yes
| Yes
| No
|-
|-
! Move Type to New File
!Clearcase
| Yes
| Yes?
| Yes
| Yes
| No
| Yes
| Yes
| No
|-
|-
! Extract Superclass
!SVN
| Yes
|Yes
| Yes
|Yes
| Yes
|Yes
| Yes
|Yes
|}
<ref>[http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2009/wiki1a_6_aa http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2009/wiki1a_6_aa]</ref>
 
===Editing===
{| class="wikitable" border="1"
|-
|-
! Extract Interface
|
| Yes
! Eclipse
| Yes
! RubyMine
| Yes
! NetBeans
| Yes
! Aptana RadRails
|-
|-
! Use Supertype Where Possible
! Code Completion
| Yes
| Available
| Yes
| Available
| No
| Available
| Yes
| Available
|-
|-
! Push Down
! Type Hierarchy View
| Yes
| Available
| Yes
| Available
| Yes
| Unavailable
| Yes
| Available
|-
|-
! Pull Up
! Smart Indent
| Yes
| Available
| Yes
| Available
| Yes
| Available
| Yes
| Available
|-
|-
! Extract Module
! Syntax Highlighting
| Yes
| Available
| Yes
| Available
| Yes
| Available
| Yes
| Available
|}
 
===Shortcuts===
 
Here we choose some representative shortcuts instead of listing all.
 
====Eclipse====
{| class="wikitable" border="1"
|-
|-
! Introduce Parameter Object
! Shortcut
| Yes
! Description
| Yes
| Yes
| Yes
|-
|-
! Introduce Indirection
| Alt+/
| Yes
| Content Assist
| Yes?
| Yes?
| Yes
|-
|-
! Introduce Factory
| Shift+Ctrl+K
| Yes
| Find Previous
| Yes?
| Yes?
| Yes
|-
|-
! Introduce Parameter
| Alt+R
| Yes
| Find and Replace
| Yes
| Yes
| Yes
|-
|-
! Encapsulate Field
| Ctrl+1
| Yes
| Quick Fix
| Yes
| Yes
| Yes
|-
|-
! Generalize Declared Type
| Ctrl+Alt+H
| Yes
| Open Call Hierarchy
| Yes?
| Yes?
| Yes
|-
|-
! Infer Generic Type Arguments
| Shift+Ctrl+R
| Yes
| Open Resource
| Yes
| Yes?
| Yes
|-
|-
! Safe Delete
|Shift+Ctrl+T
| No
|Open Type
| Yes
| Yes
| Yes
|}
|}
<ref>[http://eclipse-tools.sourceforge.net/  http://eclipse-tools.sourceforge.net/]</ref>


===Version Control===
====Rubymine====
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
|
! Shortcut
! Eclipse
! Description
! RubyMine
|-
! NetBeans
| Alt+F1
! Aptana RadRails
| Switch between views (Project, Structure, etc.).
|-
| Ctrl+Tab
| Switch between the tool windows and files opened in the editor.
|-
| Ctrl+J
| Insert a live template.
|-
| Ctrl+Alt+J
| Surround with a live template.
|-
|-
!
| Alt+Enter
| Open Source
| Use the suggested quick fix.
| Commercial
| Open Source
| Open Source
|-
|-
!
| Ctrl+D
| Multilingual
| Duplicate the current line or selection.
| Ruby
| Multilingual
| Ruby
|-
|-
! Safe Delete
|Ctrl+Space
| No
|Invoke code completion.
| Yes
| Yes
| Yes
|}
|}


= Summary =
====NetBeans====
{| class="wikitable" border="1"
|-
! Shortcut
! Description
|-
| Ctrl-F
| Search for word at insertion point
|-
| Alt-G
| Go to declaration
|-
| Ctrl-Shift-0
| Show Search Results window
|-
| Shift-F10
| Open contextual menu
|-
| Alt-Enter
| Show suggestion/tip/hint
|-
| Alt-U, then U
| Convert selection to uppercase
|-
|Ctrl-Shift-1/2/3
|Select in Projects/Files/Favorites
|}
<ref>[http://netbeans.org/project_downloads/usersguide/ http://netbeans.org/project_downloads/usersguide/]</ref>


== References ==
====Radrails====
----
{| class="wikitable" border="1"
[1] http://en.wikipedia.org/wiki/Integrated_development_environment
|-
! Shortcut
! Description
|-
| Ctrl-Alt-T
| Jump to the test case of a model or controller and vice versa.
|-
| Ctrl-Shift-V
| Jump to the view of a controller method and vice versa.
|-
| Ctrl-Alt-X
| Factor out a partial from a view. Simply select the code block you want to factor out into a separate partial an press the key combination.
|-
| Ctrl-Shift-F
| Auto-format the selected code (Ruby only). Not that mature, yet, and seems to have problems with regular expression - currently not recommended to use.
|-
| Ctrl-Shift-C
| Toggle comment
|}


[2] http://en.wikipedia.org/wiki/Eclipse_(software)
= Conclusion =


[3] http://en.wikipedia.org/wiki/RadRails
This article compares four IDEs for different features. It is hard to say which is the best for Ruby. Eclipse supports plug-ins and RadRails can be plugged into Eclipse. Netbeans provide support for other languages like Java, C++, groovy along with Ruby. RubyMine has an intelligent code editor and it is designed only for Ruby.


[4] http://www.aptana.com/products/radrails
= References =
 
----
[5] http://www.jetbrains.com/ruby/features/index.html
<references/>
 
[6] http://netbeans.org/features/index.html

Latest revision as of 00:08, 21 October 2011

CSC/ECE 517 Fall 2010/ch1 1a lj


Introduction

In this Wiki, several kinds of Integrated Development Environments (IDEs) for Ruby language are shown and their features are compared.

What is Ruby

Ruby

Ruby is a dynamic, open-source and general-purpose object-oriented programming language with a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write. Ruby supports multiple programming paradigms, including functional, object oriented, imperative and reflective. It also has a dynamic type system and automatic memory management. In Ruby, everything is an object. Every bit of information and code can be given their own properties and actions. Ruby is seen as a flexible language, since it allows its users to freely alter its parts. Ruby’s block are also seen as a source of great flexibility. A programmer can attach a closure to any method, describing how that method should act. Unlike many object-oriented languages, Ruby features single inheritance only, on purpose. But Ruby knows the concept of modules (called Categories in Objective-C). <ref> http://www.ruby-lang.org/en/about/ </ref>

Some Key Features of Ruby

Interpreted<ref>http://www.ntecs.de/old-hp/s-direktnet/ruby_en.html</ref>

Advantage: Immediately executable (no waiting period while compiling)

Disadvantage: Execution speed much slower than with compiler (e.g. Pascal, C++)


Portable

Ruby is highly portable, so that one and the same Ruby program runs without changes under UNIX, Windows, DOS, Mac, BeOS and others. Of course that's only true unless using platform-specific modules, like for example some GUI's for UNIX or WinGKR (Win32 GUI Kit for Ruby).

Advantage:less expenditure (only one program had to be managed); wider distribution of the program (because it runs on serveral platforms)


Untyped

Variables in Ruby have no type, such as in Smalltalk, BASIC or Python. Variables behave as placeholders, but data is typed. In C++ or Pascal, variables are typed (e.g. int / Integer), but the data in the memory is not, that is you cannot recognize if it's a String or an Integer. In C++ or Pascal the types are checked at compile-time, whereas Ruby checks the type at runtime, so if the object understands the message (method-call) is first known after a method-call. You do not have to declare variables, because they are automatically created when you use them.


Automatic memory-management (garbage collection)

You do not have to release allocated memory in Ruby (as you have to do in Pascal/C++ with dispose/free). No longer used memory, i.e. memory-frames where no variable points to, are automatically freed by the garbage collector.


Advanced OO-concepts and features

-Singleton methods

-Mix-in instead of multiple-inheritance

-Operator overloading

-Method-overloading (such as C++)

-Exception handling

-Iterators and closures

-Meta-class

-Build-in pattern-matching (like Perl)

What is an IDE

An integrated development environment (IDE) (also known as integrated design environment, integrated debugging environment or interactive development environment) is an application software that provides comprehensive facilities to computer programmers for software development. <ref>http://en.wikipedia.org/wiki/Integrated_development_environment</ref> An IDE normally consists of:

  • a source code editor
  • a compiler and/or an interpreter (computing)|interpreter
  • build automation tools
  • a debugger

Sometimes a version control system and various tools are integrated to simplify the construction of a GUI. Many modern IDEs also have a class browser, an object inspector, and a class hierarchy diagram, for use with object-oriented software development.

Popular IDEs for Ruby

Eclipse

Download Here!

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. <ref>http://en.wikipedia.org/wiki/Eclipse_(software)</ref>

Aptana RadRails

Download Here!

Aptana RadRails is a Rapid Application Development IDE for the Ruby on Rails framework. The goal of RadRails is to provide Ruby on Rails developers with everything they need to develop, manage, test and deploy their applications. Features include source control, code assist, refactoring, debugging, WEBrick servers, generator wizards, syntax highlighting, data tools, and much more. <ref>http://en.wikipedia.org/wiki/RadRails</ref> RadRails is now included as part of Aptana Studio 3. <ref>http://www.aptana.com/products/radrails </ref>

RubyMine

Download Here!

JetBrains RubyMine IDE provides a comprehensive Ruby code editor aware of dynamic language specifics and delivers smart coding assistance, intelligent code refactoring and code analysis capabilities. Easy project configuration, automatic Ruby Gems management, Rake support. <ref>http://www.jetbrains.com/ruby/features/index.html </ref>

NetBeans IDE

Download Here!

NetBeans refers to both a platform framework for Java desktop applications, and an integrated development environment (IDE) for developing with Java, JavaScript, PHP, Python, Groovy, C, C++ ,Ruby and others. NetBeans IDE is 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. Noting that in NetBeans IDE 7.0, support for Ruby and Ruby on Rails is no longer available in the standard NetBeans IDE build. <ref>http://netbeans.org/features/index.html</ref> In the following comparison we will use NetBeans IDE 6.9.

Comparison of Different IDEs for Ruby

Features

Eclipse RubyMine NetBeans Aptana RadRails
Open Source Commercial Open Source Open Source
Language Multilingual Ruby Multilingual Ruby
Platform Cross-Platform Cross-Platform Cross-Platform Cross-Platform
Support Multiple Processes Yes Yes Yes Yes
Plug-In Plug-In Supported API Supported Plug-In Supported Plug-In Supported
Some Uniqueness to Point out Complicated for new learner;

Support client plug-in

Graphical Ruby Debugger;

Model Dependency Diagram for Ruby on Rails projects;

Code refactorings for Ruby with knowledge about Ruby on Rails specifics;

RSpec, Cucumber, Shoulda & Test::Unit test frameworks support with test-runner GUI

From Version7, NetBeans IDE no longer support Ruby Fast, integrated debugger;

Embedded database navigator and query console;

Snippets and wizards;

Deep support for Ruby;

Ruby code generation: constructors, overrides, templates, accessors

<ref>http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Freference%2Fref-menu-refactor.htm</ref> <ref>http://www.ruzee.com/blog/2007/02/rdt-and-radrails-keyboard-shortcuts</ref>

Refactoring

Eclipse RubyMine NetBeans Aptana RadRails
Refactor Support Yes Yes Yes Yes
Rename Yes Yes Yes Yes
Move Yes Yes Yes Yes
Copy No Yes Yes Yes
Change Method Signature Yes Yes Yes Yes
Extract Method Yes Yes Yes Yes
Extract Local Variable Yes Yes Yes Yes
Extract Constant Yes Yes Yes Yes
Inline Yes Yes Yes Yes
Convert Anonymous Class to Nested Yes No Yes Yes
Move Type to New File Yes No Yes Yes
Extract Superclass Yes Yes Yes Yes
Extract Interface Yes Yes Yes Yes
Use Supertype Where Possible Yes Yes No Yes
Push Down Yes Yes Yes Yes
Pull Up Yes Yes Yes Yes
Extract Module Yes Yes Yes Yes
Introduce Parameter Object Yes Yes Yes Yes
Introduce Indirection Yes No No Yes
Introduce Factory Yes No No Yes
Introduce Parameter Yes Yes Yes Yes
Encapsulate Field Yes Yes Yes Yes
Generalize Declared Type Yes No No Yes
Infer Generic Type Arguments Yes Yes No Yes
Safe Delete No Yes Yes Yes

<ref>http://tnlessone.wordpress.com/2007/02/28/ruby-rails-ide-comparison-idea-netbeans-radrails/</ref> <ref>http://netbeans.org/project_downloads/usersguide/shortcuts.pdf</ref>

Version Control

Eclipse RubyMine NetBeans Aptana RadRails
Subversion Yes Yes Yes Yes
Git Yes Yes No No
Perforce Yes Yes No No
CVS Yes Yes Yes Yes
Mercurial Yes No Yes No
Clearcase Yes No Yes No
SVN Yes Yes Yes Yes

<ref>http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2009/wiki1a_6_aa</ref>

Editing

Eclipse RubyMine NetBeans Aptana RadRails
Code Completion Available Available Available Available
Type Hierarchy View Available Available Unavailable Available
Smart Indent Available Available Available Available
Syntax Highlighting Available Available Available Available

Shortcuts

Here we choose some representative shortcuts instead of listing all.

Eclipse

Shortcut Description
Alt+/ Content Assist
Shift+Ctrl+K Find Previous
Alt+R Find and Replace
Ctrl+1 Quick Fix
Ctrl+Alt+H Open Call Hierarchy
Shift+Ctrl+R Open Resource
Shift+Ctrl+T Open Type

<ref>http://eclipse-tools.sourceforge.net/</ref>

Rubymine

Shortcut Description
Alt+F1 Switch between views (Project, Structure, etc.).
Ctrl+Tab Switch between the tool windows and files opened in the editor.
Ctrl+J Insert a live template.
Ctrl+Alt+J Surround with a live template.
Alt+Enter Use the suggested quick fix.
Ctrl+D Duplicate the current line or selection.
Ctrl+Space Invoke code completion.

NetBeans

Shortcut Description
Ctrl-F Search for word at insertion point
Alt-G Go to declaration
Ctrl-Shift-0 Show Search Results window
Shift-F10 Open contextual menu
Alt-Enter Show suggestion/tip/hint
Alt-U, then U Convert selection to uppercase
Ctrl-Shift-1/2/3 Select in Projects/Files/Favorites

<ref>http://netbeans.org/project_downloads/usersguide/</ref>

Radrails

Shortcut Description
Ctrl-Alt-T Jump to the test case of a model or controller and vice versa.
Ctrl-Shift-V Jump to the view of a controller method and vice versa.
Ctrl-Alt-X Factor out a partial from a view. Simply select the code block you want to factor out into a separate partial an press the key combination.
Ctrl-Shift-F Auto-format the selected code (Ruby only). Not that mature, yet, and seems to have problems with regular expression - currently not recommended to use.
Ctrl-Shift-C Toggle comment

Conclusion

This article compares four IDEs for different features. It is hard to say which is the best for Ruby. Eclipse supports plug-ins and RadRails can be plugged into Eclipse. Netbeans provide support for other languages like Java, C++, groovy along with Ruby. RubyMine has an intelligent code editor and it is designed only for Ruby.

References


<references/>