Ruby 1.8.4 + Rails 1.1.6

Witam,
chciałbym się dowiedzieć jak wygląda sprawa wersji Rubego i Railsów. Otóż mam do ogarnięcia stronę - aplikację napisaną w RoR, niestety poziom flustracji osiąga czasami pułap zenitu a to z powodu faktu iż zawsze pojawiają się jakieś kłopoty.

Mam prośbę aby ktoś spojrzał na konfigurację tego co jest:

ruby 1.8.4 (2005-12-24) [i686-linux]
Rails 1.1.6

i powiedział mi co można z Tym zrobić, czy wersje które posiadam są archaiczne, czy można w miarę bezpiecznie zrobić im update, ja mam wrażenie że to jest taka “bryczka” w świecie w którym ludzie poruszają się “autami”. Pewnie się mylę ale brak mi długiego obyci z tym. Start na nowych wersjach byłby z pewnością łatwiejszy.

już Ci odpowiedziałem w innym temacie: http://rubyonrails.pl/forum/p33478-Dzisiaj-14%3A53%3A48#p33478

zresztą po co piszesz 2 razy to samo, w dwóch tematach?

Oho, ktoś się bawi w nekromancje :wink:

Możesz spróbować zaktualizować do ruby 1.8.6, a rails do 1.2.6 ale podstawowe pytanie to dlaczego chcesz to zrobić ? Jeśli aplikacja ma być tylko utrzymywana to nie ma powodów, jeśli masz ją rozwijać to w gre wchodzi raczej przepisanie całej aplikacji.

2 posty i już go krzyżować będziesz? Yh…

Tak jak napisał Paweł, jeżeli chcesz utrzymywać, to spróbuj ją uruchomić tak jak jest (ew. na 1.8.6). Jeżeli chcesz zrobić upgrade, to napisz najlepiej jak duża jest ta aplikacja (mniej więcej ile jest plików w katalogach app/models i app/controllers, oraz ile mają łącznie linii), jeżeli w tej wersji istnieje rake stats to też możesz wkleić. Jeżeli to nieduża aplikacja i będziesz musiał coś z nią robić, to możesz zaryzykować update, ale jeżeli jest duża i dodatkowo nie umiesz railsów, to może być ciężko.

Masz dwa problemy:

  1. pierwszy sensowny (tzn. zasadniczo już bez wycieków pamięci) Ruby to 1.8.6 [1] na dodatek 1.8.4 nie doczekał się kilku dość krytycznych poprawek dotyczących bezpieczeństwa [2]
  2. … ale pierwsze Railsy oficjalnie i w pełni kompatybilne z rubym 1.8.6 to dopiero Rails 1.2.3, z wcześniejszymi są jaja [3]

Więc jeśli masz czas i możliwość, spróbuj przejść na Ruby 1.8.6 i Rails 1.2.6.
Jeśli ich nie masz – uruchamiaj jak jest, ale monitoruj serwer.

[1] http://www.ruby-forum.com/topic/130441
[2]: http://weblog.rubyonrails.org/2008/6/21/multiple-ruby-security-vulnerabilities
[3]: http://weblog.rubyonrails.org/2007/3/14/rails-1-2-3-compatible-with-ruby-1-8-6-and-other-fixes

To jest wersja tak stara, że prawdopodobnie niewiele osób z tego forum w ogóle musiało takie coś dotykać ;). Znalezienie jakichkolwiek materiałów może graniczyć z cudem. Tu już nawet nie chodzi o to, jakie ta wersja ma możliwości, ale wsparcie jest żadne. Teraz są super guidesy, dużo świetnych tutoriali, podjerzewam, że przy 1.1.6 pozostaje czytanie kodu i znajdowanie jakichś zakurzonych materiałów ;).

Sorki, za dwa posty, jeden poszedł do kasacji, poprostu po napisaniu pierwszego stwierdziłem, że to nie to miejsce :slight_smile:

No właśnie, aplikacja ma być rozwijana, nowe funkcjonalności wprowadzane, dostałem aplikacje + serwer bez dokumentacji z informacją że ta kombinacja jest stabilna itp :).

Musiałbym np: wystawić API przez SOAP, instalowałem różne gem-y i zawsze musiałem wybierać te z samego dołu listy historii, wersje stare i nic, dużo kombinowania, ścigania i efekt marny, więc zastanawiam się co jest nie tak… W opisach przykłady są na wersje 1.8.6 i Rails 1.2 a ja mam starsze.

Nie jestem doświadczonym programistą w RoR, ale gdy robię coś testowo na nowszych wersjach to idzie łatwiej, a tutaj to dostaje białej gorączki.
Gdybym zajmował się tym językiem kilka lat pewnie bym wiedział jakie są niebezpieczeństwa.

To jest wersja tak stara, że prawdopodobnie niewiele osób z tego forum w ogóle musiało takie coś dotykać ;). Znalezienie jakichkolwiek materiałów może graniczyć z cudem. Tu już nawet nie chodzi o to, jakie ta wersja ma możliwości, ale wsparcie jest żadne. Teraz są super guidesy, dużo świetnych tutoriali, podjerzewam, że przy 1.1.6 pozostaje czytanie kodu i znajdowanie jakichś zakurzonych materiałów ;).[/quote]
No właśnie mam takie same odczucia. A nowe funkcjonalności trzeba wdrożyć. Więc jest sytuacja taka, mam aplikację która działa, trzeba wdrażać rzeczy które defacto wydają się proste, no więc myśl pierwsza że taka drobnostka, później zaczynają się jakieś schody, problem z znalezieniem czegoś w sieci i tak w kółko macieju.

