Extensões do ActiveSupport: datas e tempo
O curso percorre extensões do ActiveSupport do jeito que aparecem no código deste app. Começa pelo blank?, pelo present? e pelo presence, mostrando por que 0 conta como presente e false conta como vazio. Compara o Time.current com o Time.now e lê o código do Rails por trás deles. Explica o ActiveSupport::Duration e os helpers beginning_of_day, beginning_of_week e beginning_of_month nas queries de relatório. Trata também do to_sentence nas mensagens de erro. Fecha com o try e com a divisão entre o except do núcleo do Ruby e o except! do ActiveSupport.
O que você vai aprender
- ✓Como blank?, present? e presence tratam nil, strings, números, booleanos e coleções
- ✓Por que o Time.current devolve UTC num app Rails enquanto o Time.now usa o fuso local do servidor
- ✓Como o ActiveSupport::Duration funciona com .days, .hours e .ago, respeitando o calendário nas contas
- ✓Encaixar horários no começo do dia, da semana e do mês, inclusive com semanas começando no domingo
- ✓Transformar arrays de erros em texto legível com o to_sentence e suas opções de conector
- ✓Quando o try serve melhor que o &., e por que o except é do núcleo do Ruby e o except! é do ActiveSupport
blank? e present?: os dois casos que surpreendem todo mundo
O app/models/identity/user.rb, o model deste app:
Ler a aula completa grátis →Currículo
7 aulasblank? e present?: os dois casos que surpreendem todo mundo
A tabela-verdade do blank? em doze valores, o presence como alternativa e os casos surpreendentes de 0 e false.
Time.current contra Time.now, diferentes na máquina que os rodou
Por que Time.current e Time.now diferem em horas, e como o Rails define o Time.zone como UTC por padrão.
5.days é um objeto, não um inteiro: ActiveSupport::Duration
Por que 5.minutes é um objeto ActiveSupport::Duration, usado com .ago em guardas e em contas de calendário.
beginning_of_day, end_of_week, e a query de relatório deste app
Como as queries de relatório deste app encadeiam .ago em beginning_of_day, beginning_of_week e beginning_of_month, com semanas no domingo.
to_sentence: nove controllers transformando um array de erros em prosa
Como o to_sentence une arrays de erros em prosa, com vírgula de Oxford e conectores configuráveis pelo I18n.
try, e except: o que virou Ruby do núcleo
Como o try difere do &., e por que except é do núcleo do Ruby e except! segue no ActiveSupport.
Juntando tudo: extensões checadas contra o comportamento delas
Revisão dos seis métodos, cada um ligado a um arquivo deste app, e um desafio de blank? em Ruby puro.