Curso Rails Flashcards
Sobre Ruby:
1. Qual o modelo de execução?
2. Qual o estilo de programação?
3. Qual a tipagem?
- Ruby é uma linguagem interpretada: você escreve um algoritmo, e a Máquina Virtual do Ruby (MRI) lê, interpreta e executa o código.
- É multiparadigma: permite usar abordagens orientadas a objetos (classes, métodos, herança), imperativa/procedural (comandos sequenciais) e funcional (funções como objetos de primeira classe, blocos, lambdas).
- É uma linguagem dinâmica: permite modificar estruturas durante a execução.
Qual a diferença entre um vetor e um hash?
Vetor: usamos uma chave fixa (índice) para acessar o valor armazenado.
Hash: lista do tipo chave-valor.
Qual a diferença entre usar o “+” e o “«” para concatenar strings?
”+” → Não modifica o elemento, gera um novo objeto em memória sempre que usado.
“«” → Modifica o elemento, pode ajudar na performance.
O que são symbols?
Símbolos são “strings imutáveis”, identificador. Garantem que seu uso não implicará na criação de novos objetos sempre que usados.
O que é o método initialize?
Método especial que serve para indicarmos o que a classe deve fazer ao ser instanciada/inicializada.
O que significa o self dentro de uma classe?
O self é o próprio objeto, ou seja, o objeto instanciado.
O que são variáveis de instância?
São as variáveis que existem apenas na instância do objeto. Cada objeto possui seus próprios valores. São precedidas por um “@”.
O que são accessors?
Os accessors servem como atalhos para declaração de atributos de uma classe (como getter e setter).
Qual a diferença entre um método de instância e um método de classe?
Método de instância: invocado a partir de um objeto.
Método de classe: executado a partir da própria classe.
O que são módulos em Ruby?
Podem armazenar uma coleção de métodos, constantes e outras definições de módulos e classes. Mas não é possível criar objetos baseados em módulos nem criar módulos que herdam de outro módulo. Ao invés disso, você pode injetar um módulo ou uma funcionalidade específica de um módulo em uma classe ou objeto.
Módulos são bons lugares para armazenar constantes em um local centralizado. Também podem atuar como um namespace (permite definir métodos cujos nomes não irão colidir com outros de um programa).
O que são gems?
São bibliotecas ou conjuntos de arquivos Ruby reutilizáveis, etiquetados com um nome e uma versão.
O que é o Bundler?
É uma dependência que já vem instalada no rails. É um gerenciador de dependências. Quando rodamos o comando bundle ou bundle install será gerado um arquivo Gemfile.lock contendo informações sobre todas as gems que seu projeto usa e as versões.
Qual o significado dos números de uma versão de uma gem?
X.Y.Z (Major.Minor.Patch) - exemplo: gem “cpf_utils”, “1.0.0”
O Patch é para correções, Minor para alterações pequenas e Major quando as alterações são grandes, muitas vezes impactando na forma de usar a gem.
Qual o significado dos símbolos abaixo nas versões?
gem ‘lerolero’, ‘1.0.1’
gem ‘cpf_utils’, ‘>=1.0.0’
gem ‘faker’, ‘~>1.6.0’
gem ‘lerolero’, ‘1.0.1’ # versão exata
gem ‘cpf_utils’, ‘>=1.0.0’ # maior ou igual
gem ‘faker’, ‘~>1.6.0’ # versão parcial, menor que o último número especificado, nesse caso < 2.0
Como eu crio um novo projeto rails e subo o servidor?
rails new nome-projeto
rails s
Em qual pasta/arquivo podemos verificar as informações do db utilizado no projeto?
config/database.yml
O que é um generator? Dê exemplos.
O que é uma task?
É um gerador de código automático. Ex: scaffold (gera um CRUD), controller, view.
Uma task executa uma tarefa. Ex: rodar uma migration. Podemos ver todas as tasks com rails -T
O que é o Active Record?
O Active Record é é o M do MVC. O rails contém vários projetos/frameworks dentro dele, e o Active Record é o framework responsável por lidar com os dados no rails. O Active Record é também um padrão (especificações), e o framework é a implementação desse padrão. No rails, o Active Record é também o ORM.
O que é um ORM?
ORM: Object-Relational Mapping. Consegue converter/mapear os objetos/classes do Ruby em algo que o DB entenda e consiga interpretar para gravar, recuperar, etc (e vice-versa).
O que são as migrations?
São arquivos gerados pelo Active Record onde é especificado (em Ruby) como será a tabela no DB (não precisamos usar SQL diretamente). Pelos arquivos conseguimos saber a sequência de criação/alteração das tabelas do projeto. As migrations ficam localizadas em db/migrate. Sempre que criamos migrations, precisamos aplicar as mudanças no DD, e para isso, usamos algumas tasks predefinidas no Rails. Podemos saber também quais migrations já foram ou não aplicadas ao DB por meio do arquivo db/schema.rb.
O nome do model é sempre no plural e das tabelas, no singular. Está certa essa afirmação?
Não, é o contrário. A model é no singular, com letra maiúscula. As tabelas são no plural, com letra minúscula.
Qual o comando para acessar o DB?
rails dbconsole ou rails db
O que fazem as tasks abaixo:
rails db:create
rails db:drop
rails db:migrate
rails db:rollback
rails db:create #cria o db
rails db:drop #apaga o db
rails db:migrate #executa as migrations
rails db:rollback #desfaz a última migration
Quais são os ambientes em rails e onde podemos configurá-los?
Desenvolvimento (padrão), teste, produção.
Podemos configurar as gems para cada ambiente no Gemfile, e na pasta config/environments temos configurações gerais para cada ambiente. Em config/database.yml também temos configurações específicas do db para cada ambiente.
O ambiente de desenvolvimento é interessante para debugar aplicação, mostrar logs de erros. Já em produção não precisa mostrar os erros.
O que são as actions e o que é a action index?
Actions são os métodos dentro do controller, e a index é a action padrão. Ou seja, quando acessamos a rota padrão, estamos invocando a action index, disparando na sequência o arquivo da view com o mesmo nome.
O que é ERB?
Significa Embedded Ruby, é um sistema de templates para o Ruby. Permite trabalhar com textos, html e expressões Ruby.