CSC/ECE 517 Fall 2011/ch1 1a lj: Difference between revisions
No edit summary |
|||
(100 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 Integrated Development Environments (IDEs)] for [http://en.wikipedia.org/wiki/Ruby_(programming_language) Ruby language] | 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, 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). [ | ==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]. [ | 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= | ||
Line 21: | Line 67: | ||
[[File:eclipse1.png]] [http://www.eclipse.org/downloads/ Download Here!] | [[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. [ | 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]] [http://www.aptana.com/products/radrails Download Here!] | [[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. [ | 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>=== | ||
Line 32: | Line 78: | ||
[[File:rubymine.jpg]] [http://www.jetbrains.com/ruby/download/index.html Download Here!] | [[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. [ | 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]] [http://netbeans.org/community/releases/69/ Download Here!] | [[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. [ | 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= | =Comparison of Different IDEs for Ruby= | ||
===Refactoring=== | ===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; | |||
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=== | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
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> | |||
===Version Control=== | ===Version Control=== | ||
Line 317: | Line 363: | ||
|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" | |||
|- | |||
| | |||
! 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=== | ===Shortcuts=== | ||
Here we choose some representative shortcuts instead of listing all. | |||
====Eclipse==== | ====Eclipse==== | ||
Line 330: | Line 412: | ||
| Content Assist | | Content Assist | ||
|- | |- | ||
| Shift+Ctrl+K | | Shift+Ctrl+K | ||
| Find Previous | | 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/ http://eclipse-tools.sourceforge.net/]</ref> | |||
====Rubymine==== | ====Rubymine==== | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Shortcut | ! Shortcut | ||
! Description | ! 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. | ||
| | |||
|} | |} | ||
Line 394: | Line 463: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Shortcut | ! Shortcut | ||
! Description | ! 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> | |||
====Radrails==== | ====Radrails==== | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Shortcut | ! Shortcut | ||
! Description | ! 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 = | ||
---- | ---- | ||
<references/> | |||
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
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
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
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
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/>