Sobre esse livro
- Contato
- Convenções utilizadas
O que é Rails
- Princípios
- DRY
- ORM
- MVC
- Instalando
- Criando o projeto
- Tem IDE?
- Precisamos de um runtime JavaScript!
- Estrutura de arquivos e diretórios criada
- Rake
- Rack
- Ambientes do Rails
- Iniciando o servidor
- Spring
Começando a construir a aplicação
- Pluralização
- Criando o primeiro scaffold
- Migrations
- Asset pipeline
- Configurando a timezone da aplicação
- Active Record
- Logger
- Verificando alterações no objeto
- Testes unitários
- Fixtures
- Configurando o teste unitário
- Traduzindo
- Testes funcionais
- Controllers
- Callbacks nos modelos
- Métodos e escopos no modelo
- ActiveSupport
- Helpers
- Controladores e sessões
- Testes de sistema
Roteamento e REST
- Roteamento
- REST
- Restringindo acesso com sessões e callbacks de controlador
- Refatorando um pouco os controladores
Views e layouts
- Usando layouts diferentes
- Tomando mais cuidado ainda com o mass-assignment
- Utilizando presenters
- Criando um controlador para o público
Associações entre modelos
- Associação do tipo um-para-um
- Associação do tipo um-para-muitos
- Associações de muitos para muitos
- Associações de muitos para muitos, através
- Acelerando as consultas nas associações
- Juntando joins e includes
- Pluck versus select
- Criando um outro tipo de associação um-para-um
Upload de arquivos
- Criando o modelo de imagem
- Adaptando as views e controllers, com imagem
- Redimensionando as imagens
- Criando uma associação polimórfica
- Criando um módulo compartilhado
- Movendo a lógica para o modelo
Interface pública da loja
- Strings seguras para HTML
- Markdown
Turbolinks
- Utilização
- Desabilitando
- Verificando o funcionamento
- Interagindo
Carrinho de compras
- Quantidade em estoque
- Configurando as sessões
- Criando o carrinho
- Comprando um produto
- Removendo um produto do carrinho, com Ajax
- Alterando a quantidade do produto, com Ajax
- Fechando o pedido
Travando registros na aplicação
- Optimistic Locking
- Pessimistic Locking
- Variáveis de ambiente
- Mailers
- Anexos
- Utilizando enums
- Criando um job para processamento em background
Enviando o processamento para background
- DelayedJob
- Resque
- Sidekiq
ActionCable
- O que é
- Criando o canal
- Criando o JavaScript
- Comunicando com o canal
Caching
- Ativando o caching em páginas
- Limpando o cache
- Russian Doll caching
- HTTP caching
- Paginação
Busca e autocomplete
- Utilizando o autocomplete do jQuery
- Adaptando a rota e o controlador
- Implementando a busca no modelo
- Buscas com LIKE?
API
- Versionando
- Permitindo
- Autenticando
- Limitando
Deploy
- Sistema operacional
- SSH
- RVM
- Servidor web e módulo para aplicações Rails
- Usuário no servidor
- Configurando o servidor
- Configurando o banco de dados
- Configurando o método de login no servidor
- Configurando o método de deploy
- Configurando deploy com uma ferramenta automatizada
- Tomando conta dos seus logs
Sass
CoffeeScript
Extras
- MiniTest
- Guard
- FactoryBot
- Capybara
- SimpleCov
- Brakeman
- Chartkick
- PaperTrail
- PaperClip
- CarrierWave
- Bootstrap
- Tmux
- ElasticSearch
- Apenas API
- Gerando um diagrama do banco de dados