Który Ruby on Rails jest kompatybilny z którą wersją Ruby?


82

Mam starą aplikację Ruby on Rails w wersji 2.1.1, z uaktualnionym systemem do obsługi Rubiego 1.8.7. Pierwotnie używał 1.8.5 lub tak.

Chcę go zaktualizować do Ruby 1.9.x ze względu na wydajność i prawdopodobnie również do nowszej wersji Ruby on Rails.

Nie mogę znaleźć żadnej łatwej tabeli kompatybilności między różnymi wersjami Ruby i wersjami Ruby on Rails.

Czy 2.1.1 będzie działać z Ruby 1.9.x? Jeśli nie, to jak daleko muszę go najpierw zaktualizować i jakie problemy prawdopodobnie napotkam? Moja aplikacja robi skomplikowane rzeczy z warstwą bazy danych, ale reszta jest dość prosta.


Nie wiem dokładnie, która wersja Ruby on Rails współpracuje z którym Rubim, ale myślę, że najlepszym sposobem na przetestowanie kompatybilności różnych wersji jest instalacja RVM
— Michał Czapko

Jest mało prawdopodobne, że Railsy 2.1.1 obsługują Ruby 1.9, ponieważ Ruby 1.9.0 był znany z tego, że zawierał dużo błędów, a Ruby 1.9.1 został wydany po Railsach 2.1.1.
— Andrew Marshall

Ostatnią wersją Rubiego obsługiwaną przez Railsy 3.2.22.5 jest Ruby 2.3.6 . Następnie musisz zaktualizować Railsy do wersji 4+.
— Joshua Pinter,

Odpowiedzi:


109

To stare pytanie, ale fakt, że rails są testowane z wersją ruby, jest dobrą wskazówką, że powinien on działać na tej wersji ruby.

Od 9 kwietnia 2019 stabilne gałęzie Railsów używają Buildkite do automatycznego testowania, a lista przetestowanych wersji Ruby według gałęzi railsów to:

Szyny 6.0

  • >= 2.5.0

Szyny 5.2

Szyny 5.1

  • >= 2.2.2

Rails 5.0

  • >= 2.2.2

Szyny 4.2

  • >= 1.9.3

Szyny 4.1

  • >= 1.9.3

Przed 9 kwietnia 2019, stabilne gałęzie Railsów od 3.0 używają travis-ci do automatycznego testowania, a lista przetestowanych wersji ruby, według gałęzi rails, to:

Rails 3.0

  • 1.8.7
  • 1.9.2
  • 1.9.3

Szyny 3.1

  • 1.8.7
  • 1.9.2
  • 1.9.3

Szyny 3.2

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

Szyny 4.0

  • 1.9.3
  • 2.0.0
  • 2.1
  • 2.2

Szyny 4.1

  • 1.9.3
  • 2.0.0
  • 2.1
  • 2.2.4
  • 2.3.0

Szyny 4.2

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

Rails 5.0

  • 2.2.10
  • 2.3.8
  • 2.4.5

Szyny 5.1

  • 2.2.10
  • 2.3.7
  • 2.4.4
  • 2.5.1

Szyny 5.2

  • 2.2.10
  • 2.3.7
  • 2.4.4
  • 2.5.1

Szyny 6.0

  • 2.5.3
  • 2.6.0

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


Dziękuję Ci. FYI, formularz komentarzy na Twojej stronie nie działa, wymaga adresu e-mail, ale nie ma takiego pola.
— Ruan Carlos

1
Najnowsza wersja Railsów to 5.2.3. Zastanawiam się, czy powinienem zainstalować dla niego Ruby 2.6.3 (najnowszą wersję)
— Qasim

1
Jest tak wiele błędów zależności przy zmianie na Rails 4.1z ruby2.3.0
— Vishwas Nahar

Rails 4.1 nie mogą być wyższe niż Ruby 2.6.x
— Joshua Pinter

46

W przypadku wersji <3.2: http://www.devalot.com/articles/2012/03/ror-compatibility

Dla wersji> = 4.0:

  • Rails 4 zaleca 2.0 (src: blog Railsów)
  • Rails 4.1 / 4.2 zaleca 2.1 (src: poprzednia strona pobierania Rails)
  • Rails 4.2.1 zaleca 2.2 (src: poprzednia strona pobierania Rails)
  • Rails 5.0 wymaga 2.2.2+ ( blog Railsów )

Szyny 3.2

Próbowałem wyjść poza te zalecenia (głównie uruchamiając Rails 3.0 na Ruby 2.0 i 2.1), napotkałem wiele dziwnych problemów.


1
Czy możesz rozwinąć dziwne problemy, z którymi się spotkałeś. Próbujemy uruchomić railsy 3.2.19 na Rubim 2.1.5 i napotykamy wiele dziwnych błędów związanych z zapytaniami generowanymi przez ActiveRecord.
— Sivakumar

Podobne problemy jak twoje. Jak pamiętam, brakowało również metod i problemów ze zgodnością klejnotów.
— gamov

Rails 3.2.13 i nowsze obsługują przynajmniej Ruby 2.0: stackoverflow.com/a/25165358/3448554
— Kelsey Hannan

@gamov, twoje linki wyglądają na zepsute
— Rick Smith

@RickSmith Tak, nie ma już strony pobierania z przeprojektowaną witryną Rails, dzięki.
— gamov

15

Poradnik Rails dotyczący uaktualniania Ruby on Rails zawiera sekcję poświęconą wersjom Rubiego . Jest to prawdopodobnie najlepsze źródło, ponieważ jest kontrolowane przez główny zespół Railsów.

