Como dizer qual a versão de uma gem que um aplicativo de trilhos está usando

estou a investigar um aplicativo rails - o servidor prod tem duas versões de uma gem específica instalada, como é que posso dizer qual a versão que o aplicativo prod está a usar?

Author: Steve Brewer, 2009-10-25

12 answers

Nos carris 3 e 4, utilizar bundle show

Nos carris 2, {[1] } irá imprimir quais pedras preciosas, dependências e versões estão instaladas, congeladas, etc.

 152
Author: BJ Clark, 2013-12-04 16:09:45
Levei mais tempo do que o esperado para encontrar e classificar esta informação então eu queria postá-la aqui em um lugar para outros verem. Eu também queria esclarecer um pouco isso para Rails 3:
  • O programa / about foi substituído por rake about os detalhes são aqui . Se estiver interessado numa lista de todas as alterações da linha de comando para os carris 3, elas podem ser encontradas aqui.

  • rake gems não funciona nos carris 3. Em vez disso, deve usar bundle show

Como exemplo, pode gravar todas as versões das suas jóias num ficheiro para ver com:

gem list > all_gems.txt

E você pode ver que versões o seu aplicativo Rails está a usar com:

bundle show > project_gems.txt

Se usar um editor como o Vim, poderá usar facilmente o vimdiff para ver as alterações

 37
Author: SnapShot, 2011-11-29 15:19:20

Se usar o bundler, pode obter a versão de

bundle show [gemname]
 36
Author: Stina, 2011-11-18 20:39:16

No terminal

gem list | grep xxx

Ou

bundle show | grep xxx

Xxx deve ser substituído como nome gem que você vai procurar

 6
Author: rjackson, 2015-07-09 15:50:52

Provavelmente há uma maneira mais directa de descobrir isto, mas se carregar uma consola e necessitar de uma versão específica como esta:

gem 'RedCloth', '3.0.4'

Dir-lhe-á qual a versão que já está activada:

=> Gem::LoadError: can't activate RedCloth (= 3.0.4, runtime) for [], already activated RedCloth-4.2.2
 5
Author: gtd, 2009-10-25 17:42:18

Existe também uma lista em {[[0]}, localizada no directório raiz do seu aplicativo.

Por esta razão, deixo-o fora do meu ... Isto salvou-me mais de uma vez quando me esqueci de especificar a versão gem em GemFile, e uma gem foi actualizada com as alterações de quebra.
 5
Author: SooDesuNe, 2012-12-18 20:56:50

Tenta usar {[[0]}. O seu config/environment.rb também tem informações sobre ele.

No seu config/environment.rb pode especificar qual a versão de um determinado {[3] } que a aplicação deve usar. No entanto, se tiver várias versões de um gem instalado na sua máquina e não especificar a versão, a última versão dessa jóia será usada pela aplicação.

 4
Author: Waseem, 2009-10-26 05:15:48
gem list <gemname>

Mostrará todas as pedras preciosas correspondentes, por exemplo, se alguém fizer

gem list rack

Então a saída será a seguinte

*** LOCAL GEMS ***

rack (1.6.4)
rack-mount (0.6.14)
rack-test (0.6.3, 0.6.2, 0.5.7)
 3
Author: ImranNaqvi, 2015-10-07 07:54:08

script/about dir-lhe-ei quais as versões dos Core Rails e das gemas Rack que está a usar, mas nada mais. Idealmente, se você olhar em config/environment.rb, deve haver uma seção que se pareça com esta:

# Specify gems that this application depends on and have them installed with rake gems:install
# config.gem "bj"
# config.gem "hpricot", :version => '0.6', :source => "http://code.whytheluckystiff.net"
# config.gem "sqlite3-ruby", :lib => "sqlite3"
# config.gem "aws-s3", :lib => "aws/s3"
Com alguma sorte, o autor do aplicativo terá incluído todas as jóias e versões necessárias lá. No entanto, as versões são opcionais neste arquivo, e, em última análise, nada impede um desenvolvedor inexperiente de apenas bater um require 'rubygems'; require 'some_random_thing' no topo de qualquer arquivo dado.

Se vires isso a gem está sendo necessária, mas nenhuma versão é especificada, você pode digitar gem list para ver todas as versões de todas as jóias no sistema. Por padrão, ele estará usando o mais recente disponível.

 2
Author: John Hyland, 2009-10-25 21:39:49
bundle exec gem which gem_name

É provavelmente o que pode usar:

$› bundle exec gem which rails
/Users/xxxx/.rvm/gems/ruby-2.1.2@gemset/gems/railties-4.1.7/lib/rails.rb
 1
Author: JAR.JAR.beans, 2014-11-24 10:55:00

Tenta este para a gema local:

gem list gemname | grep -P '(^|\s)\Kgemname(?=\s|$)'

Se utilizar pacote:

bundle exec gem list gemname | grep -P '(^|\s)\Kgemname(?=\s|$)'
 0
Author: Sunil shakya, 2016-12-26 09:59:59

Em Gemfile , deve haver a resposta:

gem 'rails', '4.0.0.rc1'
 -8
Author: gprasant, 2013-05-17 11:05:00