Posso encontrar gemas que são instaladas usando gem list
, mas isso não me mostra onde as gemas estão instaladas.
Como posso encontrar onde estão as gemas e como posso saber antes de instalar uma gema onde será instalada?
Use gem environment
para descobrir sobre o seu ambiente de gemas:
RubyGems Environment:
- RUBYGEMS VERSION: 2.1.5
- RUBY VERSION: 2.0.0 (2013-06-27 patchlevel 247) [x86_64-darwin12.4.0]
- INSTALLATION DIRECTORY: /Users/ttm/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0
- RUBY EXECUTABLE: /Users/ttm/.rbenv/versions/2.0.0-p247/bin/ruby
- EXECUTABLE DIRECTORY: /Users/ttm/.rbenv/versions/2.0.0-p247/bin
- SPEC CACHE DIRECTORY: /Users/ttm/.gem/specs
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-darwin-12
- GEM PATHS:
- /Users/ttm/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0
- /Users/ttm/.gem/ruby/2.0.0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /Users/ttm/.rbenv/versions/2.0.0-p247/bin
- /Users/ttm/.rbenv/libexec
- /Users/ttm/.rbenv/plugins/ruby-build/bin
- /Users/ttm/perl5/perlbrew/bin
- /Users/ttm/perl5/perlbrew/perls/perl-5.18.1/bin
- /Users/ttm/.pyenv/shims
- /Users/ttm/.pyenv/bin
- /Users/ttm/.rbenv/shims
- /Users/ttm/.rbenv/bin
- /Users/ttm/bin
- /usr/local/mysql-5.6.12-osx10.7-x86_64/bin
- /Users/ttm/libsmi/bin
- /usr/local/bin
- /usr/bin
- /bin
- /usr/sbin
- /sbin
- /usr/local/bin
Observe as duas seções para:
INSTALLATION DIRECTORY
GEM PATHS
GEM PATHS
são usados apenas o primeiro. Isso está certo?gem env
para o shortEXECUTABLE DIRECTORY
.EXECUTABLE DIRECTORY
contém as versões executáveis da CLI instaladas pelas gemas, mas não são as próprias gemas.Achei útil obter uma localização do arquivo da biblioteca com:
fonte
gem which 'logstash/inputs/tcp.rb'
Depois de instalar as gemas, se você quiser saber onde está uma gema específica. Tente digitar:
Você poderá ver a lista de gemas que instalou. Agora use
bundle show
e nomeie a gema para a qual deseja conhecer o caminho, desta forma:fonte
Could not locate Gemfile or .bundle/ directory
.gem env
) mostra apenas a pasta pai para agems
pasta:/home/test/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0
. Há várias pastas dentro dela e sua jóia pode estar localizada em quase qualquer uma delas - é isso quebundle show <gemName>
mostra exatamente (egem env
) não.Para concluir outras respostas, a gema gem-path pode encontrar o caminho de instalação de uma gema específica.
Instalação:
Uso:
Isso é realmente útil, pois você pode usá-lo para grep ou editar arquivos:
fonte
Você pode verificá-lo no prompt de comando executando
gem help commands
e selecionando o comando apropriado:Agora, pelo exposto, posso ver que o comando
environment
é útil. Então eu faria:Finalmente, para mostrar o que você pediu, eu faria:
fonte
gem help commands
. E eu deveria ter escrito que estou usando rbenv.Você pode enganar
gem open
para exibir o caminho da gema:Exemplo:
Simplesmente funciona, e nenhuma joia de terceiros é necessária.
fonte
-e
opção (-e echo
), se for mais fácil do que definir uma variável de ambiente.gem env
funciona exatamente comogem environment
. Economiza digitação.fonte
gem help commands
retornos " Os comandos podem ser abreviados, desde que sejam inequívocas. por exemplo, 'jóia i ancinho' é a abreviação de 'gem install ancinho'. " Em outras palavras,gem environment
,gem env
egem e
todo o trabalho, masgem environment
é auto-documentado para aqueles que não sabem o que está fazendo, devemos usar isso para iniciantes.As
gem env
listas onde as gemas podem ser instaladas, mas podem ser 10 ou mais locais. Se você deseja saber onde uma jóia específica está instalada, você pode executar:Exemplo de saída:
fonte
se você estiver usando a ferramenta rvm, poderá executar este comando para imprimir o caminho da gema:
OU
fonte
Isso funciona e fornece o caminho instalado para cada gema. Isso é super útil ao tentar criar docker de vários estágios. É possível copiar na instalação pós-pacote configurável do diretório específico.
bash-4.4# gem list -d
Resultado::
fonte