W sierpniu 2016 r. Przewodnik po Railsach brzmi:

1.3 Wersje Ruby

Railsy zazwyczaj pozostają blisko najnowszej wydanej wersji Rubiego, kiedy zostanie wydana:

  • Rails 5 wymaga Ruby 2.2.2 lub nowszej.
  • Rails 4 preferuje Ruby 2.0 i wymaga wersji 1.9.3 lub nowszej.
  • Rails 3.2.x to ostatnia gałąź obsługująca Rubiego 1.8.7.
  • Rails 3 i nowsze wymagają języka Ruby 1.8.7 lub nowszego. Wsparcie dla wszystkich poprzednich wersji Rubiego zostało oficjalnie usunięte. Zaktualizuj tak wcześnie, jak to możliwe.

1
Rails 5.1 ogłaszają wsparcie dla Ruby 2.4, więc zakładam, że oznacza to, że rails 5.0 go nie obsługują. Zobacz blog.michelada.io/whats-new-in-rails-51
— iheggie


7

Z informacji o wydaniu Rails 2.2: (nie dokładnie to, o które prosiłeś)

Oprócz bezpieczeństwa wątków wykonano wiele pracy, aby Railsy działały dobrze z JRuby i nadchodzącą wersją Ruby 1.9. Ponieważ Ruby 1.9 jest ruchomym celem, Railsy na krawędzi na krawędzi Ruby wciąż jest propozycją typu „chybił / -a”, ale Railsy są gotowe do przejścia na Rubiego 1.9, gdy ten ostatni zostanie zwolniony.

Wierzę, że Rails 2.1.1 nie jest kompatybilny z Ruby 1.9 i będziesz sam w takim środowisku. Oczywiście możesz spróbować, jeśli twój kombinezon testowy jest wszechstronny. Musiałbyś też sprawdzić wszystkie inne klejnoty użyte w projekcie, co może być prawdziwym kłopotem.

Jeśli zdecydujesz się pozostać przy tej wersji Railsów, nie przeprowadziłbym migracji do 1.9.x. Jak wspomniałeś, wolałbyś go zaktualizować, powinieneś prawdopodobnie przejść przez przestarzałe informacje o wydaniu Rails 3.0 i dostosować swój kod. Podsumowaną listę można znaleźć w przestarzałych metodach i API Railsach 3


Głównie chcę Ruby 1.9 ze względu na wydajność i chcę aktualizować Railsy tak mało, jak to możliwe, jednocześnie nadal będąc w stanie używać Ruby 1.9.x, ponieważ spowoduje to problemy. Czy Railsy 2.2 będą współpracować z Ruby 1.9?
— taw

1
@taw W takim razie wolałbym zaktualizować do Railsów 2.3. Zgodnie z informacją o wydaniu , poprawnie obsługuje Ruby 1.9.1
— Marcelo Diniz

4

Ogólnie rzecz biorąc, istnieją dwa miejsca, w których można sprawdzić, czy platforma Ruby jest odpowiednia dla preferowanej wersji Railsów.

  1. Ogłoszenie o wydaniu na blogu Rails
  2. Informacje o wydaniu w guides/sourcekatalogu (także w sieci na Rails Guides i Github )

Przydatne może być również przejrzenie .travis.ymlpliku posiadanej wersji. PlikrvmWpis nie sugeruje wersji Ruby, że deweloperzy mogą działać przeciwko zautomatyzowanych testów.

Oczywiście, korzystaj z ich zaleceń razem z własnymi testami.


3

Rails Guides zawiera informacje w sekcji „Getting Started with Rails”. Wyciągnąłem informacje z każdej wersji przewodników:

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

O ile wiem, jest to tak bliskie pierwotnemu źródłu, jak tylko można uzyskać w przypadku wersji minimalnych . Zobacz odpowiedź gamov na zalecane wersje.


1
Uważaj z tym, ponieważ istnieje również maksymalna wersja Rubiego, z której może korzystać wersja Rails. Zobacz moją odpowiedź (np. Rails <3.2.22 nie obsługuje Ruby 2.2)
— gamov

@gamov Dzięki, zaktualizowałem moją odpowiedź, aby stwierdzić, że są to wersje minimalne.
— Rick Smith

1

pierwsza odpowiedź tutaj jest dość pouczająca, ale mam komentarz na temat kompatybilności rails-4.2z ruby-2.4.5, ponieważ jest tu pokazany problem , który sprawia, że ​​jest rails-2.4.8kompatybilny tylko z ruby-2.4+, żadna inna wersja rails-2.4 nie będzie działać.


1

Wszystkie te strony mają opóźnienie w obecnym stanie. Dokumentacja w oficjalnych dokumentach jest niejasna: „Wersja językowa Ruby ... lub wyższa”. Jeśli chcesz wiedzieć, z którymi wersjami Ruby jest testowana wersja Railsów, którą chciałbyś wiedzieć, sprawdź Travis CI , z którego korzysta społeczność Railsów. Tutaj możesz zobaczyć, która gałąź jest testowana pod kątem której wersji Ruby.

Edytować:

Jak wspomniał hmallett, Railsy zmieniły się na inny zestaw testowy. Został zmieniony na zbudowany latawiec . Zawsze możesz sprawdzić stan kodu w repozytorium źródłowym.


Travis CI nie był używany w Railsach od 9 kwietnia 2019 r.
— hmallett

Masz rację, zmienili zestaw testów na inny. Zmieniłem odpowiedź.
— Smek

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.