¿Cuál es la diferencia entre ~> y> = al especificar rubygem en Gemfile?
Pregunta
A menudo ver la siguiente notación (~>) en Gemfile.
gem "cucumber", "~>0.8.5"
gem "rspec", "~>1.3.0"
Sé que el signo (> =) es mayor o igual a, pero lo que hace el (~>) notación media? Son ambos iguales o tiene alguna diferencia significativa?
Solución
Eso es un pesimista versión restricción . RubyGems aumentarán el último dígito de la versión proporcionada y el uso que hasta que alcanza un máximo de versión. Así ~>0.8.5
es semánticamente equivalente a:
gem "cucumber", ">=0.8.5", "<0.9.0"
La forma más fácil de pensar en ello es que estás de acuerdo con el último dígito de incrementar a un valor arbitrario, pero los que lo preceden en la cadena no puede ser mayor que lo que nos ha facilitado. Así, para ~>0.8.5
, cualquier valor es aceptable para el tercer dígito (el 5) siempre que es mayor que o igual a 5, pero el principal 0.8 debe ser "0,8".
Se puede hacer esto, por ejemplo, si usted piensa que la versión 0.9 se va a implementar algunos cambios de último momento, pero ya se sabe toda la serie de lanzamientos 0.8.x está a sólo correcciones de errores.
Sin embargo, el simple uso de ">=0.8.5"
indicaría que cualquier versión posterior que (o igual a) 0.8.5 es aceptable. No hay ningún límite superior.
Otros consejos
@millisami Incluso se puede utilizar para agregar dependencias con el uso de la restricción gemspec pesimista como esto:
gem.add_runtime_dependency "thor", "~> 0.18.1"
Si usted no sabe mucho sobre el desarrollo gema o se acaba de entrar en él, éstas son algunas referencias buenas: