Welcher Ruby on Rails ist mit welcher Ruby-Version kompatibel?

82

Ich habe eine alte 2.1.1 Ruby on Rails-Anwendung, deren System auf Ruby 1.8.7 aktualisiert wurde. Es wurde ursprünglich 1.8.5 oder so verwendet.

Ich möchte es aus Leistungsgründen auf Ruby 1.9.x und möglicherweise auch auf einen neueren Ruby on Rails aktualisieren.

Ich kann keine einfache Tabelle zur Kompatibilität zwischen verschiedenen Ruby-Versionen und Ruby on Rails-Versionen finden.

Funktioniert 2.1.1 mit Ruby 1.9.x? Wenn nicht, wie weit muss ich zuerst aktualisieren und auf welche Probleme kann ich wahrscheinlich stoßen? Meine Anwendung macht komplizierte Dinge mit der Datenbankebene, aber der Rest ist ziemlich einfach.

taw
quelle
Ich weiß nicht genau, welche Version von Ruby on Rails mit welchem ​​Ruby funktioniert, aber ich denke, der beste Weg, um die Kompatibilität verschiedener Versionen zu testen, ist die Installation von RVM
Michał Czapko am
Es ist unwahrscheinlich, dass Rails 2.1.1 Ruby 1.9 unterstützt, da Ruby 1.9.0 bekanntermaßen sehr fehlerhaft mit Rails ist und Ruby 1.9.1 nach Rails 2.1.1 veröffentlicht wurde.
Andrew Marshall
Die letzte von Rails 3.2.22.5 unterstützte Version von Ruby ist Ruby 2.3.6 . Danach müssen Sie Rails auf 4+ aktualisieren.
Joshua Pinter

Antworten:

107

Dies ist eine alte Frage, aber die Tatsache, dass Schienen gegen eine Version von Ruby getestet werden, ist ein guter Hinweis darauf, dass es mit dieser Version von Ruby funktionieren sollte.

Seit dem 9. April 2019 verwenden stabile Rails-Zweige Buildkite für automatisierte Tests. Die Liste der getesteten Ruby-Versionen nach Rails-Zweig lautet:

Schienen 6.0

  • >= 2.5.0

Schienen 5.2

Schienen 5.1

  • >= 2.2.2

Schienen 5.0

  • >= 2.2.2

Schienen 4.2

  • >= 1.9.3

Schienen 4.1

  • >= 1.9.3

Vor dem 9. April 2019 verwenden stabile Rails-Zweige seit 3.0 Travis-CI für automatisierte Tests. Die Liste der getesteten Ruby-Versionen nach Rails-Zweig lautet:

Schienen 3.0

  • 1.8.7
  • 1.9.2
  • 1.9.3

Schienen 3.1

  • 1.8.7
  • 1.9.2
  • 1.9.3

Schienen 3.2

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

Schienen 4.0

  • 1.9.3
  • 2.0.0
  • 2.1
  • 2.2

Schienen 4.1

  • 1.9.3
  • 2.0.0
  • 2.1
  • 2.2.4
  • 2.3.0

Schienen 4.2

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

Schienen 5.0

  • 2.2.10
  • 2.3.8
  • 2.4.5

Schienen 5.1

  • 2.2.10
  • 2.3.7
  • 2.4.4
  • 2.5.1

Schienen 5.2

  • 2.2.10
  • 2.3.7
  • 2.4.4
  • 2.5.1

Schienen 6.0

  • 2.5.3
  • 2.6.0

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

hmallett
quelle
Vielen Dank. Zu Ihrer Information, das Kommentarformular auf Ihrer Website funktioniert nicht, es erfordert eine E-Mail, aber es gibt dort kein solches Feld.
Ruan Carlos
1
Die neueste Version von Rails ist 5.2.3. Ich frage mich, ob ich Ruby 2.6.3 dafür installieren sollte (die neueste Version)
Qasim
1
Es gibt so viele Abhängigkeitsfehler beim Wechsel zu Rails 4.1Ruby2.3.0
Vishwas Nahar
Rails 4.1 kann nicht höher als Ruby 2.6.x sein
Joshua Pinter
46

Für Versionen <3.2: http://www.devalot.com/articles/2012/03/ror-compatibility

