Como foi o Encontro em março!
Finalmente voltamos à ativa depois de um longo período ‘de férias’. Esperamos que esse encontro de hoje seja o primeiro de muito outros novos encontros.
O encontro em si foi muito bom! Tivemos várias rostos novos, diria que a maioria. O assunto principal girou em torno do tema sugerido pelo Luciano que foi Melhoria de performance em queries, mas na verdade acabamos falando de melhorias em performance de uma forma geral. O formato de palestras é legal, mas acho muito mais importante o bate-papo e troca de experiência entre os participantes.
Ruby 2.3.0 performance
Dando início ao primeiro tópico falado, listo o post do Alexander Dymo falando sobre alguns benchmarks do ruby 2.3.0 comparado com o ruby 2.2.3. O site referenciado tem outros posts bem interessantes sobre performance do ruby que valem a pena dar uma olhada.
Virtual box / Ruby installer
Seguindo com o relato, o Jonathan perguntou se existia alguma forma melhor de usar o ruby numa máquina Windows. Ele usa numa máquina virtual Virtual Box com linux, pois ainda não domina Linux o suficiente para deixar como seu S.O. principal. Nossa recomendação foi continuar com essa configuração pois apesar de ter o recurso do ruby installer, a maioria dos tutoriais, posts e artigos são feitos num ambiente UNIX, logo, é melhor ir se ambientando com Linux ou Mac. Foi comentado também sobre opções de desenvolvimento em ambientes virtuais, onde não há a necessidade de configurar nada. Não posso falar muito pois não tenho experiência no assunto, mas de toda forma, é bom para o desenvolvedor se ambientar e dominar seu ambiente de trabalho. Preparar a máquina para trabalhar, instalando o ruby, as bibliotecas necessárias e até mesmo configurando o seu editor preferido são tarefas que TODO o desenvolvedor deve fazer.
Algumas gems para análise de performance
Voltando com o tema de performance, vimos algumas gems que fazem análise e mostram o que pode ser melhorado no código, como a fasterer gem, a fast-ruby
, ruby-prof e stack-prof.
Palestra da Eileen Uchitelle na GURUCO 2015
Essa palestra foi altamente recomendada e pode ser assistida na íntegra através do site do Confreaks. Os slides da palestra da Eileen também estão disponíveis. Vale comentar que a Eileen trabalha no Basecamp e ficou com a ‘simples’ tarefa de melhorar a performance do Basecamp (produto).
Arel
O Vagner Zampieri, fez uma breve apresentação do uso do Arel nas queries do MyFinance. E ficou de falar sobre “Rails Query Security”, mas pelo menos compartilhou o link.
Gem Bullet
Durante o papo de performance, foi lembrado da clássica gem Bullet que ajuda a buscar queries N+1.
RTFM
Voltando ao papo de performance, o bom e velho Rails Guides nos mostrou o que porquê devemos usar find_each
ao invés de all
quando for processar todos os registros de um modelo Active Record. No mesmo guides também tem uma seção destinada exclusivamente ao upgrade de versões do Rails. Muito bom!
Análise dos testes mais lentos
Uma boa dica compartilhada foi o uso do argumento -p
, usado no RSpec para mostrar os testes mais lentos.
Performance do Ruby
Leitura recomendada sobre performance do ruby
Ferramentas para análise de qualidade de código
Falamos sobre o Code Climate, a versão semelhante dele, porém open source, chamada Metric-fu e uma gem que mostra possíveis code smells chamada Reek.
Livros recomendados
Até a próxima!
Abraços, Rafael B. Tauil