Confusão de Rubygems, Bundler e RVM
-
25-09-2019 - |
Pergunta
Eu leio "Relacionamentos entre Rubygems, Bundler e RVM" antes de perguntar novamente.
Bem, existem muitas perguntas como essa, mas as pessoas que responderam dizem que trabalham com Rubygems, RVM e Bundler, e não explicaram como cada um deles funciona isoladamente.
Estou realmente confuso com a forma como os três funcionam isoladamente quando instalamos gemas.Por favor, não me diga como você trabalha, o que vai me ajudar, mas não vou saber o que acontece quando brincamos com eles.
Minha confusão pode ser dividida nessas questões.Onde uma gem é instalada quando:
- Só tenho Rubygems (sem RVM ou Bundler)?
- Rubygems e RVM estão instalados?
- Rubygems, RVM e Bundler estão instalados?
Por favor, ajude-me a entender essas coisas com recursos na web ou com suas respostas detalhadas.
Solução
- Para descobrir para onde as jóias estão sendo instaladas, execute
echo $GEM_HOME
em um terminal. - Ao usar o RVM, o GEMS é instalado na instalação do RVM à medida que muda $ gem_home. Corrida
echo $GEM_HOME
Agora mostraria um caminho para a instalação do RVM. - Quando o Bundler for adicionado à mistura, as gemas serão instaladas em
$GEM_HOME
, ou, se você especificar um caminho ao executarbundle install
será instalado nesse caminho. Para descobrir onde uma jóia está através do Bundler, você pode usarbundle show gemname
Para conseguir seu caminho completo.
Outras dicas
Usar gem env
para listar os caminhos da GEM em cada contexto.
Sem RVM gem env
relatará os caminhos da biblioteca do sistema GEM.
Com RVM gem env
relatará os caminhos da biblioteca de gem gerenciados pelo RVM.
O Bundler gerencia dependências de aplicativos e instala na biblioteca GEM em seu ambiente. Se você estiver usando o RVM + Bundler, o GEMS será instalado nos diretórios GEM gerenciados pelo RVM. Se você o estiver usando sem RVM, o Bundler instalará Gems nos diretórios do System Gem.
Para encontrar o caminho onde uma gem está instalada, use:
gem which gem_name
Para encontrar executáveis (como html2haml), use:
which executable_name
Para evitar digitar bundle exec html2haml
que é recomendado pela equipe Bundler, use meu empacotador rubygems gema.
Também estou tentando entender como funciona. O blog "Conselhos sobre o uso de Ruby, RVM, Passageiro, Rails, Bundler,… em Desenvolvimento"Me ajudou a ter uma visão geral melhor.
BTW, é uma tradução de um artigo francês, a versão francesa é melhor.