Ruby on Rails é um framework popular de desenvolvimento web em Ruby, que adota o padrão arquitetural MVC para separar a aplicação em Model, View e Controller. Com ênfase em "Convenção sobre Configuração", o Rails permite desenvolver rapidamente com menos código. Oferecendo operações CRUD simplificadas, suporte a Gemas para adicionar funcionalidades extras e Scaffolding para prototipagem ágil. Além disso, o framework conta com Active Record para mapear dados do banco de dados em objetos Ruby e Rake para executar tarefas importantes. O Rails ainda garante segurança integrada e possui uma comunidade ativa para suporte e aprendizado.
Os principais pontos para entender melhor o Ruby on Rails. Dominar esses pontos ajudará você a entender melhor o funcionamento do Ruby on Rails e a tirar o máximo proveito desse poderoso framework de desenvolvimento web.
MVC (Model-View-Controller)
O Ruby on Rails segue o padrão arquitetural Model-View-Controller, que separa a aplicação em três componentes principais. O Model representa a camada de dados e a lógica de negócios, o View é responsável pela interface do usuário e o Controller manipula as interações do usuário e coordena as ações.
- Imagine que estamos criando um aplicativo de lista de tarefas (to-do list). O Model seria a classe que representa uma tarefa, contendo atributos como título, descrição e status. O View seria a interface do usuário, onde ele verá a lista de tarefas e poderá adicionar novas tarefas. O Controller seria responsável por manipular as requisições do usuário, como adicionar uma nova tarefa à lista.
https://guiarails.com.br/getting_started.html#mvc-e-voce
Convenção sobre Configuração
O Rails segue o princípio de "Convenção sobre Configuração", o que significa que ele possui uma série de convenções bem definidas que permitem que os desenvolvedores escrevam menos código para configurar a aplicação. Isso torna o desenvolvimento mais rápido e fácil.
- Ao criar um novo projeto Ruby on Rails, o Rails já define a estrutura de diretórios e arquivos padrão para o projeto. Por exemplo, os modelos devem ser colocados na pasta "app/models", os controladores em "app/controllers" e as visualizações em "app/views".
https://guiarails.com.br/getting_started.html#criando-a-aplicacao-blog
Arquivo/Pasta | Objetivo |
---|---|
app/ | Contém os controllers, models, views, helpers, mailers, channels, jobs, e assets para sua aplicação. Você irá se concentrar nesse diretório pelo restante desse guia. |
bin/ | Contém o script rails que inicializa sua aplicação e contém outros scripts que você utiliza para configurar, atualizar, colocar em produção ou executar sua aplicação. |
config/ | Contém configurações de rotas, banco de dados entre outros de sua aplicação. Este conteúdo é abordado com mais detalhes em Configuring Rails Applications. |
config.ru | Configuração Rack para servidores baseados em Rack usados para iniciar a aplicação. Para mais informações sobre o Rack, consulte Rack website. |
db/ | Contém o schema do seu banco de dados atual, assim como as migrations do banco de dados. |
Gemfile | |
Gemfile.lock | Esses arquivos permitem que você especifique quais dependências de gem são necessárias na sua aplicação Rails. Esses arquivos são usados pela gem Bundler. Para mais informações sobre o Bundler, |
lib/ | Módulos extendidos da sua aplicação. |
log/ | Arquivos de log da aplicação. |
public/ | Contém arquivos estáticos e assets compilados. Quando sua aplicação está rodando esse diretório é exposto como ele está. |
Rakefile | Este arquivo localiza e carrega tarefas que podem ser rodadas por linhas de comando. As tarefas são definidas nos componentes do Rails. Ao invés de editar o Rakefile, você deve criar suas próprias |
README.md | Este é um manual de instruções para sua aplicação. Você deve editar este arquivo para informar o que seu aplicativo faz, como configurá-lo e assim por diante. |
storage/ | Arquivos de armazenamento ativo do serviço de disco. Mais informações em Active Storage Overview. |
test/ | Testes unitários, fixtures, e outros tipos de testes. Mais informações em Testing Rails Applications. |
tmp/ | Arquivos temporários (como cache e arquivos pid). |
vendor/ | Diretório com todos os códigos de terceiros. Em uma típica aplicação Rails inclui vendored gems. |
.gitignore | Este arquivo diz ao Git quais arquivos (ou padrões) devem ser ignorados. Acesse GitHub - Ignoring files para mais informações sobre arquivos ignorados. |
.ruby-version | Este arquivo contém a versão padrão do Ruby. |
CRUD Simplificado
O Rails oferece operações CRUD (Create, Read, Update, Delete) de forma simples e direta. Com apenas algumas linhas de código, é possível criar interfaces para interagir com bancos de dados.
- Para criar as operações CRUD para a nossa lista de tarefas, basta executar o seguinte comando no terminal Rails
rails generate scaffold Task title:string description:text status:boolean
https://guiarails.com.br/getting_started.html#operacoes-crud
Gemas (Gems):
As Gemas são pacotes de código Ruby que podem ser facilmente adicionados à aplicação para adicionar funcionalidades extras. O Ruby on Rails possui uma grande quantidade de gemas disponíveis, o que facilita a incorporação de recursos adicionais à sua aplicação.
- Suponha que precisamos adicionar um calendário à nossa aplicação de lista de tarefas. Podemos pesquisar uma gema existente para isso, como a 'simple_calendar'. Então, adicionamos essa gema ao arquivo "Gemfile" e executamos "bundle install" para instalá-la. O Gemfile é o arquivo que contém todas as gemas que serão utilizadas na aplicação com a versão definida. O Gemfile.lock força as versões de cada gem que estão sendo utilizadas no seu projeto. Isso é pra evitar que o projeto fique com verões de gems diferentes em outros lugares.
Em seguida, podemos seguir a documentação da gema para integrá-la às nossas visualizações e controladores para exibir um calendário de tarefas.
gem install simple_calendar
Scaffolding
O Scaffolding é uma ferramenta do Rails que permite gerar automaticamente partes básicas de uma aplicação, como modelos, controladores e visualizações. Isso é útil para criar rapidamente protótipos de funcionalidades.
- Como mencionado no exemplo anterior, o comando "rails generate scaffold" cria rapidamente todas as partes básicas necessárias para um recurso (no exemplo, "Task"), incluindo o modelo, o controlador e as visualizações para as operações CRUD.
https://www.rubyguides.com/2020/03/rails-scaffolding/
rails generate scaffold books
This example creates:
A BooksController
A Book model
A new resources :books route added to your config/routes.rb file
A set of testing-related files
View files under app/views/books (five in total)
Active Record
O Active Record é a camada de ORM (Mapeamento Objeto-Relacional) do Rails. Ele mapeia os registros do banco de dados para objetos Ruby e vice-versa, permitindo que você trabalhe com dados do banco de dados de forma orientada a objetos.
- O Active Record permite que você defina facilmente um modelo e use-o para interagir com o banco de dados. Por exemplo, com o modelo "Task" criado pelo scaffolding, podemos criar uma nova tarefa e salvá-la no banco de dados desta forma:
task = Task.new(title: 'Comprar mantimentos', description: 'Ir ao supermercado', status: false)
task.save
https://guiarails.com.br/active_record_basics.html
Rake
Rake é uma ferramenta de linha de comando que vem com o Rails e permite executar tarefas como migrações de banco de dados, execução de testes, entre outras operações úteis.
- O Rake permite que você execute tarefas definidas no Rakefile do projeto. Por exemplo, podemos criar uma tarefa personalizada para imprimir todas as tarefas no console:
# No Rakefile
task :list_tasks do
tasks = Task.all
tasks.each do |task|
puts "#{task.title} - #{task.description} (#{task.status})"
end
end
# No terminal
rake list_tasks
https://guiarails.com.br/command_line.html
Rotas (Routes)
O Rails usa um sistema de roteamento para direcionar as solicitações HTTP para os controladores adequados. Isso permite que você defina facilmente as URLs da aplicação.
- Podemos definir rotas no arquivo "config/routes.rb". Por exemplo, para definir uma rota para exibir uma lista de tarefas, faríamos o seguinte:
# No config/routes.rb
Rails.application.routes.draw do
resources :tasks
end
Isso criará as seguintes rotas:
GET /tasks (index)
GET /tasks/new (new)
POST /tasks (create)
GET /tasks/:id (show)
GET /tasks/:id/edit (edit)
PATCH /tasks/:id (update)
PUT /tasks/:id (update)
DELETE /tasks/:id (destroy)
O Rails gera automaticamente essas rotas e as mapeia para as ações correspondentes no controlador.
Para fixar a rota você pode usar asssim:
# No config/routes.rb
Rails.application.routes.draw do
resources :tasks, only: [:index]
end
https://guiarails.com.br/configuring.html#initializers
Segurança
O Rails possui recursos integrados para ajudar a proteger a aplicação contra ameaças comuns, como ataques de injeção de SQL, ataques CSRF (Cross-Site Request Forgery) e mais.
- O Rails possui recursos de segurança integrados, como proteção contra ataques CSRF. Isso é feito automaticamente através do uso de um token de autenticidade em formulários gerados pelo Rails.
https://guiarails.com.br/getting_started.html#seguranca
Comunidade e Documentação
O Ruby on Rails possui uma comunidade ativa e solidária, com muitos recursos de aprendizado, fóruns e documentação disponíveis online. É fácil encontrar ajuda e respostas para dúvidas através da comunidade Rails.
- A comunidade Rails é bastante ativa, e você pode encontrar muita documentação e recursos online. Por exemplo, você pode visitar o site oficial do Ruby on Rails (https://rubyonrails.org/) para encontrar a documentação oficial e o GitHub (https://github.com/rails/rails) para acessar o código-fonte e recursos adicionais.
O Ruby on Rails é uma ferramenta poderosa e eficiente para o desenvolvimento web, permitindo aos desenvolvedores criar aplicações de forma ágil e produtiva. Ao seguir o padrão MVC e adotar a "Convenção sobre Configuração", o framework simplifica a estruturação e configuração do projeto, acelerando o processo de desenvolvimento. Com recursos como Gemas, Scaffolding, Active Record e Rake, o Rails oferece ferramentas práticas e integradas para lidar com diversas tarefas com facilidade. Além disso, a preocupação com a segurança e a presença de uma comunidade ativa tornam o Ruby on Rails uma escolha popular e confiável para desenvolvedores em todo o mundo. Se você deseja construir aplicações web de forma eficiente e segura, dominar os principais conceitos do Ruby on Rails é essencial para obter resultados bem-sucedidos e satisfatórios.
Empresas que usam Ruby: https://www.google.com/search?q=ruby+on+rails+plataforms&oq=ruby+on+rails+plataforms&aqs=edge..69i57j0i22i30l2j0i390i650l3j69i64l2.7987j0j1&sourceid=chrome&ie=UTF-8