digplanet beta 1: Athena
Share digplanet:

Agriculture

Applied sciences

Arts

Belief

Business

Chronology

Culture

Education

Environment

Geography

Health

History

Humanities

Language

Law

Life

Mathematics

Nature

People

Politics

Science

Society

Technology

Ruby on Rails
Ruby on Rails.svg
Original author(s) David Heinemeier Hansson
Developer(s) Rails Core Team
Stable release 3.2.13 / March 18, 2013 (2013-03-18)[1]
Preview release 4.0 RC 1 / May 1, 2013 (2013-05-01)[2]
Development status Active
Written in Ruby
Operating system Cross-platform
Type Web application framework
License MIT License
Website rubyonrails.org

Ruby on Rails, often simply Rails, is an open source web application framework which runs on the Ruby programming language. It is a full-stack framework: it allows creating pages and applications that gather information from the web server, talk to or query the database, and render templates out of the box. As a result, Rails features a routing system that is independent of the web server.

Ruby on Rails emphasizes the use of well-known software engineering patterns and principles, such as active record pattern, convention over configuration, don't repeat yourself, and model-view-controller.

Contents

History [edit]

David Heinemeier Hansson extracted Ruby on Rails from his work on Basecamp, a project management tool by 37signals (now a web application company).[3] Hansson first released Rails as open source in July 2004, but did not share commit rights to the project until February 2005.[4] In August 2006, the framework reached a milestone when Apple announced that it would ship Ruby on Rails with Mac OS X v10.5 "Leopard",[5] which was released in October 2007.

Rails version 2.3 was released on March 15, 2009 with major new developments in templates, engines, Rack and nested model forms. Templates enable the developer to generate a skeleton application with custom gems and configurations. Engines give developers the ability to reuse application pieces complete with routes, view paths and models. The Rack web server interface and Metal allow one to write optimized pieces of code that route around ActionController.[6]

On December 23, 2008, Merb, another web application framework, was launched, and Ruby on Rails announced it would work with the Merb project to bring "the best ideas of Merb" into Rails 3, ending the "unnecessary duplication" across both communities.[7] Merb was merged with Rails as part of the Rails 3.0 release.[8][9]

Rails 3.1 was released on August 31, 2011, featuring Reversible Database Migrations, Asset Pipeline, Streaming, jQuery as default JavaScript library and newly introduced CoffeeScript and Sass into the stack.[10]

Rails 3.2 was released on January 20, 2012 with a faster development mode and routing engine (also known as Journey engine), Automatic Query Explain and Tagged Logging.[11] Rails 3.2.x is the last version that supports Ruby 1.8.7.[12]

Version history
Version Date
1.0[13] 02005-12-13December 13, 2005
1.2[14] 02007-01-19January 19, 2007
2.0[15] 02007-12-07December 7, 2007
2.1[16] 02008-06-01June 1, 2008
2.2[17] 02008-11-21November 21, 2008
2.3[18] 02009-03-16March 16, 2009
3.0[19] 02010-08-29August 29, 2010
3.1[20] 02011-08-31August 31, 2011
3.2[21] 02012-01-20January 20, 2012
4.0[22]

in development


Technical overview [edit]

Like many web frameworks, Ruby on Rails uses the Model-View-Controller (MVC) architecture pattern to organize application programming.

In a default configuration, a model in the Ruby on Rails framework maps to a table in a database, and a Ruby file. For example, a model class User will usually be defined in the file user.rb in the app/models directory, and is linked to the table users in the database. Developers can choose any model name, file name or database table name. But this is not common practice and usually discouraged according to the "convention over configuration" philosophy.

A controller is a component of Rails that responds to external requests from the web server to the application by determining which view file to render. The controller may also have to query one or more models directly for information and pass these on to the view. A controller may provide one or more actions. In Ruby on Rails, an action is typically a basic unit that describes how to respond to a specific external web-browser request. Also note that, only if a controller/action is mapped to the Rails router, will the controller/action be accessible for external web requests. Rails encourages developers to use RESTful routes, which include actions such as: create, new, edit, update, destroy, show, and index. These can be easily routed in the routes file.[clarification needed]

