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.

wyprawiać
źródło
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/ )

hmallett
źródło
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.

gamov
źródło
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.
pdobb
źródło
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
13

Trudno go znaleźć w informacjach o wydaniu. Po pewnym czasie googlowania znalazłem go tylko tutaj http://www.devalot.com/articles/2012/03/ror-compatibility

Zgodność wersji Ruby Rails

crazycrv
źródło
7
To jest teraz dość przestarzałe ... Nie polegałbym już na tym.
yekta
Tak, tabela tutaj jest nieaktualna, zobacz moją zaktualizowaną odpowiedź.
gamov
Jeśli spróbujesz Rails 4 z Ruby 1.9.3, pojawi się błąd mówiący, że potrzebujesz Ruby v 2.2.2 lub nowszej
Hack-R
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

Marcelo Diniz
źródło
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.

dcorking
źródło
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.

Rick Smith
źródło
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ć.

Ikar
źródło
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.

Smek
źródło
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