• Section: Online Services /Monday 26th January 2015

    Alphabetic Index : A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

    Search β):

    * Ruby on Rails *

    روبی آن ریلز


    Iranian_Flag_Hand_Love_Heart.jpg
    (Wikipedia) - Ruby on Rails Not to be confused with Ruby (programming language). Ruby on Rails Original author(s) Developer(s) Initial release Stable release Preview release Development status Written in Operating system Type License Website
    David Heinemeier Hansson
    Rails Core Team
    13 December 2005; 9 years ago (2005-12-13)
    4.2 / December 19, 2014; 35 days ago (2014-12-19)
    4.2.0.rc1 / November 28, 2014; 56 days ago (2014-11-28)
    Active
    Ruby
    Cross-platform
    Web application framework
    Expat License
    rubyonrails.org

    Ruby on Rails, or simply Rails, is an open source web application framework written in Ruby. Rails is a full-stack framework that emphasizes the use of well-known software engineering patterns and paradigms, including convention over configuration (CoC), don''t repeat yourself (DRY), the active record pattern, and model–view–controller (MVC).

    Contents
    • 1 History
    • 2 Technical overview
      • 2.1 Framework structure
      • 2.2 Deployment
    • 3 Philosophy and design
    • 4 Trademarks
    • 5 Reception
      • 5.1 Scalability
      • 5.2 Security
    • 6 References
    • 7 Bibliography
    • 8 External links

    History

    David Heinemeier Hansson extracted Ruby on Rails from his work on Basecamp, a project management tool by 37signals (now a web application company). Hansson first released Rails as open source in July 2004, but did not share commit rights to the project until February 2005. 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", 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.

    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. Merb was merged with Rails as part of the Rails 3.0 release.

    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.

    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. Rails 3.2.x is the last version that supports Ruby 1.8.7. Rails 3.2.12 supports Ruby 2.0

    Rails 4.0 was released on June 25, 2013, introducing Russian Doll Caching, Turbolinks, Live Streaming as well as making Active Resource, Active Record Observer and other components optional by splitting them as gems.

    Rails 4.1 was released on April 8, 2014, introducing Spring, Variants, Enums, Mailer previews, and secrets.yml.

    Rails 4.2 was released on December 19, 2014, introducing Active Job, asynchronous emails, Adequate Record, Web Console, and foreign keys.

    Version history Version Date
    1.0 02005-12-13-0000December 13, 2005
    1.2 02007-01-19-0000January 19, 2007
    2.0 02007-12-07-0000December 7, 2007
    2.1 02008-06-01-0000June 1, 2008
    2.2 02008-11-21-0000November 21, 2008
    2.3 02009-03-16-0000March 16, 2009
    3.0 02010-08-29-0000August 29, 2010
    3.1 02011-08-31-0000August 31, 2011
    3.2 02012-01-20-0000January 20, 2012
    4.0 02013-06-25-0000June 25, 2013
    4.1 02014-04-08-0000April 8, 2014
    4.2 02014-12-19-0000December 19, 2014

    Technical overview

    Like many web frameworks, Ruby on Rails uses the model–view–controller (MVC) 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 the controller/action will be accessible for external web requests only if a corresponding route is mapped to it. Rails encourages developers to use RESTful routes, which include actions such as: create, new, edit, update, destroy, show, and index. These mappings of incoming requests/routes to controller actions can be easily set up in the routes configuration file.

    A view in the default configuration of Rails is an erb file, which is compiled 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. 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, 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. Ruby is also supported natively on the IBM i.

    Ruby on Rails is also noteworthy for its extensive use of the JavaScript libraries Prototype and Script.aculo.us for Ajax. 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.

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

    Framework structure

    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.

    Deployment

    Ruby on Rails is often installed using RubyGems, a package manager 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.

    Philosophy and design

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

    "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.

    "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

    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", the word "RAILS", and the official Rails logo. 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. In response to this criticism, Hansson replied:

    I only grant promotional use 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.

    Reception Scalability

    Rails running on Matz''s Ruby Interpreter (the de facto reference interpreter for Ruby) had been criticized for issues with scalability. 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. The user interface aspects of the site continued to run Ruby on Rails until 2011 when it was replaced due to concerns over performance

    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, Shopify, Hulu, and Basecamp. As of May 2014, it is estimated that more than 600,000 web sites are running Ruby on Rails.

    Security

    On September 24, 2013, a session cookie persistence security flaw was reported in Ruby on Rails. In a default configuration, the entire session hash is stored within a session cookie known as CookieStore, allowing any authenticated session possessing the session cookie to log in as the target user at any time in the future. As a workaround, administrators are advised to configure cookies to be stored on the server using mechanisms such as ActiveRecordStore.

    Tags:Ajax, Apache, HTML, Internet, Java, MySQL, Ruby on Rails, Russian, SOAP, Twitter, Unobtrusive JavaScript, Web application, Web application framework, Website, Wikipedia, XML


    Add definition or comments on Ruby on Rails

    Your Name / Alias:
    E-mail:
    Definition / Comments
    neutral points of view
    Source / SEO Backlink:
    Anti-Spam Check
    Enter text above
    Upon approval, your definition will be listed under: Ruby on Rails