A view in the default configuration of Rails is an erb file, which is converted to HTML at run-time. Many other templating systems can be used for views.

Ruby on Rails includes tools that make common development tasks easier "out of the box", such as scaffolding that can automatically construct some of the models and views needed for a basic website.[23] Also included are WEBrick, a simple Ruby web server that is distributed with Ruby, and Rake, a build system, distributed as a gem. Together with Ruby on Rails, these tools provide a basic development environment.

Ruby on Rails is most commonly not connected to the Internet directly, but through some front-end web server. Mongrel was generally preferred over WEBrick in the early days,[citation needed] but it can also run on Lighttpd, Apache, Cherokee, Hiawatha, nginx (either as a module — Phusion Passenger for example — or via CGI, FastCGI or mod_ruby), and many others. From 2008 onwards, the Passenger web server replaced Mongrel as the most-used web server for Ruby on Rails.[24]

Ruby on Rails is also noteworthy for its extensive use of the JavaScript libraries Prototype and Script.aculo.us for Ajax.[25] Ruby on Rails initially utilized lightweight SOAP for web services; this was later replaced by RESTful web services. Ruby on Rails 3.0 uses a technique called Unobtrusive JavaScript to separate the functionality (or logic) from the structure of the web page. jQuery is fully supported as a replacement for Prototype and is the default JavaScript library in Rails 3.1, reflecting an industry-wide move towards jQuery. Additionally, CoffeeScript was introduced in Rails 3.1 as the default Javascript language.

Since version 2.0, Ruby on Rails offers both HTML and XML as standard output formats. The latter is the facility for RESTful web services.

Rails 3.1 introduced Sass as standard CSS templating.

By default, the server uses Embedded Ruby in the HTML views, with files having an html.erb extension. Rails supports swapping-in alternative templating languages, such as HAML and Mustache.

Ruby on Rails 3.0 has been designed to work with Ruby 1.8.7, Ruby 1.9.2, and JRuby 1.5.2+; earlier versions are not supported.[26]

Rails 3.2 series is the last series to support Ruby 1.8.7.

Framework structure [edit]

Ruby on Rails is separated into various packages, namely ActiveRecord (an object-relational mapping system for database access), ActiveResource (provides web services), ActionPack, ActiveSupport and ActionMailer. Prior to version 2.0, Ruby on Rails also included the Action Web Service package that is now replaced by Active Resource. Apart from standard packages, developers can make plugins to extend existing packages. Rails 3.2 deprecates the old plugins Rails 2-3-stable style in which plugins are to be placed under vendor/plugins, in favor of packaged gems.[27]

Deployment [edit]

Ruby on Rails is often installed using RubyGems, a package manager[28] which is included with current versions of Ruby. Many free Unix-like systems also support installation of Ruby on Rails and its dependencies through their native package management system.

Ruby on Rails is typically deployed with a database server such as MySQL or PostgreSQL, and a web server such as Apache running the Phusion Passenger module.

There are many Ruby on Rails web hosting services such as Heroku, Engine Yard and TextDrive.

Philosophy and design [edit]

Ruby on Rails is intended to emphasize Convention over Configuration (CoC), and the rapid development principle of Don't Repeat Yourself (DRY).

"Convention over Configuration" means a developer only needs to specify unconventional aspects of the application. For example, if there is a class Sale in the model, the corresponding table in the database is called sales by default. It is only if one deviates from this convention, such as calling the table "products sold", that the developer needs to write code regarding these names. Generally, Ruby on Rails conventions lead to less code and less repetition.[citation needed]

"Don't repeat yourself" means that information is located in a single, unambiguous place. For example, using the ActiveRecord module of Rails, the developer does not need to specify database column names in class definitions. Instead, Ruby on Rails can retrieve this information from the database based on the class name.

"Fat models, skinny controllers" means that most of the application logic should be placed within the model while leaving the controller as light as possible.

Trademarks [edit]

