Kontomierz na Ruby 1.9.2 i Rails 3

Dla tych, którzy interesują się technologią, mamy dziś kilka ciekawostek z cyklu "Kontomierz od kuchni".

Kiedyś

W Kontomierzu oprócz finansów pasjonujemy się nowoczesnymi metodami programowania. Dlatego od początku wykorzystujemy język Ruby i platformę Rails. Gdy zaczynaliśmy pisać Kontomierz, były to czasy Rails 2.0, Ruby 1.8.6, serwerów mongrel i frameworku Prototype.js. Przy każdej nowej wersji Railsów (2.1, 2.2, 2.3), ochoczo podnosiliśmy naszą aplikację, aby z niesłabnącym entuzjazmem cieszyć się kodowaniem i zwiększać naszą produktywność. Każdy upgrade wymagał rozwiązania kilku problemów technicznych, ale generalnie szło gładko i zawsze z perspektywy czasu ocenialiśmy, że było warto.

Wtedy nadeszły Railsy 3 i Ruby 1.9.2...

Podnosić, czy nie podnosić?

Tu sprawa się skomplikowała. Zarówno nowy język jak i platforma były oficjalnie niekompatybilne wstecz. Każda nietrywialna biblioteka i aplikacja wymagała żmudnego dostosowania. Nie było jasne ile tygodni/miesięcy czasu zajmie podniesienie Kontomierza do najnowszych wersji i przetestowanie, że wszystko działa całkowicie stabilnie. Z drugiej strony pozostanie przy starej wersji Railsów do niczego nie prowadzi i na dłuższą metę oznaczałoby zatrzymanie rozwoju. Jako, że nadchodził akurat okres świąteczno-noworoczny, w którym i tak nie wiele się dzieje, zakasaliśmy rękawy, utworzyliśmy nową gałąź w gicie i wzięliśmy się do pracy...

Dziś

Kontomierz od 2 tygodni działa stabilnie w oparciu o poniższe technologie:

  • Ruby 1.9.2
  • Rails 3.0.4+
  • Passenger 3
  • jQuery 1.4.4 (poczekajmy, aż 1.5 dojrzeje...)
  • "HTML5"

Klucz do sukcesu

Kluczowe były:

  • testy automatyczne (wykryły ponad 450 problemów)
  • rzetelne testy ręczne (trwały 3 tygodnie, do przetestowania mieliśmy mniej więcej 6 przeglądarek * 3 systemy operacyjne)
  • pasja wymuszająca korzystanie z najnowszych technologii
  • nadgodziny! (ale w jakże słusznej sprawie! ;-))

Zaskakujące pozytywne "efekty uboczne"

Upgrade okazał się świetną okazją do wyczyszczenia mnóstwa rzeczy. Skoro i tak czekały nas żmudne testy, pojawiła się ochota przeprowadzenia wielu dodatkowych "ryzykownych" zmian.

W ten sposób m.in.:

  • cały JavaScript Kontomierza został przepisany z Prototype.js na jQuery
  • zaczęliśmy korzystać z jQuery.UI - stąd nowe okna modalne, buttony, kalendarze...
  • wymieniliśmy bibliotekę do menu i tooltipów na nowsze odpowiedniki bazujące na jQuery
  • wprowadziliśmy kilka innowacji HTML5, np. semantyczne pola formularzy
  • przeprowadziliśmy sporo refactoringu, część była konieczna, część została zrobiona przy okazji

Co to oznacza dla użytkowników?

Teraz możemy jeszcze szybciej rozwijać Kontomierz, a Wy macie pewność, że Kontomierz pozostanie nowoczesny.


dodaj własny »

