¿Qué significa tilde-greater-than (~>) en dependencias de gemas de Ruby? [duplicar]


Esta pregunta ya tiene una respuesta aquí:

¿Qué significa ~> en el contexto de Ruby gem depenedencies?

Por ejemplo, al abrir un proyecto heredado en el IDE de RubyMine, obtengo esto mensaje

Gems required for project are not attached:
arel (~> 2.0.2),
rspec-expectation (~> 2.5.0)...

He visto esta notación de tilde-mayor-que en otros lugares del mundo Ruby (no es específicos para RubyMine). ¿Tiene este operador un nombre distinto del ¿tilde-mayor-que ?

 125
Author: Steven Penny, 2011-03-02

4 answers

Significa "igual o mayor que en el último dígito", por lo que, por ejemplo, ~> 2.3 significa "igual a 2.3 o mayor que 2.3, pero menor que 3.0", mientras que ~> 2.3.0 sería media "igual a 2.3.0 o superior a 2.3.0, pero inferior a 2.4.0".

Se puede pronunciar como "aproximadamente mayor que".

§ Restricción de versión pesimista

 178
Author: sepp2k,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-15 08:17:01

Significa traer cualquier versión inferior igual o mayor que, pero no una versión mayor.

Así que por ejemplo arel (~> 2.0.2), utilizará (si está disponible) versiones

  • 2.0.2
  • 2.0.3
  • 2.0.? (mientras ? is > = 2)

Pero no usará 2.1.?

 2
Author: Augusto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-02 16:43:49

Según internet

Si una dependencia de RubyGem usa la sintaxis "~> 1.4.37", eso significa "una versión mayor o igual a 1.4.37, pero no 1.5 o superior." 1

En otras palabras, para que
arel puede ser 2.1 > version >= 2.0.2 y
rspec-expectation puede ser 2.6 > version >= 2.5.0.

 2
Author: ashays,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-02 16:53:19

Lo que esto significa es que está esperando una gema que sea la versión 2.0.2 o superior, pero no la 2.1 en el caso de arel (~> 2.0.2) Esto se hace ya que se supone que las personas no deben publicar cambios de sintaxis que rompan en revisiones menores. Así que arel 2.0.3 se espera que tenga correcciones de errores / estabilidad sobre 2.0.2

 1
Author: Michael Papile,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-02 16:46:12