In March 2007, David Heinemeier Hansson filed three Ruby on Rails related trademark applications to the USPTO. These applications regard the phrase "RUBY ON RAILS",[29] the word "RAILS",[30] and the official Rails logo.[31] As a consequence, in the summer of 2007, Hansson denied permission to Apress to use the Ruby on Rails logo on the cover of a new Ruby on Rails book written by some authoritative community members. The episode gave rise to a polite protest in the Ruby on Rails community.[32][33] In response to this criticism, Hansson replied:

I only grant promotional use [of the Rails logo] for products I'm directly involved with. Such as books that I've been part of the development process for or conferences where I have a say in the execution. I would most definitely seek to enforce all the trademarks of Rails.[32]

Reception [edit]

Rails running on Matz's Ruby Interpreter (the de facto reference interpreter for Ruby) had been criticized for issues with scalability.[34] These critics often mentioned various Twitter outages in 2007 and 2008, which spurred Twitter's partial transition to Scala (which runs on the Java Virtual Machine) for their queueing system and other middleware.[35][36] The user interface aspects of the site continue to run Ruby on Rails.[37]

In 2011, Gartner Research noted that despite criticisms and comparisons to Java, many high-profile consumer web firms are using Ruby on Rails to build agile, scalable web applications. Some of the largest sites running Ruby on Rails include Github, Yammer, Scribd, Groupon, Shopify, and Basecamp.[38] As of March 2013, it is estimated that about 211,295 web sites are running Ruby on Rails.[39]

See also [edit]

