Verificando a versão do Ruby no prompt do Bash
Publicado em Developer
bash prompt ps1 ruby rvm __ruby_ps1
Volta e meia depois de instalar a RVM eu fazia alguma caquinha misturando as versões do Ruby estando em uma e achando que estava em outra, mas agora dei um jeito de me deixar atento, mesmo em ambientes que não tem a RVM instalada, somente alguma versão do Ruby. Depende do servidor que pipoca aqui nos terminais via SSH, é importante ficar de olho também para não fazer alguma caca.
Inspirado na funcão __git_ps1, eu fiz uma função para o Bash indicar qual a versão do Ruby atualmente em uso e utilizei para mostrar no prompt. A função __ruby_ps1 está nesse arquivo, cujo conteúdo mostro abaixo:
__ruby_ps1 () { if [ -e ./app/controllers/application_controller.rb ] || [ "$(find -maxdepth 1 -name '*.rb' | head -n1)" != "" ]; then rst=$(ruby -v | cut -f1-2 -d' ') fmt="%s" if [ -n "$1" ]; then fmt="$1" fi printf "$fmt" "$rst" fi }
A função detecta se você está em algum diretório com algum arquivo *.rb ou na raiz de uma app Rails, procurando pelo arquivo ./app/controllers/application_controller.rb, o que já me quebra um bom galho, mas que talvez seja alterado mais tarde.
Gravei esse conteúdo em um arquivo chamado ruby-version.bash, fiz um source dele dentro do meu .bashrc e alterei o meu prompt, inserindo o seguinte conteúdo, para me mostrar a versão em fundo vermelho e letras brancas em negrito:
PS1='\e[41m\e[1;37m$(__ruby_ps1 " %s ")\[\e[0m'
E deu nisso aqui:
Atualizado:
O @nuxlii fez essa versão pegando o valor da RVM e eu adaptei nessa daqui. Se alguém tiver mais alguma, manda aí. :-)
Atualizado:
Fiz uma nova versão que vai servir para qualquer caso, com a RVM instalada ou não e vai me quebrar o galho no desktop e nos servidores. O arquivo novo está aqui e, para o caso da RVM, dá para passar até os formatadores do rvm-prompt (como bem apontou o @rafaeldx7) a partir do segundo parâmetro, o primeiro sempre fica com a formatação do printf. Segue o código:
# First parameter is a bash printf formatting string # From second till fifth parameter, rvm-prompt format parameters __ruby_ps1 () { if [ ! -f ./Rakefile ] && [ "$(find -maxdepth 1 -name '*.rb' | head -n1)" == "" ]; then exit 1 fi if [ -f ~/.rvm/bin/rvm-prompt ]; then rst=$(~/.rvm/bin/rvm-prompt $2 $3 $4 $5) fi if [ -z "$rst" ]; then rst=$(ruby -v | cut -f2 -d' ') fi fmt="%s" if [ -n "$1" ]; then fmt="$1" fi if [ -n "$rst" ]; then printf "$fmt" "${rst}" fi }
E o exemplo de usar __ruby_ps1 " %s " i v, sem e com a RVM:
Comentários
Comentários fechados.
Artigos anteriores
- Pull requests em modo raiz - sex, 22 de dezembro de 2023, 09:57:09 -0300
- Qual a idade do seu repositório? - ter, 27 de dezembro de 2022, 12:50:35 -0300
- Utilizando ctags em projetos Rails mais recentes - qui, 24 de junho de 2021, 08:23:43 -0300
- Fazendo o seu projeto brotar - seg, 15 de julho de 2019, 08:57:05 -0300
- Learn Functional Programming with Elixir - sex, 02 de março de 2018, 18:47:13 -0300
- Ambiente mínimo - Driver Driven Development - qua, 23 de agosto de 2017, 15:15:03 -0300
- Ambiente mínimo - repositórios de código - dom, 16 de abril de 2017, 13:02:14 -0300
- Ambiente mínimo - terminal e navegador - dom, 02 de abril de 2017, 21:43:29 -0300
- Utilizando muitas gems no seu projeto? - sáb, 29 de outubro de 2016, 11:57:55 -0200
- Desenvolvedores e inteligência artificial - seg, 11 de julho de 2016, 09:09:38 -0300
massaa
parabens
abraco