Od kilku miesięcy zastanawiałem się, jak napisać własny gem w Ruby on Rails do użytku publicznego. Spędzało mi to sen z powiek, odkąd pierwszy raz o tym pomyślałem, często bowiem korzystam z gotowych gemów i jestem niejednokrotnie oczarowany ich funkcjonalnością, tym, jak ułatwiają programistom Ruby on Rails życie. Zupełnie naturalne więc jest, że chciałbym pozyskać umiejętność tworzenia gemów w RoR i zrozumienia zasad ich działania. Dzisiaj ukończyłem swój pierwszy Gem w Ruby on Rails. Okazało się, że aby się tego nauczyć, po prostu trzeba dostać odpowiednie zlecenie. Praktyka znowu zwycięża, podziękowania dla MamaPlus.pl za obarczenie mnie tą robotą.

Zlecenie od MamaPlus.pl w Ruby on Rails.

Logo MamaPlus

W moim przypadku sytuacja zwyczajnie wymusiła na mnie pozyskanie wiedzy niezbędnej do realizacji zlecenia. Moja siostra otworzyła sklep internetowy MamaPlus.pl, z artykułami dla dzieci i ich rodziców. Sklep od pierwszych dni swojej działalności cieszy się dużą popularnością, ponieważ moja siostra wszystko, za co się bierze, wykonuje z najwyższej klasy perfekcjonizmem. Nad doprowadzeniem strony sklepu do bierzącej postaci spędziła tyle czasu, że ciężko mi to sobie nawet wyobrazić.

Sklep został postawiony i prosperuje bardzo dobrze, lecz analityczny umysł mojej siostry nadal wychwyca przeróżne mniej lub bardziej istotne błędy w strukturze portalu. Jednym z nich był problem z sortowaniem produktów sklepowych w panelu admina. Jakub Peter, twórca m. in. MamaPlus.pl oraz KochamyLaure.pl chwilowo nie mógł znaleźć czasu, by się nim zająć, więc ja podjąłem się tej roboty.

Sklep MamaPlus.pl jest napisany w RoR i bazuje na gemie, a za sortowanie produktów odpowiedzialny był inny gem, rozszerzający funkcjonalność panelu admina. Pojawił się problem, ponieważ gem ten nie był przygotowany dla sklepów z tysiącami produktów w ofercie, jak w MamaPlus.pl. Okazało się, że przy próbie sortowania produktów wybierane są wszystkie produkty ze wszystkich kategorii i dopiero po ich wyświetleniu można je sortować. W przypadku wielu setek produktów w asortymencie jest to niedopuszczalne, ponieważ zapytanie do bazy zajmuje tyle czasu, że serwer go nie przepuszcza, a każda zmiana pozycji produktu wymusza odświeżenie strony, czyli kolejne zapytania… generalnie masakra, bo strona ładowała się około 2 minut za każdym razem.

Moim zadaniem było zmienić gem spree_product_sort i udoskonalić funkcjonalność sortowania sklepu tak, by przyśpieszyć jego działanie jakieś… 1000 razy. Wymagało to utworzenie widoku drzewa kategorii i umożliwienie sortowania produktów dla każdej kategorii z osobna. Udało się, co możecie zobaczyć na moim GitHubie, a w międzyczasie nauczyłem się podstaw pisania gemów do RoR, napisałem swój pierwszy gem, bazując na już gotowym kodzie, i udostępniłem go w repo GitHuba.

Generalnie bardzo owocny to był dzień.

Pierwszy Gem w Ruby on Rails, jak się za niego zabrać?

  1. Najważniejszy jest pomysł – Najgorsze, co można zrobić, to zasiąść do pisania kodu bez żadnego planu. Zanim napiszesz choćby linijkę kodu, sprecyzuj, co gem ma robić.
  2. Nie odkrywaj ameryki na nowo – Drugim Krokiem dla Ciebie jest odpalenie wyszukiwarki i próba znalezienia gema, który będzie robił mniej więcej to, co chcesz. Próbując zmienić lub udoskonalić kod już działający nauczysz się więcej i szybciej niż gdybyś miał pisać wszystko totalnie od zera.
  3. Jak napisałem w artykule o początkach przygody w programowaniu, po prostu zacznij pisać. Sucha teoria na nic Ci się nie przyda, i niczego do życia nie wniesie. Osobiście nie skorzystałem z żadnego artykułu wspomagającego pisanie gemów, nawet z oficjalnej pomocy RoR w tej kategorii, gdyż nie było to konieczne.

Jeden cytat mówi wszystko: „Do odważnych świat należy”. Nawet nie bardzo mam jak to skomentować. Stać nas na najwięcej, kiedy zatrzaśniemy sobie furtki i po prostu otrzymamy zadanie do zrobienia. Każdą nową umiejętność najłatwiej zdobyć, realizując konkretny projekt lub zlecenie. Napiszcie w komentarzach, jeśli znacie lepsze sposoby na zwiększanie swoich umiejętności, chętnie je wypróbuję 😉 .

Póki co zapraszam do testowania mojego gema i pochwalenia się swoimi.

Pin It on Pinterest

Share This
Sekrety Produktywności

Sekrety Produktywności

DARMOWE szkolenie mailingowe! 10 porad jak zwiększyć produktywność w programowaniu.

Dziękujemy za zapisanie się na kurs. Wkrótce otrzymasz wiadomość email z potwierdzeniem zapisu.

FreshMail.pl