References [edit]

  1. ^ Rails 3.2.13, 3.1.12, and 2.3.18 have been released!
  2. ^ Rails 4.0: Release Candidate 1 released!
  3. ^ Grimmer, Lenz (February 2006). "Interview with David Heinemeier Hansson from Ruby on Rails". MySQL AB. Retrieved 2008-06-08. 
  4. ^ "Rails core team profiles.". Retrieved 2008-07-15. 
  5. ^ Hansson, David (August 7, 2006). "Ruby on Rails will ship with OS X 10.5 (Leopard)". Retrieved 2008-06-08. 
  6. ^ Hansson, David (March 16, 2009). "Rails 2.3: Templates, Engines, Rack, Metal, much more!". 
  7. ^ "The day Merb joined Rails". 2008-12-27. 
  8. ^ Ruby on Rails 3.0 Release Notes
  9. ^ "Ruby on Rails 3.0 goes modular". sdtimes.com. 2010-02-10. Retrieved 2010-08-06. 
  10. ^ "Ruby on Rails 3.1 Release Notes". 2012-09-01. 
  11. ^ "Ruby on Rails 3.2 Release Notes". 2012-09-01. 
  12. ^ "Rails/master is now 4.0.0.beta". 2012-09-01. 
  13. ^ "Rails 1.0: Party like it's one oh oh!". Riding Rails. Retrieved June 9, 2010.
  14. ^ "Rails 1.2: REST admiration, HTTP lovefest, and UTF-8 celebrations". Riding Rails. Retrieved June 9, 2010.
  15. ^ "Rails 2.0: It's done!". Riding Rails. Retrieved June 9, 2010.
  16. ^ Rails 2.1: Time zones, dirty, caching, gem dependencies, caching, etc. Riding Rails. Retrieved June 9, 2010.
  17. ^ "Rails 2.2: i18n, HTTP validators, thread safety, JRuby/1.9 compatibility, docs". Riding Rails. Retrieved June 9, 2010.
  18. ^ "Rails 2.3: Templates, Engines, Rack, Metal, much more!". Riding Rails. Retrieved June 9, 2010.
  19. ^ "Rails 3.0: It's ready!". Riding Rails. Retrieved August 30, 2010.
  20. ^ [1] www.github.com
  21. ^ [2] www.github.com
  22. ^ [3] blog.wyeworks.com
  23. ^ There were quite a few changes in the 2.0 release, including the way that Ruby on Rails generates scaffolding code.
  24. ^ Official deployment instructions suggests use of Passenger
  25. ^ Ruby on Rails includes the Prototype JavaScript framework and the Scriptaculous JavaScript controls and visual effects library.
  26. ^ "Rails 3.0: It's ready!". rubyonrails.org. Retrieved 2010-08-30. "Rails 3.0 has been designed to work with Ruby 1.8.7, Ruby 1.9.2, and JRuby 1.5.2+." 
  27. ^ "Rails 3.2.0.rc2 has been released!". 2012-09-01. 
  28. ^ "Ruby on Rails: Download". RubyonRails.org. 
  29. ^ ""Ruby on Rails" Trademark Status". USPTO. Retrieved 2007-08-01. 
  30. ^ ""Rails" Trademark Status". USPTO. Retrieved 2007-08-01. 
  31. ^ "Rails Logo Trademark Status". USPTO. Retrieved 2007-08-01. 
  32. ^ a b Forde, Pete (2007-07-23). "Beginning Rails: From Novice to Professional". Retrieved 2007-08-01. 
  33. ^ Cooper, Peter (2007-07-24). "David Heinemeier Hansson says No to Use of Rails Logo". Retrieved 2007-08-01. 
  34. ^ "5 Question Interview with Twitter Developer Alex Payne". radicalbehavior.com. 2007-03-29. Retrieved 2009-07-18. "By various metrics Twitter is the biggest Rails site on the net right now. Running on Rails has forced us to deal with scaling issues - issues that any growing site eventually contends with – far sooner than I think we would on another framework." 
  35. ^ Steve Jenson, Alex Payne, and Robey Pointer interview (2009-04-03). "Twitter on Scala". artima.com. Retrieved 2009-07-18. "We had a Ruby-based queuing system that we used for communicating between the Rails front ends and the daemons, and we ended up replacing that with one written in Scala. The Ruby one actually worked pretty decently in a normal steady state, but the startup time and the crash behavior were undesirable." 
  36. ^ "Twitter jilts Ruby for Scala". theregister.co.uk. 2009-04-01. Retrieved 2009-07-18. "By the end of this year, Payne said, Twitter hopes to have its entire middleware infrastructure and its APIs ported to the new language. Ruby will remain, but only on the front end. "We're still happy with Rails for building user facing features... performance-wise, it's fine for people clicking around web pages. It's the heavy lifting, asynchronous processing type of stuff that we've moved away from."" 
  37. ^ ryan king (2009-09-25). "Twitter on Ruby". evan weaver. Retrieved 2009-09-29. "We use Scala for a few things at Twitter, but the majority of the site is Ruby." 
  38. ^ "Here's Why Ruby On Rails Is Hot". Business Insider. Retrieved February 10, 2012. 
  39. ^ "Ruby on Rails Usage Trends". BuiltWith Trends. Retrieved February 10, 2012. 

Bibliography [edit]

External links [edit]


Original courtesy of Wikipedia: http://en.wikipedia.org/wiki/Ruby_on_Rails — Please support Wikipedia.
A portion of the proceeds from advertising on Digplanet goes to supporting Wikipedia.
233492 videos foundNext > 

MountainWest RubyConf 2013 Component-based Architectures in Ruby and Rails by Stephan Hagemann

It's true that goods are better distributable when they are in packages. That is the common view of what Ruby gems and Rails engines are: packages for distri...

Ruby on Rails Tutorials 6.1: How to make a class in Ruby

Files used in the tutorial: Car.rb: http://goo.gl/sL49E Main.rb: http://goo.gl/h4h2t This is Short tutorial on how to make a simple class, setters and getter...

Web Development with Ruby On Rails

The Ruby on Rails framework gives you the tools you need to develop web applications faster. In this webinar, you'll learn about the basic components of the ...

What is a has_many :through association in Ruby on Rails? | Treehouse Quick Tip

To watch more videos like this, go to http://trhou.se/start-free-yt And don't forget to subscribe on YouTube: http://trhou.se/subscribe-treehouse-yt In this ...

Ruby on Rails Tutorial Part 1 - Getting Started

In this Ruby on Rails Blog Tutorial we'll work on getting a blogging application up and running, learn about the rails directory structure, and do a simple h...