13 komentarze czytelników

  1. darek

    No od razu dało się zauważyć przejście na jquery, na dłuższą metę używanie jqueryui będzie plusem, w końcu rozwiązuje on wiele problemów a z wersji na wersje zdaje się być stabilniejszy i co ważne wydajniejszy.

    Ja wciąż liczę na jakąś zmianę grafiki, jest ok ale mogłoby być znacznie lepiej :)

    18 lutego 2011 10:18

  2. Andrzej

    Wygląda na fajną zabawę technologiczną :)

    18 lutego 2011 10:56

  3. Borg

    Robiliscie jakieś porównania czy teraz jest szybciej, czas renderowania , takie tam?

    18 lutego 2011 15:00

  4. Piotr Włodarek - kontomierz.pl

    @darek: totalna zmiana grafiki jest na roadmapie

    18 lutego 2011 15:17

  5. Piotr Włodarek - kontomierz.pl

    @Andrzej: oj tak, "zabawy" było z tym co nie miara ;-)

    18 lutego 2011 15:18

  6. Piotr Włodarek - kontomierz.pl

    @Borg: tak, robiliśmy porównania:

    1. Czasy generowania odpowiedzi są praktycznie identyczne pomimo, że sam Ruby 1.9.2 jest około 2 x szybszy od poprzednika... Tłumaczymy sobie to tak, że Railsy 3 są dwa razy wolniejsze :-) Nie wchodziliśmy głębiej w ten temat.

    2. Generowany HTML jest znacznie krótszy dzięki UJS, a więc strony ładują się szybciej. Dlatego pisaliśmy o szybszym Kontomierzu. Zwłaszcza na stronie transakcji to pomogło - ponad 3 krotnie zmalał tam HTML.

    Jeśli macie jeszcze jakieś pytania technologiczne - chętnie odpowiemy!

    18 lutego 2011 15:23

  7. fitz

    No dobra, to jeszcze w ramach czepiania sie (performancowo), na tapete labjs albo inny framework ladowania skryptow - zobaczcie ten waterfall (http://www.webpagetest.org/result/110218_3S_TVB/1/details/); jquery oraz inne js-y ladowane sa na samym poczatku strony.
    Ogolnie skrypty blokuja wam ladowanie reszty rzeczy, fajnie widac to na 'Content Breakdown' z webpagetestu (obrazki zaczynaja sie sciagac po skryptach).

    18 lutego 2011 21:12

  8. Piotr Włodarek - Kontomierz.pl

    @fitz: tak, to prawda. Niestety przeniesienie skryptów na koniec nie jest takie proste. Ze względów historycznych w wielu miejscach używamy JS już w treści strony. To wszystko trzeba by przepisać na zdarzenie document ready. I kiedyś to zrobimy, pewnie przy zmianie architektury informacji aplikacji.

    20 lutego 2011 09:32

  9. fitz

    niestety, wiem jak to wyglada - nieraz to mocno grubszy refactoring :/

    20 lutego 2011 11:08

  10. mimiko

    A ja czekam i czekam aż będę mógł wybrać w menu opcję "dodaj kartę kredytową" i cudownym sposobem kontomierz doda mi niedawno nabytą kartę Aliora i trochę starszą BPH, bo chyba jak dotąd jedynym sposobem jest usunięcie konta i ponowne zaimportowanie go (tylko trochę nie chce mi się dłubać z 2 letnią historią wydatków:)

    23 lutego 2011 13:02

  11. Kontomierz

    Obecnie obsługiwane są karty kredytowe Alior Banku nie powiązane z RORami. Co do kart kredytowych BPH: w związku z podziałem na dwa systemy transakcyjne w banku mamy też podział na dwa banki w KontoImporterze. Rory można importować wybierając z listy BPH, a karty kred. wybierając Ge.

    23 lutego 2011 22:10

  12. mimiko

    A co z kartami powiązanymi - bo tych chyba jest większość. Mam od jakiegoś czasu kartę i muszę spisywać wydatki ręcznie, a wystarczyłoby w menu: dodaj kartę->wybierz bank->podaj datę od kiedy mają być zaimportowane transakcję (żeby nie zdublować już zapisanych ręcznie).
    Poza tym, nie wiem czy to się zmieniło bo już od jakiegoś czasu nie mam karty mbanku, ale jeszcze długo była widoczna w menu. niestety nie dało się jej ukryć. W momencie usunięcia znikły wszystkie transakcje. Tu też aż prosi się opcja "ukryj", "zaprzestań importu", czy podobnego.
    Pozdrawiam, Miłosz M

    10 marca 2011 13:40

  13. Kontomierz

    @mimiko: W Alior Banku dla kart kredytowych dostępne są wyciągi csv w dwóch różnych formatach.
    Proszę przesłać na kontakt@kontomierz.pl przykładowy plik csv ( z jedną lub dwoma transakcjami ), spróbujemy rozwiązać ten problem w inny sposób.

    Co do karty mBanku: w edycji karty w kontomierzu można odznaczyć opcję 'Import'. To spowoduje, że przy imporcie danych to konto nie będzie brane pod uwagę.

    11 marca 2011 16:43

Nowe zasady dotyczące cookies. Wykorzystujemy pliki cookies w celu świadczenia Państwu usług na najwyższym poziomie, w tym w sposób dostosowany do indywidualnych potrzeb. Korzystanie z witryny bez zmiany ustawień dotyczących cookies oznacza, że będą one zamieszczane w Państwa urządzeniu końcowym. Możecie Państwo dokonać w każdym czasie zmiany ustawień dotyczących cookies. Więcej szczegółów w naszej Polityce dotyczącej cookies