Estou investigando um aplicativo rails - o servidor prod tem duas versões de uma gem específica instalada, como posso saber qual versão o aplicativo prod está usando?
ruby-on-rails
rubygems
Steve Brewer
fonte
fonte
Respostas:
No Rails 3 e Rails 4, use
bundle show
No Rails 2,
rake gems
imprimirá quais gems, dependências e versões estão instaladas, congeladas, etc.fonte
bundle show | grep gem_name
, faça , por exemplo, para bússola:bundle show | grep compass
Se você usa bundler, pode obter a versão de
fonte
bundle info [gemname]
lugar.Levei mais tempo do que o esperado para encontrar e classificar essas informações, então eu queria postá-las aqui em um lugar para que outras pessoas as vissem. Eu também queria esclarecer isso um pouco para Rails 3:
script / about foi substituído por
rake about
Os detalhes estão aqui . Se você estiver interessado, uma lista de todas as mudanças de linha de comando para Rails 3 pode ser encontrada aqui .rake gems
não funciona no Rails 3. Em vez disso, você deve usarbundle show
Por exemplo, você pode salvar todas as versões de suas joias em um arquivo para visualização com:
gem list > all_gems.txt
e você pode ver quais versões seu aplicativo Rails está usando com:
bundle show > project_gems.txt
Usando um editor como o Vim, você pode facilmente usar o vimdiff para ver as mudanças
fonte
Provavelmente existe uma maneira mais direta de descobrir isso, mas se você carregar um console e exigir uma versão específica como esta:
Ele dirá qual versão já está ativada:
fonte
No terminal
ou
Por exemplo:
fonte
Há também uma lista no
Gemfile.lock
, localizada no diretório raiz do seu aplicativo.Por isso deixo de
Gemfile.lock
fora do meu.gitignore
. Isso me salvou mais de uma vez quando esqueci de especificar a versão da gema noGemFile
, e uma gema foi atualizada com mudanças importantes.fonte
Tente usar
script/about
. Vocêconfig/environment.rb
também tem informações sobre isso.Em seu,
config/environment.rb
você pode especificar qual versão de um determinadogem
aplicativo deve usar. No entanto, se você tiver várias versões de umgem
instalado em sua máquina e não especificar a versão, a versão mais recente dessa gem será usada pelo aplicativo.fonte
Irá mostrar todas as joias correspondentes, por exemplo, se alguém fizer
Então, a saída será a seguinte
fonte
script/about
dirá quais versões das gemas principais do Rails e Rack você está usando, mas nada mais. Idealmente, se você olhar para dentroconfig/environment.rb
, deve haver uma seção semelhante a esta:Com alguma sorte, o autor do aplicativo terá incluído todas as gemas e versões necessárias. No entanto, as versões são opcionais neste arquivo e, em última análise, nada impede um desenvolvedor inexperiente de simplesmente colocar um
require 'rubygems'; require 'some_random_thing'
no topo de qualquer arquivo.Se você vir que uma gema está sendo necessária, mas nenhuma versão foi especificada, você pode digitar
gem list
para ver todas as versões de todas as gemas no sistema. Por padrão, ele usará o mais recente disponível.fonte
Provavelmente é o que você pode usar:
fonte
gem which gem_name
bundle show gemname Ie, para inventar você tem que escrever como
e imprimirá a versão gem atual.
fonte
experimente este para gema local:
Se você usar o pacote:
fonte
Na versão mais recente, usado
bundle show gem_name
fonte
Se você usa bundler, pode obter a versão usando:
fonte
No Gemfile, deve haver a resposta:
fonte
Gemfile
nem sempre declarará explicitamente um número de versão.