Für Versionen> = 4.0:

  • Rails 4 empfiehlt 2.0 (src: Rails Blog)
  • Rails 4.1 / 4.2 empfiehlt 2.1 (src: Rails ehemalige Download-Seite)
  • Rails 4.2.1 empfiehlt 2.2 (src: Rails ehemalige Download-Seite)
  • Für Rails 5.0 ist 2.2.2+ erforderlich ( Rails-Blog )

Schienen 3.2

  • 3.2.13 unterstützt Ruby - 2.0 ( Blog post )
  • 3.2.22 unterstützt Ruby - 2.2 ( Blog post )

Ich habe versucht, aus diesen Empfehlungen herauszukommen (hauptsächlich Rails 3.0 unter Ruby 2.0 und 2.1). Ich bin auf mehrere seltsame Probleme gestoßen.

Gamov
quelle
1
Können Sie bitte näher auf die seltsamen Probleme eingehen, auf die Sie gestoßen sind? Wir versuchen, Rails 3.2.19 auf Ruby 2.1.5 auszuführen, und es treten viele seltsame Fehler im Zusammenhang mit von ActiveRecord generierten Abfragen auf.
Sivakumar
Ähnliche Probleme wie bei Ihnen. Soweit ich mich erinnere, fehlten auch Methoden und Probleme mit der Edelsteinkompatibilität.
Gamov
Rails 3.2.13 und höher unterstützt mindestens Ruby 2.0: stackoverflow.com/a/25165358/3448554
Kelsey Hannan
@gamov Ihre Links scheinen gebrochen zu sein
Rick Smith
@RickSmith Ja, es gibt keine Download-Seite mehr mit der Neugestaltung der Rails-Site, danke.
Gamov
15

Das Rails-Handbuch zum Aktualisieren von Ruby on Rails enthält einen Abschnitt zu Ruby-Versionen . Dies ist wahrscheinlich die beste Quelle, da sie vom Rails-Kernteam kontrolliert wird.

Ab August 2016 lautet der Rails Guide:

1.3 Ruby-Versionen

Rails bleibt im Allgemeinen in der Nähe der neuesten veröffentlichten Ruby-Version, wenn sie veröffentlicht wird:

  • Für Rails 5 ist Ruby 2.2.2 oder neuer erforderlich.
  • Rails 4 bevorzugt Ruby 2.0 und erfordert 1.9.3 oder neuer.
  • Rails 3.2.x ist der letzte Zweig, der Ruby 1.8.7 unterstützt.
  • Für Schienen 3 und höher ist Ruby 1.8.7 oder höher erforderlich. Die Unterstützung für alle früheren Ruby-Versionen wurde offiziell eingestellt. Sie sollten so früh wie möglich aktualisieren.
pdobb
quelle
1
Rails 5.1 kündigt Unterstützung für Ruby 2.4 an, daher gehe ich davon aus, dass Rails 5.0 dies nicht unterstützt. Siehe blog.michelada.io/whats-new-in-rails-51
iheggie
13

Es ist schwierig, es in Versionshinweisen zu finden. Nachdem ich einige Zeit gegoogelt hatte, konnte ich es nur hier finden http://www.devalot.com/articles/2012/03/ror-compatibility

Ruby Rails-Versionskompatibilität

verrückt
quelle
7
Das ist jetzt ziemlich veraltet ... darauf würde ich mich nicht mehr verlassen.
Yekta
Ja, die Tabelle hier ist veraltet. Bitte lesen Sie meine aktualisierte Antwort.
Gamov
Wenn Sie Rails 4 mit Ruby 1.9.3 ausprobieren, erhalten Sie eine Fehlermeldung, dass Sie Ruby v 2.2.2 oder höher benötigen
Hack-R
7

Aus Rails 2.2 Versionshinweis: (nicht genau der, den Sie gefragt haben)

Neben der Thread-Sicherheit wurde viel Arbeit geleistet, damit Rails mit JRuby und dem kommenden Ruby 1.9 gut funktioniert. Da Ruby 1.9 ein sich bewegendes Ziel ist, ist das Ausführen von Edge Rails auf Edge Ruby immer noch ein Hit-or-Miss-Angebot, aber Rails ist bereit, den Übergang zu Ruby 1.9 vorzunehmen, wenn letzteres veröffentlicht wird.

