/ / Usando la versión más reciente de la gema, independientemente de la fuente: ruby, rubygems, github

Usando la versión más reciente de la gema independientemente de la fuente: ruby, rubygems, github

¿Puedo pedirle a ruby ​​o rubygems que usen la última gema independientemente de su origen?

Como se menciona en la actualización de esta pregunta, resulta que ruby ​​está utilizando una gema github más antigua (hmcgowan-roo 1.3.5) sobre una gema de rubyforge más reciente que se instaló más recientemente (roo 1.3.6).

Mi sospecha es que el pixie mágico (ya sea ruby ​​o rubygems) se ve debajo de "h" antes de mirar debajo de "r".

Puedo forzar el rubyforge a ser usado haciendo

gem "roo"

pero ¿es posible decirle a ruby ​​/ rubygems que estoy feliz de usar hmcgowan-roo o roo, pero quiero la última versión?

Respuestas

1 para la respuesta № 1

No, no hay manera por desgracia. En lo que respecta a RubyGems, no son la misma gema, por lo que RubyGems no puede determinar automáticamente cuál es la versión más reciente. A los efectos de la paranoia, la línea requerida debe considerarse no determinista si no hay una llamada al método de gema y tiene instaladas varias versiones de la misma biblioteca.

En general, desea que sus llamadas al método de gemade todos modos, se ubicará en un lugar diferente al de sus requisitos (esto permite que los archivos se carguen de forma perezosa), por lo que es perfectamente razonable tener un archivo actualizado con frecuencia que solo ejecute un montón de llamadas al método de gemas para asegurarse de que Conseguí la versión correcta de todo. Además, en producción, por lo general, no quiere "darme la última versión" porque la última versión puede haber cambiado su API o haber cambiado el nombre a algunos métodos o similares, y si no la ha probado, no lo hace. saber si se va a romper. Siempre debe asegurarse de que está utilizando una versión específica conocida para trabajar de cada biblioteca de terceros.

Como autor de bibliotecas, generalmente doy a la gente sobreuna o dos versiones de heads-up si voy a realizar cambios que romperán el uso más antiguo de la API. Sin embargo, a veces las personas no se actualizan por un tiempo y quedan atrapadas por esto. Afortunadamente la mayoría de las personas son cuidadosas, y escenifican cosas. No seas el tipo que actualiza las bibliotecas directamente en producción sin probarlas. :-)


0 para la respuesta № 2

Posiblemente podrías usar el método de gema para especificar cuál quieres.

Manual de RubyGems - Capítulo 4