Usando a versão mais recente jóia independentemente da fonte
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?
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.