Idem na to globálne

Minulý týždeň som si založil nový blog. RubyBeginner.com. Dôvod? Chcem sa propagovať ako Ruby on Rails programátor. A som stále začiatočník, preto ten názov. A ked ním nebudem, tak stále to bude dobrý názov, keďže sú tam tipy pre začiatočníkov. Čiže doménu som vychytal a je to win win :D

Ale k veci. Ani neviem prečo ma to nenapadlo skôr. Na slovensku je X rails developerov a Y firiem, ktoré o nich majú záujem. Ale vo svete je ich rádovo viac, takisto spolu s ostatnými začiatočníkmi. Pôvodne som chcel občas písať nejaké Ruby on Rails články sem. Ale to by asi ani nemalo zmysel.

Potom som sa prihlásil do thoughtbot apprentice programu a keď som im chcel neskôr poslať follow up email, tak som si uvedomil, že sakra nemám im ani čo nové ukázať. Tak som sa okrem iného rozhodol pravidelne blogovať na rubybeginner.com a mám v pláne tam pridávať nové veci čo sa pribežne učím. A aspoň prvý mesiac by som chcel pridať jeden článok každý pracovný deň. Tak dúfam, že mi vydrží inšpirácia ;).

Moja prvá reálne používaná Ruby on Rails aplikácia

Dnes Vám predstavím svoju prvú reálne používanú Rails appku. Síce ju používam len ja, keďže je to aplikácia len pre jedného užívateľa, ale to nevadí ;). Používam ju každý deň a ušetrila mi už kopec času.

notes

Aplikáciu môžete nájsť na Githube a volá sa Notes. Ako z názvu vyplýva ide o aplikáciu na ukladanie poznámok. Nič špeciálne, ale o to viac praktické. Vytvoril som ju preto, aby som skonsolidoval svoje technické poznámky, čo som si robil v robote a aby som k nim mal rýchly prístup vrátane vyhľadávania.

Nahádzal som do nej všetky svoje poznámky, ktoré som mal predtým v .txt súboroch. Okrem toho si tam ukladám aj veci týkajúce sa Rails, ktoré chcem mať hneď  po ruke. Teraz keď potrebujem nájsť niečo čom som už predtým použil/videl, tak namiesto prehrabávania sa mojimi poznámkami, alebo hľadania cez google mám veci po ruke za pár sekúnd, namiesto minút. Nárast efektivity je očividný ;).

Vyhľadávanie je rýchle aj vďaka tomu, že výsledky sa vypisujú už vtedy keď ešte len zadávam hľadané slovo, čiže väčšinou sa k niečom dostanem doslova za sekundu.

A kde to môžem vyskúšať?

Ako som spomínal, tak aplikácia je robená len pre jedného užívateľa. Avšak ak ste trochu technický zdatný, tak si ju môžete sami nahodiť na Heroku a používať ju pre seba. Návod na spojazdnenie aplikácie nájdete na už spomínanom Githube.

Ruby on Rails: Lokalizované formulárové polia pre čísla a dátum

Ak ste v Rails programovali aplikáciu pre slovenských užívateľov, tak ste sa mohli stretnúť s tým, že dáta vo formulároch sa nevypisujú v takom formáte, ako by ste si želali. Napríklad čísla s desatinnou „bodkou“ namiesto čiarky. Alebo dátumy vo formáte 2013-07-19 namiesto 19. 7. 2013.

Bohužiaľ s týmto si štandardná i18n rails lokalizácia neporadí, preto je vhodné napísať si vlastné helper metódy. Toto sú tie moje, fungujúce v Rails 4.

# helpers pre formularove polia
# mozete ich vlozit do app/helpers/application_helper.rb
class ActionView::Helpers::FormBuilder
  def localized_date_field(date, params_hash = {})
    params_hash[:value] = object.send(date).nil? ? nil : I18n.localize(object.send(date))
    text_field date, params_hash
  end

  def localized_number_field(number, params_hash = {})
    params_hash[:value] = object.send(number).nil? ? nil : object.send(number).to_s.sub('.', ',')
    text_field number, params_hash
  end
