
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.