DEV Community

Cover image for Ruby on Rails
Fabiano Santos Florentino
Fabiano Santos Florentino

Posted on • Edited on

Ruby on Rails

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

https://rubygems.org/

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
Enter fullscreen mode Exit fullscreen mode
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)
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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

https://rubyonrails.org/

Top comments (1)

Collapse
 
cherryramatis profile image
Cherry Ramatis

Muito bom ver artigos introdutorios sobre rails! parabens