Otimize o seu Bundler

em Artigos.

Se você já usou Ruby on Rails em algum projeto, fatalmente utilizou o Bundler e hoje trarei uma dica simples, porém, muito valiosa, principalmente para grandes projetos.

Para quem não sabe, o Bundler é um gerenciador de dependências de projetos Ruby e sua mágica consiste em baixar e instalar as dependências de seu projeto com um simples bundle install.

A dica está justamente aí: em um projeto muito grande, quando damos o bundle install, ele baixa todas as dependências – mas, o que poucos sabem, é que podemos rodar essas dependências de forma paralela, fazendo com o que o processo todo seja muito mais rápido.

Há duas maneiras de fazer o Bundler baixar as dependências paralelamente:

1- rodando sempre

bundle install –jobs=4 #4 são os núcleos do seu processador

2- ou configurando o Bundler para sempre rodar paralelamente

bundle config –global jobs 4

Se optar pela segunda forma, você rodará apenas o bundle install normal e ele sempre baixará paralelamente suas dependências. Para termos uma ideia da diferença, fiz um teste em um projeto que tenho dependência de 60 gems no Gemfile.

time bundle install –path=./gems –quiet –force –jobs=1

real    1m25.117s

user   0m22.408s

sys    0m2.484s

time bundle install –path=./gems –quiet –force –jobs=4

real    0m33.691s

user   0m19.100s

sys    0m2.172s

No exemplo podemos ver como foi mais rápido o bundle usando todos os processadores de minha máquina, baixando as dependências de forma paralela.

Caso você use Linux, ao invés de colocar o número de núcleos hard coded, você pode usar o $(nproc) no lugar do número fixo e obterá o mesmo resultado.

Além de baixar paralelamente, você também pode configurar outras variáveis do bundler atrás do arquivo de config ~/bundle/config

BUNDLE_JOBS: “4”

BUNDLE_WITHOUT: “production”

Caso queria dar uma olhada em todas as configs do bundler, confira o doc que é muito bom.

Gostou da dica e quer ver outras nesse estilo? Deixe um comentário. :)

Você também pode gostar