Ao iniciar os estudos em novas tecnologias é costumeiro existir alguns problemas, coisas que normalmente você não percebe, pois é algo que provavelmente já está no automático.
Hoje vamos falar do bundle que é muito utilizado na linguagem Ruby para gerenciar gems.
Para programadores que utilizam Ruby todos os dias, isso já está no automático e então passa despercebido. Ao trocar o ambiente de desenvolvimento para Docker e ter a necessidade de utilizar do bundle para atualizar as gems, se deparam com um erro:
Don't run Bundler as root. Bundler can ask for sudo if it is needed, and installing your bundle as root will break this application for all non-root users on this machine. You are trying to install in deployment mode after changing your Gemfile. Run `bundle install` elsewhere and add the updated Gemfile.lock to version control. If this is a development machine, remove the Gemfile freeze by running `bundle install --no-deployment`.
Então o programador já fica assim:
O que é?
Não se preocupe! Isso é apenas um bloqueio para que você não altere o arquivo Gemfile.lock. Por exemplo, acabar adicionando uma nova gem, ou uma gem que você não bloqueou, atualize.
Por que isto acontece?
Então você deve pensar se a gem deverá ser atualizada, ou não. Se o criador da gem não tomar devido cuidado com o aumento de versão da gem, ela poderá quebrar toda sua aplicação e esse bloqueio vai te alertar de uma possível atualização. Você vai verificar o que está acontecendo e, então, prosseguir com menos chances deste problema te afetar no futuro.
Como resolver?
Para resolver, você pode rodar dentro do container Docker o comando:
bundle config frozen 0
Aqui você define o desbloqueio do Gemfile.lock. Mas não esqueça que, se você destruir o container Docker e recria-lo, você terá que desbloquear novamente o Gemfile.lock executando o comando novamente, pois o container Docker é imutável. Se você utiliza do docker-compose então no arquivo Dockerfile você poderá colocar apenas uma linha de código para executar sempre que criar o container.
RUN bundle config --global frozen 0
Assim você não vai mais esbarrar com este bloqueio.
Gostou? Então não perca nenhum post, assine nosso blog!