Como instalar uma versão específica de uma gema rubi?

884

Usando a gemferramenta de linha de comando, como posso instalar uma versão específica de uma gema?

mjs
fonte

Respostas:

1158

Use a -vbandeira:

$ gem install fog -v 1.8
mjs
fonte
60
Se, como eu, você instalou uma versão mais recente da sua gem, você deve desinstalar a versão mais recente com, por exemplo gem uninstall fog. Ele perguntará qual versão desinstalar se você tiver mais de uma.
Dizzley
3
Eu tenho 3 versões do rake: gem list | grep rake= rake (10.1.1, 10.1.0, 0.8.7).. eu tenho um projeto rails 2.3.5 e outro que é 3.0 no qual estou trabalhando ao mesmo tempo .. como usar uma versão específica do rake para cada projeto (ou seja, sob comando )
abbood 13/03
@abbood rake _10.1.1_ ...deve funcionar, para quem quiser saber :)
Koen.
Vale ressaltar que isso não parece afetar os binários executáveis. A desinstalação da versão anterior funcionou para os binários.
Ciro Santilli escreveu:
Mais uma vez, desejando poder fazer vários upvotes. Talvez se eles tivessem que ser separados por pelo menos um ano. :)
Don Branson
192

Use o --versionparâmetro (atalho -v):

$ gem install rails -v 0.14.1

Você também pode usar comparadores de versão como >=ou~>

$ gem install rails -v '~> 0.14.0'

Ou com versões mais recentes do gem mesmo:

$ gem install rails:0.14.4 rubyzip:'< 1'

Successfully installed rails-0.14.4
Successfully installed rubyzip-0.9.9
schmijos
fonte
Isso funcionou para ~>, mas e se você tiver o tipo de situação '<0,9,> = 0,7'? Tentei aplicar dois argumentos v e parece que o primeiro foi ignorado. Usar o separador a vírgula nem analisaria. Acabei removendo o requisito maior que e instalou uma versão aceitável, mas ter uma solução formal seria bom.
Joseph Coco
O que significa o comparador de versões ~>?
Dragas
Isso significa que o último dígito está autorizado a crescer ( stackoverflow.com/questions/5170547/… )
schmijos
93

Para instalar gem install gemname -v versionnumber

Para desinstalar gem uninstall gemname -v versionnumber

Emjey
fonte
80

para Ruby 1.9+, use dois pontos ..

gem install sinatra:1.4.4 prawn:0.13.0
Kokizzu
fonte
qual jóia (e qual versão) você está tentando instalar?
Kokizzu
por favor me diga a saída gem sources, se ele está vazio, adicionar um repositório usando este comando:gem sources -a https://rubygems.org/
Kokizzu
meus gem -vshows 1.8.23contra o seu 2.2.2. Parece que este recurso é novo :)
kolypto
O Ruby 1.8 já é o fim do suporte ruby-lang.org/en/news/2013/06/30/we-retire-1-8-7
Kokizzu
24

Como outros observaram, em geral use o -vsinalizador para o gem installcomando.

Se você estiver desenvolvendo uma gema localmente, depois de cortar uma gema do seu gemspec:

$ gem install gemname-version.gem

Supondo a versão 0.8, ficaria assim:

$ gem install gemname-0.8.gem
thelostspore
fonte
3
Ótima resposta. Eu sugiro que você adicione outro bloco de código para a opção "-v" do sinalizador. Enquanto meus olhos liam a resposta, eles foram imediatamente para os blocos de código e não para o texto ao seu redor. Se outros fizerem o mesmo, perderão a parte "-v".
CamHart
8

Linux

Para instalar uma versão diferente do ruby, verifique a versão mais recente do pacote usando apto seguinte:

$ apt-cache madison ruby
      ruby |    1:1.9.3 | http://ftp.uk.debian.org/debian/ wheezy/main amd64 Packages
      ruby |        4.5 | http://ftp.uk.debian.org/debian/ squeeze/main amd64 Packages

Em seguida, instale-o:

$ sudo apt-get install ruby=1:1.9.3

Para verificar qual é a versão atual, execute:

$ gem --version # Check for the current user.
$ sudo gem --version # Check globally.

Se a versão ainda estiver antiga, você pode tentar mudar a versão para nova usando o ruby ​​version manager ( rvm):

rvm 1.9.3

Nota: Você pode prefixar sudose rvmfoi instalado globalmente. Ou execute /usr/local/rvm/scripts/rvmse seu comando rvmnão estiver no seu global PATH. Se o processo de instalação do rvm falhar, consulte a seção de solução de problemas.


Solução de problemas:

  • Se você ainda possui a versão antiga, pode tentar instalar o rvm (ruby version manager) via:

    sudo apt-get install curl # Install curl first
    curl -sSL https://get.rvm.io | bash -s stable --ruby # Install only for the user.
    #or:# curl -sSL https://get.rvm.io | sudo bash -s stable --ruby # Install globally. 

    se instalado localmente (apenas para o usuário atual), carregue o rvm via:

    source /usr/local/rvm/scripts/rvm; rvm 1.9.3

    se globalmente (para todos os usuários), então:

    sudo bash -c "source /usr/local/rvm/scripts/rvm; rvm 1.9.3"
  • Se você ainda está tendo problemas com a nova versão do ruby, tente instalá-la pelo rvm via:

    source /usr/local/rvm/scripts/rvm && rvm install ruby-1.9.3 # Locally.
    sudo bash -c "source /usr/local/rvm/scripts/rvm && rvm install ruby-1.9.3" # Globally.
  • se você quiser instalar algumas gemas globalmente e já tiver o rvm instalado, tente:

    rvmsudo gem install [gemname]

    ao invés de:

      gem install [gemname] # or:
      sudo gem install [gemname]

Nota: É preferível NÃO usar o sudo para trabalhar com gemas RVM. Ao executar o sudo, você está executando comandos como root, outro usuário em outro shell e, portanto, toda a configuração que o RVM fez para você é ignorada enquanto o comando é executado no sudo (como GEM_HOME, etc ...). Então, para reiterar, assim que você 'sudo' estiver executando como usuário do sistema raiz, que limpará seu ambiente, bem como quaisquer arquivos criados por ele, não poderão ser modificados pelo usuário e resultarão em coisas estranhas.

kenorb
fonte