Pergunta

Eu estou investigando um rails app -? O servidor prod tem duas versões de uma jóia específico instalado, como posso saber qual versão do aplicativo prod está usando

Foi útil?

Solução

Em Rails 3 e Rails 4, o uso bundle show

Em Rails 2, rake gems irá imprimir o gemas, dependências e versões estão instalados, congelados, etc.

Outras dicas

Se você usar bundler, então você pode obter a versão de

bundle show [gemname]

Ele me levou mais tempo do que o esperado para encontrar e classificar através desta informação, então eu queria publicá-la aqui em um lugar para que outros vejam. Eu também queria esclarecer isso um pouco para Rails 3:

  • script / cerca foi substituído por rake about Os detalhes são aqui . Se você está interessado uma lista de todas as alterações de linha de comando para Rails 3 eles podem ser encontrados aqui .

  • rake gems não funciona no Rails 3. Em vez disso você deve usar bundle show

Como um exemplo, você pode salvar todas as versões de suas jóias para um arquivo para visualização com:

gem list > all_gems.txt

e você pode ver o que as versões a sua aplicação Rails está usando com:

bundle show > project_gems.txt

Usando um editor como Vim você pode facilmente usar vimdiff para ver as alterações

Provavelmente há uma maneira mais direta de descobrir isso, mas se você carregar um console e requerem uma versão específica assim:

gem 'RedCloth', '3.0.4'

Ele irá dizer-lhe qual a versão já está ativado:

=> Gem::LoadError: can't activate RedCloth (= 3.0.4, runtime) for [], already activated RedCloth-4.2.2

Há também uma lista em Gemfile.lock, localizado no diretório raiz do seu aplicativo.

Por isso deixo Gemfile.lock fora do meu .gitignore. Isso me salvou mais de uma vez, quando eu esqueci de especificar a versão jóia em GemFile, e uma jóia foi atualizado com alterações significativas.

No terminal

bundle show [gem-name]
bundle show | grep [gem-name]

ou

gem list | grep [gem-name]

[gem-name] deve ser substituído o nome jóia que você vai procurar.

Tente usar script/about. Seu config/environment.rb também tem informações sobre ele.

Em seu config/environment.rb você pode especificar qual versão de um gem particular, a aplicação deve usar. No entanto, se você tiver várias versões de um gem instalado em sua máquina e você não especificar a versão, a versão mais recente do que gem será usado pelo aplicativo.

gem list <gemname>

Ela vai mostrar todas as pedras preciosas correspondentes por exemplo se alguém fazer

gem list rack

Em seguida, th saída será da seguinte forma

*** LOCAL GEMS ***

rack (1.6.4)
rack-mount (0.6.14)
rack-test (0.6.3, 0.6.2, 0.5.7)

script/about vai dizer o que versões dos Rails core e cremalheira gemas que você está usando, mas não qualquer outra coisa. Idealmente, se você olhar no config/environment.rb, deve haver uma seção que se parece com isso:

# 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 irá ter incluído quaisquer gemas e versões necessárias lá. No entanto, as versões são opcionais neste arquivo, e, finalmente, nada impede que um desenvolvedor inexperiente de apenas tapa uma require 'rubygems'; require 'some_random_thing' no topo de qualquer arquivo dado.

Se você ver que uma jóia está sendo exigido, mas nenhuma versão for especificada, pode escrever gem list para ver todas as versões de todas as pedras preciosas sobre o sistema. Por padrão, ele estará usando o mais recente disponível.

bundle exec gem which gem_name

É provavelmente o que você pode usar:

$› bundle exec gem which rails
/Users/xxxx/.rvm/gems/ruby-2.1.2@gemset/gems/railties-4.1.7/lib/rails.rb

tentar um presente para jóia local:

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

Se você usar o pacote:

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

show de pacote gemname Ou seja para conceber você tem que escrever como

bundle show devise

e vai printout a versão atual jóia.

Em Gemfile, deve haver a resposta:

gem 'rails', '4.0.0.rc1'
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top