O que vamos aprender?
Código mal feito, bagunçado, repleto de bugs e de díficil manutenção pode ser escrito em qualquer linguagem. Ruby diminui a incidência destes problemas, mas criar projetos Rails sem o conhecimento adequado da linguagem Ruby trará de volta estes terríveis problemas.
Você precisa saber quando usar determinadas técnicas para manter seu código Ruby (e consequentemente Rails) em boa forma, magro, organizado e sem repetições. Você precisa conhecer as dezenas de recursos que a linguagem Ruby provê para a criação de projetos excelentes.
Neste curso você irá aprender Ruby além do conhecimento inicial de Rails que as pessoas possuem. O objetivo é entender exatamente como os pontos principais da linguagem funcionam. Criando proficiência em Ruby você será capaz de aplicar em seus projetos os mesmos recursos que tornaram o Rails uma ferramenta de sucesso.
Vamos desmistificar a complexidade e a "magia" de temas como Metaprogramação, DSL's, criação de Gems e extensão do Rails. Através destes conceitos você estará apto a entender o código de qualquer projeto e tirar proveito de técnicas para aumento real de produtividade e manutenção.
Através de diversas situações reais nós vamos identificar problemas comuns e entender como uma boa prática deveria substituir a complexidade desnecessária. Você entenderá quais são os sinais de um sistema com uma boa arquitetura e como criar algo elegante seguindo esta linha através de ferramentas do Rails e também do Ruby.
Grade detalhada
- Ruby Object Model
- A verdade sobre programação orientada a objetos
- Os segredos para identificar o “self”
- Method Lookup
- Superclass e Metaclass
- Eigen Class ou Ghost Class
- A verdade sobre o que são classes
- Métodos de classe não existem
- A verdade sobre os módulos
- Usando módulos da forma correta
- Metaprogramação
- Mágica é para os fracos, entenda o que é metaprogramação
- Importância da reflexão
- Compreendendo o que são e as diferenças entre blocos, proc e lambda
- Entendendo corretamente o escopo e como alterar o self
- Família “eval”
- Classes Abertas
- Criando métodos em runtime
- Criando classes em runtime
- method_missing
- Hooks do Ruby
- Exemplos reais sobre metaprogramação
- Ruby DSL’s
- Entendendo o que são DSL’s
- DSL’s internas em Ruby
- Importância de DSL’s para melhor o design do software
- Técnicas mais comuns para criação de DSL’s
- Exemplos práticos de DSL’s (ex.: Whenever, rotas do Rails, delayed_job e etc)
- Ruby best pratices
- Como diferenciar um bom design e de um ruim
- Evitando erros comuns em manutenção
- Aprendendo conceitos de um design S.O.L.I.D
- Refactoring na prática (usando Ruby 1.9 e MiniTest)
- Forwardable
- Delegate
- Comparable
- Enumerable
- Parâmetros nomeados
- Expressões condicionais
- Convenções do Ruby
- Rails Best Pratices
- Boas práticas em desenvolvimento Rails
- Como organizar sua aplicação pensando no futuro
- Restful como ferramenta de design e não apenas para API’s
- Refatorando controllers
- Refatorando Views
- Refatorando Models
- Rails Best Pratices
- Controllers magros
- Models gordos
- Single Responsibility em Models
- Princípio do menor conhecimento
- R.E.S.T para arquitetura de software
- Rotas saudáveis
- DRY com metaprogramação
- Módulos para repetição
- Composição
- Callbacks em Observers
- Índices em Migrations
- Alimentação do banco com Seeds
- Sempre mantenha um rollback em Migrations
- Separação de lógica das views
- Técnicas avançadas com partials e layouts
- Refatorando forms com FormBuilders
- Gems
- O que são realmente Gems
- Erros graves ao escolher uma Gem
- Como ler uma Gem
- Importância de se criar Gems
- Criando uma Gem na prática