¿Qué Ruby on Rails es compatible con qué versión de Ruby?

82

Tengo una antigua aplicación 2.1.1 Ruby on Rails, con el sistema actualizado para usar Ruby 1.8.7. Originalmente usó 1.8.5 más o menos.

Quiero actualizarlo a Ruby 1.9.x por razones de rendimiento, y posiblemente también a un Ruby on Rails más nuevo.

No puedo encontrar una tabla sencilla de compatibilidad entre las diferentes versiones de Ruby y las versiones de Ruby on Rails.

¿2.1.1 funcionará con Ruby 1.9.x? Si no es así, ¿hasta dónde necesito actualizarlo primero y qué tipo de problemas es probable que encuentre? Mi aplicación hace cosas complicadas en la capa de base de datos, pero el resto es bastante sencillo.

taw
fuente
No sé exactamente qué versión de Ruby on Rails funciona con qué Ruby, pero creo que la mejor manera de probar la compatibilidad de diferentes versiones es instalar RVM
Michał Czapko
Es poco probable que Rails 2.1.1 sea compatible con Ruby 1.9, ya que se sabía que Ruby 1.9.0 tenía muchos errores con Rails, y Ruby 1.9.1 se lanzó después de Rails 2.1.1.
Andrew Marshall
La última versión de Ruby que admite Rails 3.2.22.5 es Ruby 2.3.6 . Después de eso, deberás actualizar Rails a 4+.
Joshua Pinter

Respuestas:

106

Ésta es una pregunta antigua, pero el hecho de que los rieles se prueben con una versión de ruby ​​es una buena indicación de que debería funcionar en esa versión de ruby.

Desde el 9 de abril de 2019, las ramas estables de Rails utilizan Buildkite para pruebas automatizadas, y la lista de versiones de ruby ​​probadas, por rama de rails, es:

Rieles 6.0

  • >= 2.5.0

Rieles 5.2

Rieles 5.1

  • >= 2.2.2

Rieles 5.0

  • >= 2.2.2

Carriles 4.2

  • >= 1.9.3

Carriles 4.1

  • >= 1.9.3

Antes del 9 de abril de 2019, las ramas estables de Rails desde 3.0 usan travis-ci para pruebas automatizadas, y la lista de versiones de ruby ​​probadas, por rama de rails, es:

Carriles 3.0

  • 1.8.7
  • 1.9.2
  • 1.9.3

Carriles 3.1

  • 1.8.7
  • 1.9.2
  • 1.9.3

Rieles 3.2

  • 1.8.7
  • 1.9.2
  • 1.9.3
  • 2.0.0
  • 2.1.8
  • 2.2.6
  • 2.3.3

Carriles 4.0

  • 1.9.3
  • 2.0.0
  • 2.1
  • 2.2

Carriles 4.1

  • 1.9.3
  • 2.0.0
  • 2.1
  • 2.2.4
  • 2.3.0

Carriles 4.2

  • 1.9.3
  • 2.0.0-p648
  • 2.1.10
  • 2.2.10
  • 2.3.8
  • 2.4.5

Rieles 5.0

  • 2.2.10
  • 2.3.8
  • 2.4.5

Rieles 5.1

  • 2.2.10
  • 2.3.7
  • 2.4.4
  • 2.5.1

Rieles 5.2

  • 2.2.10
  • 2.3.7
  • 2.4.4
  • 2.5.1

Rieles 6.0

  • 2.5.3
  • 2.6.0

