2018-04-19 11:19:55 -04:00
= Welcome to \Rails
2013-03-29 16:16:12 -04:00
2018-04-19 11:19:55 -04:00
== What's \Rails
2018-04-19 12:39:18 -04:00
\Rails is a web-application framework that includes everything needed to
2017-08-30 16:44:46 -04:00
create database-backed web applications according to the
2019-03-09 07:08:03 -05:00
{Model-View-Controller (MVC)}[https://en.wikipedia.org/wiki/Model-view-controller]
2017-08-30 16:44:46 -04:00
pattern.
Understanding the MVC pattern is key to understanding \Rails. MVC divides your
2018-04-07 16:50:02 -04:00
application into three layers: Model, View, and Controller, each with a specific responsibility.
2017-08-30 16:44:46 -04:00
2018-04-19 11:19:55 -04:00
== Model layer
The <em><b>Model layer</b></em> represents the domain model (such as Account, Product,
Person, Post, etc.) and encapsulates the business logic specific to
2017-08-30 16:44:46 -04:00
your application. In \Rails, database-backed model classes are derived from
2018-04-19 15:23:02 -04:00
<tt>ActiveRecord::Base</tt>. {Active Record}[link:files/activerecord/README_rdoc.html] allows you to present the data from
2017-08-30 16:44:46 -04:00
database rows as objects and embellish these data objects with business logic
2018-04-19 11:19:55 -04:00
methods. Although most \Rails models are backed by a database, models can also be ordinary
2017-08-30 16:44:46 -04:00
Ruby classes, or Ruby classes that implement a set of interfaces as provided by
2018-04-19 15:23:02 -04:00
the {Active Model}[link:files/activemodel/README_rdoc.html] module.
2018-04-19 11:19:55 -04:00
== Controller layer
2017-08-30 16:44:46 -04:00
2018-04-19 11:19:55 -04:00
The <em><b>Controller layer</b></em> is responsible for handling incoming HTTP requests and
2021-04-10 23:06:45 -04:00
providing a suitable response. Usually, this means returning \HTML, but \Rails controllers
2017-08-30 16:44:46 -04:00
can also generate XML, JSON, PDFs, mobile-specific views, and more. Controllers load and
2021-04-10 23:06:45 -04:00
manipulate models and render view templates in order to generate the appropriate HTTP response.
2017-08-30 16:44:46 -04:00
In \Rails, incoming requests are routed by Action Dispatch to an appropriate controller, and
2018-04-19 11:19:55 -04:00
controller classes are derived from <tt>ActionController::Base</tt>. Action Dispatch and Action Controller
2018-04-19 15:23:02 -04:00
are bundled together in {Action Pack}[link:files/actionpack/README_rdoc.html].
2017-08-30 16:44:46 -04:00
2018-04-19 11:19:55 -04:00
== View layer
The <em><b>View layer</b></em> is composed of "templates" that are responsible for providing
2017-08-30 16:44:46 -04:00
appropriate representations of your application's resources. Templates can
come in a variety of formats, but most view templates are \HTML with embedded
Ruby code (ERB files). Views are typically rendered to generate a controller response,
2018-04-19 15:23:02 -04:00
or to generate the body of an email. In \Rails, View generation is handled by {Action View}[link:files/actionview/README_rdoc.html].
2018-04-19 11:19:55 -04:00
== Frameworks and libraries
2017-08-30 16:44:46 -04:00
2018-04-19 15:23:02 -04:00
{Active Record}[link:files/activerecord/README_rdoc.html], {Active Model}[link:files/activemodel/README_rdoc.html],
{Action Pack}[link:files/actionpack/README_rdoc.html], and {Action View}[link:files/actionview/README_rdoc.html] can each be used independently outside \Rails.
In addition to that, \Rails also comes with {Action Mailer}[link:files/actionmailer/README_rdoc.html], a library
2019-01-13 15:12:58 -05:00
to generate and send emails; {Action Mailbox}[link:files/actionmailbox/README_md.html], a library to receive emails within a Rails application;
{Active Job}[link:files/activejob/README_md.html], a framework for declaring jobs and making them run on a variety of queueing
2018-04-19 15:23:02 -04:00
backends; {Action Cable}[link:files/actioncable/README_md.html], a framework to
integrate WebSockets with a \Rails application; {Active Storage}[link:files/activestorage/README_md.html],
2019-01-13 15:12:58 -05:00
a library to attach cloud and local files to \Rails applications; {Action Text}[link:files/actiontext/README_md.html], a library to handle rich text content;
2018-04-19 15:23:02 -04:00
and {Active Support}[link:files/activesupport/README_rdoc.html], a collection
2017-08-30 16:44:46 -04:00
of utility classes and standard library extensions that are useful for \Rails,
and may also be used independently outside \Rails.
2013-03-29 16:16:12 -04:00
== Getting Started
1. Install \Rails at the command prompt if you haven't yet:
2016-05-24 12:58:56 -04:00
$ gem install rails
2013-03-29 16:16:12 -04:00
2. At the command prompt, create a new \Rails application:
2016-05-24 12:58:56 -04:00
$ rails new myapp
2013-03-29 16:16:12 -04:00
where "myapp" is the application name.
3. Change directory to +myapp+ and start the web server:
2017-08-30 16:44:46 -04:00
$ cd myapp
2019-01-22 03:53:47 -05:00
$ bin/rails server
2013-03-29 16:16:12 -04:00
Run with <tt>--help</tt> or <tt>-h</tt> for options.
2021-04-10 23:06:45 -04:00
4. Go to <tt>http://localhost:3000</tt>, and you'll see: "Yay! You’ re on \Rails!"
2013-03-29 16:16:12 -04:00
5. Follow the guidelines to start developing your application. You may find the following resources handy:
2017-08-30 16:44:46 -04:00
* The \README file created within your application.
2018-07-23 22:29:31 -04:00
* {Getting Started with \Rails}[https://guides.rubyonrails.org/getting_started.html].
* {Ruby on \Rails Guides}[https://guides.rubyonrails.org].
2019-03-09 07:08:03 -05:00
* {The API Documentation}[https://api.rubyonrails.org].
2013-03-29 16:16:12 -04:00
== Contributing
2017-08-30 16:44:46 -04:00
We encourage you to contribute to Ruby on \Rails! Please check out the
2018-07-23 22:29:31 -04:00
{Contributing to Ruby on \Rails guide}[https://guides.rubyonrails.org/contributing_to_ruby_on_rails.html] for guidelines about how to proceed. {Join us!}[http://contributors.rubyonrails.org]
2017-08-30 16:44:46 -04:00
Trying to report a possible security vulnerability in \Rails? Please
2019-03-09 07:08:03 -05:00
check out our {security policy}[https://rubyonrails.org/security/] for
2017-08-30 16:44:46 -04:00
guidelines about how to proceed.
2013-03-29 16:16:12 -04:00
2017-08-30 16:44:46 -04:00
Everyone interacting in \Rails and its sub-projects' codebases, issue trackers, chat rooms, and mailing lists is expected to follow the \Rails {code of conduct}[http://rubyonrails.org/conduct/].
2013-03-29 16:16:12 -04:00
== License
2017-08-21 19:46:02 -04:00
Ruby on \Rails is released under the {MIT License}[https://opensource.org/licenses/MIT].