Big Ruby 2013 Services and Rails: The Shit They Don't Tell You by Brian Morton

Building services and integrating them into Rails is hard. We want smaller Rails apps and nicely encapsulated services, but services introduce complexity. If...

O'Reilly OSCON Java 2011: Raffi Krikorian, "Twitter: From Ruby on Rails to the JVM"

"Twitter: From Ruby on Rails to the JVM" Raffi Krikorian Twitter At Twitter, @raffi leads the Applications Services group, the custodians of Twitter's core l...

Installing Ruby on Rails w/ MySQL on Windows

Beginner oriented instructions on how to install Ruby 1.9.3 with Rails 3.2 (using the MySQL gem) on Windows 7.

Tutorial Ruby on Rails 4: Crea tu propia vista

Parte 3: http://youtu.be/_0erJfjO2U4 ("Hola Mundo" en Rails) Parte 2: http://youtu.be/ZuYmrY1T0NE ("Como instalar Rails") Parte 1: http://youtu.be/di60mvq5Im...

Keynote - Rails 4 and the Future of Web by Aaron Patterson Aloha Ruby Conference

What's new in Rails 4? How does Rails 4 fit in to the future of web development? Why are cats so important to the development of Ruby and Rails? All these qu...

233492 videos foundNext > 

2236 news items

 
Business Wire (press release)
Thu, 09 May 2013 05:01:23 -0700

SEATTLE--(BUSINESS WIRE)--Code Fellows, the only coding education provider that guarantees a $60,000 tech job after graduation, announced today that it has launched a Ruby on Rails bootcamp designed exclusively for women interested in breaking ...

NPR (blog)

NPR (blog)
Mon, 29 Apr 2013 00:25:46 -0700

A few years back, Allen starting going to workshops to learn a hot Web application framework called Ruby on Rails. Twitter was developed with it. Allen got really frustrated when she noticed that out of 200 people, only six were women. Allen and a ...
 
SBWire (press release)
Sun, 28 Apr 2013 23:02:46 -0700

“We have just released our first commercial bootstrap theme for Ruby on Rails and we assure that developers will be delighted to use this as it will help them save a lot of time. Moreover its design is minimalistic, clean and business oriented, says ...
 
The H
Thu, 02 May 2013 04:37:05 -0700

The developers of the Ruby on Rails web framework have announced that the first Rails 4.0 release candidate is now available "just in time for the opening of RailsConf". Rails 4.0 is the first Rails release to prefer Ruby 2.0 and has a minimum ...
 
ADT Magazine
Fri, 03 May 2013 14:09:55 -0700

If your developer skill set includes iOS chops, front-end know-how, and coding for the cloud, you're officially one of the cool kids -- which is to say, you've got the skills most in demand for the highest paying jobs in the market today. That's the ...
 
tuaw.com
Thu, 02 May 2013 12:09:12 -0700

Created to provide professional services for Apple technologies, its mission has grown to include both contract programming as well as instruction for Android, iOS, HTML 5, Ruby on Rails and Windows 8. Recently merged with Atlanta's Highgroove Studios, ...

Globe and Mail

Globe and Mail
Thu, 02 May 2013 16:00:45 -0700

The subjects the two programs cover are similar, focusing on programming languages such as HTML, CSS, Java Script, and Ruby on Rails, to name just a few. Khurram Virani, a Bitmaker Labs instructor, says the intensive program means students develop ...
 
Times of India
Sun, 05 May 2013 20:23:13 -0700

Ruby on rails; 8. Java; 9. PHP; and 10. Linux. "A common theme among these technology skills is the need for open source, mobile, cloud or big data technologies, like iOS, Azure and Hadoop," said Matt Miller, CTO of CyberCoders. FEATURED ARTICLES ...
Loading

Oops, we seem to be having trouble contacting Twitter

Talk About Ruby on Rails

You can talk about Ruby on Rails with people all over the world in our discussions.

Support Wikipedia

A portion of the proceeds from advertising on Digplanet goes to supporting Wikipedia. Please add your support for Wikipedia!