(De https://www.hmallett.co.uk/2018/08/ruby-and-ruby-on-rails-version-compatibility/ )

Hmallett
fuente
Gracias. Para su información, el formulario de comentarios en su sitio web no funciona, requiere correo electrónico pero no existe ese campo allí.
Ruan Carlos
1
La última versión de Rails es 5.2.3. Me pregunto si debería instalar Ruby 2.6.3 para él (la última versión)
Qasim
1
Hay tantos errores de dependencia al cambiar a Rails 4.1con ruby2.3.0
Vishwas Nahar
Rails 4.1 no puede ir más alto que Ruby 2.6.x
Joshua Pinter
46

Para versiones <3.2: http://www.devalot.com/articles/2012/03/ror-compatibility

Para versiones> = 4.0:

  • Rails 4 recomienda 2.0 (src: blog de Rails)
  • Rails 4.1 / 4.2 recomienda 2.1 (src: página de descarga anterior de Rails)
  • Rails 4.2.1 recomienda 2.2 (src: página de descarga anterior de Rails)
  • Rails 5.0 requiere 2.2.2+ ( blog de Rails )

Rieles 3.2

Intenté alejarme de esas recomendaciones (principalmente ejecutando Rails 3.0 en Ruby 2.0 y 2.1), encontré varios problemas extraños.

gamov
fuente
1
¿Podría explicar los extraños problemas con los que se encontró? Estamos intentando ejecutar rails 3.2.19 en ruby ​​2.1.5 y enfrentamos muchos errores extraños relacionados con las consultas generadas por ActiveRecord.
Sivakumar
Problemas similares a los suyos. Según recuerdo, también faltaban métodos y problemas de compatibilidad de gemas.
gamov
Rails 3.2.13 y versiones superiores admiten al menos Ruby 2.0: stackoverflow.com/a/25165358/3448554
Kelsey Hannan
@gamov, sus enlaces parecen estar rotos
Rick Smith
@RickSmith Sí, no hay más página de descarga con el rediseño del sitio Rails, gracias.
gamov
15

La Guía de Rails sobre la actualización de Ruby on Rails tiene una sección sobre las versiones de Ruby . Esta es probablemente la mejor fuente, ya que está controlada por el equipo central de Rails.

En agosto de 2016, la Guía de rieles dice:

1.3 Versiones de Ruby

Rails generalmente se mantiene cerca de la última versión de Ruby lanzada cuando se lanza:

  • Rails 5 requiere Ruby 2.2.2 o más reciente.
  • Rails 4 prefiere Ruby 2.0 y requiere 1.9.3 o más reciente.
  • Rails 3.2.x es la última rama que admite Ruby 1.8.7.
  • Los rieles 3 y superiores requieren Ruby 1.8.7 o superior. El soporte para todas las versiones anteriores de Ruby se ha eliminado oficialmente. Debe actualizar lo antes posible.
pdobb
fuente
1
Rails 5.1 anuncia soporte para ruby ​​2.4, así que supongo que eso significa que rails 5.0 no lo admite. Ver blog.michelada.io/whats-new-in-rails-51
iheggie
13

Es difícil encontrarlo en las notas de la versión. Después de buscar en Google durante algún tiempo, solo pude encontrarlo aquí http://www.devalot.com/articles/2012/03/ror-compatibility

Compatibilidad de versiones de Ruby Rails

crazycrv
fuente
7
Esto está bastante desactualizado ahora ... ya no confiaría en esto.
yekta
Sí, la tabla aquí está desactualizada, consulte mi respuesta actualizada.
gamov
Si prueba Rails 4 con Ruby 1.9.3, aparece un error que dice que necesita Ruby v 2.2.2 o superior
Hack-R
7

De la nota de lanzamiento de Rails 2.2: (no es exactamente el que solicitó)

Junto con la seguridad de subprocesos, se ha trabajado mucho para que Rails funcione bien con JRuby y el próximo Ruby 1.9. Con Ruby 1.9 como un objetivo en movimiento, correr edge Rails sobre edge Ruby sigue siendo una propuesta acertada o fallida, pero Rails está listo para hacer la transición a Ruby 1.9 cuando se lance este último.

Creo que Rails 2.1.1 no es compatible con Ruby 1.9, y estarías solo en ese entorno. Puede intentarlo si su traje de prueba es completo, por supuesto. Además, tendría que verificar todas las demás gemas utilizadas en el proyecto, lo que podría ser una verdadera molestia.

Si eliges seguir con esta versión de Rails, no migraría a 1.9.x. Como mencionó que preferiría actualizarlo, probablemente debería pasar por las obsoletas mencionadas en las notas de la versión de Rails 3.0 y adaptar su código. Se puede encontrar una lista resumida en los métodos y API obsoletos de Rails 3

Marcelo Diniz
fuente
En su mayoría, quiero Ruby 1.9 por razones de rendimiento, y quiero actualizar Rails lo menos posible mientras todavía puedo usar Ruby 1.9.x por ahora, ya que esto causará problemas. ¿Funcionará Rails 2.2 con Ruby 1.9?
taw
1
@taw Entonces prefiero actualizar a Rails 2.3. Según la nota de la versión , es compatible correctamente con Ruby 1.9.1
Marcelo Diniz
4

En general, hay dos lugares para comprobar si una plataforma Ruby es adecuada para su versión preferida de Rails.

  1. El anuncio de lanzamiento en el blog de Rails
  2. Las notas de la versión en el guides/sourcedirectorio (también en la web en Rails Guides y Github )

También puede resultarle útil mirar el .travis.ymlarchivo de su versión. losrvm entrada allí sugiere las versiones de Ruby con las que los desarrolladores podrían ejecutar pruebas automatizadas.

Naturalmente, use sus recomendaciones junto con sus propias pruebas.

dcorking
fuente
3

Rails Guides tiene información en "Introducción a Rails". Extraje información de cada versión de las guías:

Rails 3.2 - The Ruby language version 1.8.7 or higher
Rails 4.0 - The Ruby language version 1.9.3 or newer
Rails 4.1 - The Ruby language version 1.9.3 or newer
Rails 4.2 - The Ruby language version 1.9.3 or newer

Por lo que puedo decir, esto es lo más cercano a una fuente primaria que puede obtener para versiones mínimas . Consulte la respuesta de gamov para conocer las versiones recomendadas.

Rick Smith
fuente
1
Tenga cuidado con esto porque también hay una versión máxima de Ruby que una versión de Rails puede usar. Vea mi respuesta (por ejemplo, Rails <3.2.22 no es compatible con Ruby 2.2)
gamov
@gamov Gracias, he actualizado mi respuesta para indicar que estas son versiones mínimas.
Rick Smith
1

la primera respuesta aquí es bastante informativa, pero tengo un comentario sobre la compatibilidad de rails-4.2con ruby-2.4.5, ya que hay un problema que se muestra aquí , ese problema rails-2.4.8solo hace compatible con ruby-2.4+, cualquier otra versión de rails-2.4 no funcionará.

Ícaro
fuente
1

Todas esas páginas se quedan atrás del estado actual. Y la documentación en los documentos oficiales es vaga 'La versión en lenguaje Ruby ... o superior'. Si desea saber con qué versiones de Ruby se prueba la versión de Rails que le gustaría saber, verifique el Travis CI que está usando la comunidad de Rails. Aquí puede ver qué rama se prueba contra qué versión de Ruby.

Editar:

Como mencionó Hmallett, Rails ha cambiado a otra suite de pruebas. Se ha cambiado a cometa construida . Siempre puede verificar el estado del código en el repositorio de origen.

Smek
fuente
Travis CI no se ha utilizado para Rails desde el 9 de abril de 2019.
hmallett
Tiene razón, han cambiado a otro conjunto de pruebas. Edité mi respuesta.
Smek