sexta-feira, 4 de junho de 2010

Qual versão do ruby estou usando?

Você usa o rvm e nunca sabe qual versão do ruby está em uso?

Seus problemas acabaram! =)

Adicione a seguinte linha no seu arquivo ~/.bashrc:

export PS1="\`ruby=\$(which ruby 1> /dev/null && ruby -v 2> /dev/null | grep -oP \"^.+?[0-9]+(\.[0-9]+)+\") && echo \"(\$ruby) \"\`$PS1"
Atualize o terminal:

$ source ~/.bashrc
E você poderá ter o seguinte:

$ ruby --version
O programa 'ruby' não está instalado atualmente. Você pode instalá-lo digitando:
sudo apt-get install ruby
$ rvm 1.8.7
(ruby 1.8.7) $ rvm rbx
(rubinius 1.0.0) $ rvm 1.4.0
(jruby 1.4.0) $ rvm 1.9.1
(ruby 1.9.1) $ rvm system
$

Legal não?!

Atualizado em 21/11/10

Nos comentários, o Rodrigo deu uma contribuição show sobre o gemsets do rvm.
Assim, se você quer também ver qual gemset está usando, adicone esse código no arquivo ~/.bashrc:

gemset(){
_gemset=`rvm gemset name 2> /dev/null | xargs`
[ -n "$_gemset" ] && echo "@$_gemset"
}

export PS1="\`ruby=\$(which ruby 1> /dev/null && ruby -v 2> /dev/null | grep -oP \"^.+?[0-9]+(\.[0-9]+)+\") && echo \"(\$ruby\$(gemset)) \"\`$PS1"

Com isso, você vai ter o seguinte:

$ rvm 1.9.2
(ruby 1.9.2) $ rvm gemset use rails3
Now using gemset 'rails3'
(ruby 1.9.2@rails3) $ rvm gemset clear
gemset cleared.
(ruby 1.9.2) $

Lembre-se apenas que essa linha deve ser a última que manipula a variável $PS1 no seu arquivo ~/.bashrc.

Valeu Rodrigo, pelas dicas de melhoria!

[]'s

6 comentários:

  1. Para mostrar também a gemset corrente:

    function gemset {
    test "$(rvm package 2> /dev/null | grep Usage)" && echo `rvm gemset dir 2> /dev/null | grep -oP @.+`
    }

    E onde tem

    (\$ruby)

    substitua por

    (\$ruby\$(gemset))

    ResponderExcluir
  2. Versão refatorada e corrigida:

    function has_rvm {
    test "$(rvm 2> /dev/null | grep Usage)"
    }

    function within_a_gemset {
    test "$(rvm gemset name 2> /dev/null | grep ".")"
    }

    function gemset {
    has_rvm && within_a_gemset && echo "@"`rvm gemset name 2> /dev/null`
    }

    ResponderExcluir
  3. Show de bola Rodrigo! O gemset do rvm é muito legal!

    Vou ver se consigo dar uma otimizada nas funções, pois o terminal fica um pouco mais lento adicionando elas, e vou atualizar o post.

    Abraço!

    ResponderExcluir
  4. Feito. O problema da lentidão é que o "rvm gemset name" é meio lentinho, mas ai não tem jeito. De qualquer forma, não é nada de mais =)

    [ ]'s

    ResponderExcluir
  5. Valeu a citação!!

    Quanto à lentidão, dá pra fazer com "rvm gemset dir" também. No primeiro comentário eu fiz com ele, mas o "rvm gemset name" mostra melhor a intenção. Eu não medi desempenho, mas se o gemset dir for mais rápido, acho que vale a mudança.

    ResponderExcluir
  6. pode usar direto $(rvm-prompt) que serve também. Mostra ruby-1.9.3-p194@gemset

    ResponderExcluir