Ich würde glauben, dass Rails 2.1.1 nicht mit Ruby 1.9 kompatibel ist und Sie in einer solchen Umgebung alleine wären. Sie können es natürlich ausprobieren, wenn Ihr Testanzug umfassend ist. Außerdem müssten Sie alle anderen im Projekt verwendeten Edelsteine ​​überprüfen, was ein echtes Problem sein könnte.

Wenn Sie sich für diese Rails-Version entscheiden, würde ich nicht auf 1.9.x migrieren. Wie Sie bereits erwähnt haben, würden Sie ein Upgrade vorziehen. Sie sollten wahrscheinlich die in den Versionshinweisen zu Rails 3.0 genannten Verwerfungen durchgehen und Ihren Code anpassen. Eine zusammengefasste Liste finden Sie in veralteten Methoden und APIs von Rails 3

Marcelo Diniz
quelle
Ich möchte Ruby 1.9 hauptsächlich aus Leistungsgründen und Rails so wenig wie möglich aktualisieren, während ich Ruby 1.9.x vorerst noch verwenden kann, da dies zu Problemen führen wird. Funktioniert Rails 2.2 mit Ruby 1.9?
Taw
1
@taw Dann würde ich lieber auf Rails 2.3 upgraden. Nach der Release-Info unterstützt es richtig Ruby - 1.9.1
Marcelo Diniz
4

Im Allgemeinen können Sie an zwei Stellen prüfen, ob eine Ruby-Plattform für Ihre bevorzugte Rails-Version geeignet ist.

  1. Die Release-Ankündigung im Rails-Blog
  2. Die Versionshinweise im guides/sourceVerzeichnis (auch im Internet unter Rails Guides und Github )

Möglicherweise ist es auch hilfreich, sich die .travis.ymlDatei Ihrer Version anzusehen . Dasrvm Eintrag schlägt die Ruby-Versionen vor, für die die Entwickler möglicherweise automatisierte Tests ausführen.

Verwenden Sie ihre Empfehlungen natürlich zusammen mit Ihren eigenen Tests.

entkorken
quelle
3

Rails Guides enthält Informationen unter "Erste Schritte mit Rails". Ich habe Informationen aus jeder Version der Anleitungen abgerufen:

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

Soweit ich das beurteilen kann, kommt dies einer Primärquelle so nahe, wie es für Mindestversionen möglich ist . Siehe Gamov Antwort für empfohlene Versionen.

Rick Smith
quelle
1
Seien Sie vorsichtig, da es auch eine maximale Ruby-Version gibt, die eine Rails-Version verwenden kann. Siehe meine Antwort (zB Rails <3.2.22 unterstützt Ruby 2.2 nicht)
Gamov
@gamov Danke, ich habe meine Antwort aktualisiert, um anzugeben, dass dies Mindestversionen sind.
Rick Smith
1

die erste Antwort hier ist sehr informativ, aber ich habe einen Kommentar über die Vereinbarkeit rails-4.2mit ruby-2.4.5, wie es ein Problem dargestellt ist hier , dass Problem macht rails-2.4.8nur kompatibel mit ruby-2.4+jeder anderen Version von Schienen-2.4 wird nicht funktionieren.

icarus
quelle
1

Alle diese Seiten bleiben hinter dem aktuellen Status zurück. Und die Dokumentation in den offiziellen Dokumenten ist vage "Die Ruby-Sprachversion ... oder höher". Wenn Sie wissen möchten, welche Ruby-Versionen die Rails-Version, die Sie wissen möchten, getestet hat, überprüfen Sie das von der Rails-Community verwendete Travis CI . Hier können Sie sehen, welcher Zweig gegen welche Ruby-Version getestet wird.

Bearbeiten:

Wie von hmallett erwähnt, hat Rails zu einer anderen Testsuite gewechselt. Es wurde geändert in Built Kite . Sie können den Codestatus jederzeit im Quell-Repository überprüfen.

Rauch
quelle
Travis CI wurde seit dem 9. April 2019 nicht mehr für Rails verwendet.
hmallett
Sie haben Recht, sie haben zu einer anderen Testsuite gewechselt. Ich habe meine Antwort bearbeitet.
Rauch