Widzę, że trochę tego jest, ale są jakieś testy. Na początek możesz spróbować tak jak napisał Tomash przejść na 1.2.6. To nie powinno być bardzo bolesne, chociaż pewnie jakieś problemy się pojawią. Jeżeli aplikacja ma być aktywnie rozwijana, to najlepiej byłoby przejść na najnowszą wersję i na rubiego 1.9.3, ale z tym już na pewno będzie sporo pracy, więc musiałbyś przekonać pracodawcę, że warto będzie poświęcić na to jakiś dłuższy czas. Ciężko powiedzieć ile to by trwało, bo to zależy jak to jest napisane. Jeżeli aplikacja nie używa jakichś bardzo specyficznych rzeczy, nie wpina się w bebechy i nie ma jakichś chorych monkey patchów, to powinno być względnie łatwo. Jeżeli jest jednak inaczej, to będzie bardzo ciężko. Jedna z aplikacji, nad którymi pracowałem jest bardzo problematyczna nawet przy zmianie wersji z 3.0 na 3.1 i jeszcze bardziej problematyczna w przejściu na 3.2, chociaż w publicznym API nie było praiwe żadnych zmian między tymi wersjami.

Czyli podsumowując ograniczyć się do zmian mało ingerujących w strukturę, czyli jeśli wymaga to jakiś gemów itp to odpuszczać, pociągnąć modyfikację tyle ile się da mając w tyłu w głowię opcję przejścia na nowsze wersję. Gdybyście mieli strzelić jakie wersje to rozumiem, że ryzykować na
ruby 1.9.3 i ralisy … ?

Można próbować dużą ilość kombinacji, to oczywiste, ale chciałbym wysondować co by zrobiły osoby z większym doświadczeniem.

Ciężko coś powiedzieć nie widząc kodu aplikacji, ale jeżeli porywać się na większe zmiany, to najlepiej na najnowszą dostępną wersję (w tym momencie 3.2). 2.x też już niedługo będzie coraz trudniej rozwijać, a na horyzoncie jest już 4.0, które będzie wspierało tylko rubiego 1.9.3 (ale zmiany nie będą tak rewolucyjne jak między 2.3, a 3.0, taki przeskok jest argumentowany raczej porzuceniem wsparcia dla rubiego 1.8.7).

Czyli jeżeli zaczniesz jakoś niedługo to 3.2, jeżeli za jakieś kilka miesięcy, to być może będzie już 4.0.

Tylko w wypadku przejścia na railsy 3.2 proponuję raczej zacząć od początku. Tzn. robisz pustą apkę na 3.2 + 1.9.3, przerzucasz layout z assetami, jak działa, robisz pierwszy z brzegu kawałek, jak działa, to kolejny itd.

Inaczej możesz tak to rozgrzebać, że się nie pozbierasz.

EDIT: przez kawałek rozumiem raczej jakąś funkcjonalność, niż kontroler czy jakąś bibliotekę.

Ja bym gdzieś tam na początku (tak pomiędzy “robisz pustą apkę” a “przerzucasz layout” :D) wpiął przerzucenie testów :wink:

O ile są jakoś sensownie napisane, to chyba powinny zadziałać OOTB (nie że od razu będą green, ale nie będą rzucać syntax errorami itp ;)).

Wtedy będzie Ci łatwiej przenosić funkcjonalności + będziesz mieć satysfakcję jak z całego ekranu czerwonych kropek zacznie wyłaniać się zielony kolor :smiley:

Zrób tak jak Sarniak polecił.
Jeśli aplikacja ma być rozwijana, to rozwój musi się zacząć od apgrejdu do współczesnych railsów i rubiego. Bez tego w ogóle nie ma o czym rozmawiać.

Niekoniecznie, w międzyczasie zmieniło się też api do testowania, klasy railsowe nie dziedziczą już z Test::Unit (a już na pewno inaczej działają testy kontrolerów).

Niekoniecznie, w międzyczasie zmieniło się też api do testowania, klasy railsowe nie dziedziczą już z Test::Unit (a już na pewno inaczej działają testy kontrolerów).[/quote]
Dokładnie + nie wiem czy jest sens z przerzuceniem wszystkich testów, jeśli funkcjonalności będzie się przerzucało stopniowo. Większy sens ma przepisywanie (lub kopiowanie jeśli się uda) testów właśnie podczas przepisywania kolejnych części aplikacji.

Dziękuje wszystkim za pomoc, myślę że mam już jasny obraz odnośnie tej konfiguracji.

Pozdrawiam

Avdi Grim napisał ostatnio na twitterze, że będzie teraz budował appki w nitro (framework popularny jakieś 5-6 lat temu), odpisałem mu, że u nas na forum ktoś dostał w spadku aplikację na ruby 1.8.4 i railsach 1.1.6, oto co odpisał: http://twitter.theinfo.org/173121686592425986#id173122415495356416

@Bandito: widzisz, są jakieś plusy :wink:

Avdi mistrz :smiley: