Pergunta

Posso perguntar rubi ou rubygems de usar a mais recente jóia independentemente de sua origem?

Como mencionado na atualização para esta questão , verifica-se que Ruby é usando uma jóia github mais velhos (hmcgowan-roo 1.3.5) durante um gem rubyforge mais recente que foi instalado mais recentemente (roo 1.3.6).

Minha suspeita é que o pixy magia (ou rubi ou rubygems) aparência em "h" antes de olhar em "r".

Eu posso forçar o rubyforge para ser usado fazendo

gem "roo"

mas é possível dizer rubi / rubygems que estou feliz para usar hmcgowan-roo ou roo, mas eu quero a versão mais recente?

Foi útil?

Solução

Não, não há nenhuma maneira, infelizmente. Tanto quanto RubyGems está em causa, eles não são a mesma gema, de modo RubyGems é incapaz de determinar automaticamente qual é a versão mais recente. Para efeitos de paranóia, o requer linha deve ser considerado não-determinístico se não houver uma chamada para o método gem e você tem várias versões da mesma biblioteca instalada.

Em geral, você quer que as chamadas para o método de jóia para ser localizado em um lugar diferente do seu requer qualquer maneira (isto permite que os arquivos a ser preguiçoso-carregado), por isso é perfeitamente razoável ter um arquivo atualizado com freqüência que só executa um monte de chamadas para o método gem para garantir que você tem a versão correta de tudo. Além disso, na produção, você geralmente não quer fazer "me dar a versão mais recente", porque a versão mais recente pode ter mudado sua API ou renomeado alguns métodos ou similar, e se você não testei contra ela, você não sei se ele vai quebrar. Você deve sempre ser certificando-se de que você está usando um específico, versão conhecida ao trabalho de cada biblioteca de terceiros.

Como um autor biblioteca, eu costumo dar às pessoas sobre um ou dois heads-up versão se eu vou fazer as mudanças que vai quebrar a utilização mais antiga da API. No entanto, às vezes as pessoas não atualizar por algum tempo, e ser pego por este. Felizmente a maioria das pessoas são cuidadosos e estágio coisas. Não ser o cara que atualiza bibliotecas diretamente na produção sem testá-los. : -)

Outras dicas

Você poderia usar o método gem para especificar qual deles você deseja.

RubyGems Manual - Capítulo 4

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top