end

Potom Vám stačí v šablóne pre formulár zavolať len nasledujúci kód pre dátum:

<%= f.localized_date_field :date %>

prípadne číslo:

<%= f.localized_number_field :number %>

Ak máte nastavené aj locale na slovenčinu, tak sa už dátumy a čísla budú zobrazovať správne.

Avšak ostáva tu ešte jeden problém. A to, že Rails pri ukladaní čísla odignoruje všetko čo je za čiarkou. Čiže z 3,14 sa stane 3.

Toto treba ošetriť na úrovni modelu a treba vytvoriť vlastnú set metódu pre daný atribút. Príklad pre atribút number.

# hack, aby sa ',' konvertovala na '.'
def number=(value)
  if value.respond_to?('sub')
    value.sub!(',', '.')
  end
  write_attribute(:number, value)
end

Čo sa dátumu týka, tak tam Rails korektne spracuje aj dátum zadaný v slovenskom formáte.

Nie je na to nejaký gem?

Ale áno je, volá sa delocalize a toto všetko robí automaticky. Bohužiaľ s Rails 4 nefunguje, čiže mne bol nanič ;). Moje Ruby a Rails znalosti nie sú ešte na takej úrovni, aby som ho dokázal upraviť na Rails 4. A okrem toho sa mi ten kód v ňom zdal prasácky. Ale to možno bude len tými znalosťami ;).

Začíname s Ruby on Rails

Chcete sa naučiť programovať v Ruby on Rails a neviete kde začať? Môžete to skúsiť ako ja.

  1. Ako prvé sa uistite, že viete dobre po anglicky. Teda aspoň rozumiete písanému textu. Bez angličtiny sa nezaobídete. Po slovensky alebo po česky totiž nenájdete nič použiteľné. Bohužiaľ.
  2. Začnite s Rails Tutorial. Presne tak, začnite tu a nie s oficiálnou dokumentáciou. Dôvod? Je tam vysvetlené všetko. Nielen Ruby on Rails, ale celý ROR stack. HTML, CSS, Javascript, ruby… A okrem toho aj test driven development, git, alebo aj nasadzovanie aplikácie do produkcie cez heroku. Ale nie, že to budete len čítať. Skúšajte si aj príklady a uistite sa, že tomu aj rozumiete. Odporúčam to každému začiatočníkovi!
  3. Máte prečítaný a hlavne pochopený rails tutorial? Výborne. Začnite programovať! A popri tom si   čítať Rails Guides. Getting started with rails bude zrazu oveľa ľahšie na pochopenie. A v ostatných kapitolách si môžete hľadať presne čo treba.
  4. Ok. Programujete, ďalej sa učíte a stále tomu niečo chýba? U mňa to bolo podobné a pomohla mi kniha Agile Web Development with Rails 4. Dávam ju až sem, lebo podľa mňa nie je vhodná pre začiatočníkov.
  5. ??? Pravdu povediac neviem, sem som ešte nedošiel ;) Ale ak máte nejaké tipy, tak sem s nimi.
  6. Zasekli ste sa niekde? Nevadí. Použite google. Je totiž dosť pravdepodobné, že niekto iný už podobný problem riešil a hlavne aj vyriešil. Väčšinou na Stack Overflow.

Každopádne musím povedať, že programovanie v Rails ma baví. A to sa neživím programovaním. Proste ma to baví a je v tom radosť robiť web aplikácie. Na jednej rozsiahlejšej práve pracujem. Je určená pre uľahčenie života konkurzným správcom. Zadávajú sa do nej pohľadávky ku konkurzom a reštrukturalizáciám a výstupom bude vééľáľa rôznych papierov, čo treba posielať na súd. Dúfam, že bude mať úspech. A ak nie, nevadí, aspoň som sa pri nej dosť naučil.