Over 200 pages. Subjects covered include:
- Getting started with Ruby on Rails
- ActiveRecord Migrations
- Rails Best Practices
- Naming Conventions
- User Authentication in Rails
- ActiveRecord Associations
- ActiveRecord Validations
- ActiveRecord Query Interface
- Rails generate commands
- I18n - Internationalization
- Using GoogleMaps with Rails
- File Uploads
- Safe Constantize
- Rails 5
- Authorization with CanCan
- Change default timezone
- Asset Pipeline
- Upgrading Rails
- ActiveRecord Locking
- Configure Angular with Rails
- Rails logger
- Prawn PDF
- Rails API
- Deploying a Rails app on Heroku
- Form Helpers
- ActiveRecord Transactions
- RSpec and Ruby on Rails
- Decorator pattern
- React with Rails using react-rails gem
- Rails Cookbook - Advanced rails recipes/learnings and coding techniques
- Multipurpose ActiveRecord columns
- Class Organization
- Shallow Routing
- Model states: AASM
- Rails 5 API Authetication
- Testing Rails Applications
- Active Jobs
- Rails frameworks over the years
- Nested form in Ruby on Rails
- Factory Girl
- Import whole CSV files from specific folder
- Tools for Ruby on Rails code optimization and cleanup
- Active Model Serializers
- Rails Engine - Modular Rails
Ruby on Rails' emergence in the 2000s greatly influenced web app development, through innovative features such as seamless database table creations, migrations, and scaffolding of views to enable rapid application development. Ruby on Rails' influence on other web frameworks remains apparent today, with many frameworks in other languages borrowing its ideas, including Django in Python, Catalyst in Perl, Laravel in PHP, Phoenix in Elixir, and Sails.js in Node.js.
David Heinemeier Hansson extracted Ruby on Rails from his work on the project management tool Basecamp at the web application company also called Basecamp. 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 Action Controller.
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.
Like other 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 to a Ruby file. For example, a model class User will usually be defined in the file 'user.rb' in the app/models directory, and linked to the table 'users' in the database. While developers are free to ignore this convention and choose differing names for their models, files, and database table, this is not common practice and is usually discouraged in accordance with the "convention-over-configuration" philosophy.
A controller is a server-side 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 for information and pass these on to the view. For example, in an airline reservation system, a controller implementing a flight-search function would need to query a model representing individual flights to find flights matching the search, and might also need to query models representing airports and airlines to find related secondary data. The controller might then pass some subset of the flight data to the corresponding view, which would contain a mixture of static HTML and logic that use the flight data to create an HTML document containing a table with one row per flight. 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.rb configuration file.
A view in the default configuration of Rails is an erb file, which is evaluated and converted to HTML at run-time. Alternatively, 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 onward, Passenger replaced Mongrel as the most-used web server for Ruby on Rails. Ruby is also supported natively on the IBM i.
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.