Rails Flashcards
Active Record
Facilita a interação com o banco de dados, mapeando tabelas para classes e objetos Ruby.
Active Record é uma parte importante do framework Ruby on Rails.
Action Pack
Lida com requisições web, roteamento, renderização de views e controllers.
Action Pack é responsável por lidar com o controle de requisições e respostas em uma aplicação Rails.
Action View
Renderiza templates e layouts para gerar a interface do usuário.
Action View é responsável por gerar a interface do usuário em uma aplicação Rails.
Action Mailer
Cria e envia e-mails de forma simples e eficiente.
Action Mailer facilita o envio de e-mails em uma aplicação Rails.
Active Support
Fornece utilitários e extensões para a linguagem Ruby, facilitando o desenvolvimento.
Active Support oferece diversas funcionalidades adicionais para o desenvolvimento em Ruby.
Action Cable
Permite comunicação em tempo real entre o servidor e o cliente, ideal para chats e atualizações ao vivo.
Action Cable é usado para implementar funcionalidades de comunicação em tempo real em uma aplicação Rails.
Active Job
Gerencia tarefas em background, como processamento de dados ou envio de e-mails em fila.
Active Job é útil para executar tarefas em segundo plano de forma eficiente em uma aplicação Rails.
Model (ActiveRecord)
Gerencia a interação com o banco de dados, mapeando tabelas para classes e objetos Ruby, facilitando a criação, leitura, atualização e exclusão de dados.
View (Action View)
Responsável por renderizar templates e layouts, gerando a interface do usuário que será exibida no navegador.
Controller (Action Controller)
Lida com as requisições do usuário, interagindo com o Model para obter dados e com a View para renderizar a resposta apropriada.
Routes (Action Dispatch)
Define como as URLs da aplicação são mapeadas para os Controllers e Actions correspondentes.
Helpers (Action View)
Métodos auxiliares que podem ser usados nas Views para realizar tarefas comuns, como formatação de dados ou geração de links.
Assets (Sprockets)
Gerencia arquivos estáticos como JavaScript, CSS e imagens, compilando e otimizando-os para melhorar o desempenho da aplicação.
Mailers (Action Mailer)
Permite enviar e-mails de forma fácil e eficiente, com suporte a templates e anexos.
Jobs (Active Job)
Gerencia tarefas em background, como processamento de dados ou envio de e-mails em fila, melhorando a performance da aplicação.
Cache (Active Support::Cache)
Armazena dados em memória ou em outros locais para acelerar o acesso a informações frequentemente utilizadas.
Internationalization (i18n)
Permite traduzir a aplicação para diferentes idiomas, adaptando-a a diferentes públicos.
Rack
Interface entre o Rails e servidores web.
Rack is the interface between Rails and web servers.
Action Cable
Comunicação em tempo real (WebSockets).
Action Cable enables real-time communication using WebSockets.
Action Text
Editor de texto rico (rich text).
Action Text is a rich text editor.
Active Storage
Upload e gerenciamento de arquivos.
Active Storage provides file upload and management capabilities.
Explique o padrão MVC e como ele é aplicado no Rails.
MVC separa a aplicação em Model (dados), View (interface) e Controller (lógica). No Rails, o Model é representado pelo ActiveRecord, a View pelo Action View e o Controller pelo Action Controller.
Exemplo: O Controller recebe uma requisição do usuário, o Model realiza operações no banco de dados e a View exibe o resultado na interface.
O que é o ActiveRecord e quais suas principais vantagens?
ORM que mapeia tabelas do banco de dados para classes Ruby, facilitando operações CRUD e abstraindo a linguagem SQL. Vantagens: produtividade, portabilidade e facilidade de manutenção.
Exemplo: O ActiveRecord permite definir associações entre modelos de forma simples e intuitiva.
Quais os tipos de associações entre modelos no Rails e como implementá-las?
belongs_to (pertence a), has_many (tem muitos), has_one (tem um), has_and_belongs_to_many (associação muitos para muitos). Implementadas com métodos específicos no modelo.
Exemplo: Um modelo de Usuário pode pertencer a um modelo de Grupo através de uma associação belongs_to.
O que são migrations e por que são importantes?
Maneira de versionar o esquema do banco de dados, permitindo criar, modificar e reverter alterações de forma controlada e segura.
Exemplo: Uma migration pode adicionar uma nova coluna a uma tabela existente sem afetar os dados já presentes.
Como funcionam as rotas no Rails e como defini-las?
Mapeiam URLs para controllers e actions. Definidas no arquivo config/routes.rb usando métodos como get, post, resources, etc.
Exemplo: Uma rota definida como ‘get ‘/usuarios’, to: ‘users#index’’ mapeia a URL ‘/usuarios’ para a action ‘index’ do controller ‘Users’.
O que são callbacks e quando usá-los?
Métodos executados em momentos específicos do ciclo de vida de um objeto (antes/depois de criar, atualizar, etc.). Úteis para validações, ações secundárias, etc.
Exemplo: Um callback ‘before_save’ pode ser usado para executar uma ação antes de salvar um registro no banco de dados.
O que são scopes e como criá-los?
Consultas reutilizáveis no modelo, definidas com métodos de classe ou lambdas. Melhoram a legibilidade e organização do código.
Exemplo: Um scope ‘recentes’ pode ser criado para retornar apenas os registros mais recentes de um modelo.
Como implementar validações em modelos Rails?
Usando métodos de validação como validates_presence_of, validates_uniqueness_of, etc., ou validações personalizadas com métodos e expressões regulares.
Exemplo: Uma validação ‘validates_length_of :name, maximum: 50’ garante que o campo ‘name’ tenha no máximo 50 caracteres.
Quais as opções para implementar autenticação e autorização no Rails?
Gems como Devise (autenticação) e CanCanCan ou Pundit (autorização). Explicar a diferença entre os conceitos.
Exemplo: Devise fornece funcionalidades prontas para login, registro de usuários e recuperação de senhas em uma aplicação Rails.
Quais os tipos de testes comuns no Rails e como escrevê-los?
Testes de modelo, controller, integração, sistema. Usam frameworks como RSpec ou Minitest. Importância de testar para garantir a qualidade do código.
Exemplo: Um teste de controller pode verificar se a ação ‘create’ redireciona corretamente após a criação de um novo registro.
Como otimizar a performance de uma aplicação Rails?
Índices no banco de dados, eager loading, cache (memcached, Redis), otimização de consultas, etc.
Exemplo: O uso de índices em colunas frequentemente consultadas pode acelerar as operações de busca no banco de dados.
Como lidar com o aumento de tráfego em uma aplicação Rails?
Balanceamento de carga, servidores de aplicação adicionais, banco de dados replicado, etc.
Exemplo: Um sistema de balanceamento de carga distribui as requisições entre vários servidores para evitar sobrecarga em um único servidor.
Quais as principais vulnerabilidades em aplicações Rails e como evitá-las?
Injeção de SQL, XSS, CSRF, etc. Usar gems de segurança, sanitização de entradas, manter o Rails atualizado.
Exemplo: A injeção de SQL pode ocorrer se dados não sanitizados forem diretamente incluídos em consultas SQL dinâmicas.
Como fazer o deploy de uma aplicação Rails?
Plataformas como Heroku, Capistrano, Docker, etc. Conhecimento de configuração de servidores, Nginx/Apache.
Exemplo: O Capistrano permite automatizar o processo de deploy de uma aplicação Rails em servidores remotos.
Quais as principais novidades das versões recentes do Rails?
Action Text, Action Mailbox, Parallel Tests, Hotwire, etc. Demonstra interesse em se manter atualizado.
Exemplo: A inclusão do Action Text facilita a edição de texto formatado diretamente em formulários web no Rails.