Ruby on Rails

in Lithuania

RubyConfLT 2010 !

Sveiki visi! RubyConfLT 2010 jau čia pat – gegužės 22d. VU MIF ITC (Vilniaus universiteto Matematikos ir informatikos fakulteto informacinių technolgijų centro) konferencijų salėje Šaltinių g.1A, Vilnius . Visi nespėjusieji dar gali registruotis čia.

Konferencijos programa:

10:00 Nuo ko pradėti? – Vilius Zigmantas
11:00 Patirtis kuriant Ruby on Rails didelės apkrovos sistemas – Saulius Grigaitis
11:50 Pertraukėlė
12:00 IRB arsenalas – Eimantas Vaičiūnas
13:00 Žaidimų serverio kūrimas su Ruby – Artūras Šlajus
14:00 Pietūs
15:00 ERB alternatyvos – Vidmantas Kabošis
16:00 Metaprogramavimas Ruby ir Rails: apžvalga ir pritaikymas – Remigijus Jodelis
16:50 Pertraukėlė
17:00 Testinių duomenų pakrovimo būdai – Andrius Chamentauskas
18:00 Objektų serializavimo būdai – Remigijus Jodelis
After-party!

Iki!

Published on 18/05/2010 at 16h25 by Saulius Grigaitis

RubyConfLT 2010 - registacija prasideda !!!

Sveiki visi! Šiais metais RubyConfLT vyks gegužės 22d. VU MIF ITC (Vilniaus universiteto Matematikos ir informatikos fakulteto informacinių technolgijų centro) konferencijų salėje Šaltinių g.1A, Vilnius . Auditorija talpina apie 40 žmonių, tad būtina registracija. Greičiausiai užsiregistravę rezervuos vietas RubyConfLT 2010!

Šiais metais pristatome naujove – visi gali siūlyti temas, įdomiausias atrinksime ir suteiksime galimybę daryti pranešimą RubyConfLT 2010 metu. Registruoti temas reikia čia iki gegužės 9-tos dienos.

Tikslus konferencijos tvarkaraštis bus paskelbtas išaiškėjus visiems pranešimams.

Apie RubyConfLT twittinam #rubyconflt !

Nepraleiskite progos sudalyvauti vieną kartą metuose vykstančioje RubyConfLT konferencijoje!

Published on 27/04/2010 at 22h36 by Saulius Grigaitis

Ruošiamės RubyConfLT 2010 !

Sveiki,

jau tradicija tampa kiekvieną pavasarį rengti kasmetinę RubyConfLT konferenciją, kuri šiemet bus jau trečioji – RubyConfLT 2010!

Turime keletą klausimų:

  1. Kur yra priimtinesnė konferencijos vieta:
    1. Vilnius
    2. Kaunas
  2. Koks formatas labiau priimtinas?
    1. Klasikiniai apie ~1val trunkantys gana išsamūs pranešimai
    2. Didesnis skaičius ne tokių išsamių, 15-30 min. trukmės pranešimų
  3. Kokiomis temomis norėtume išgirsti pranešimus (brainstorm’inti pavadinimai)?
    1. Ir su Ruby galima parašyti žaidimų serverį
    2. Large scale lessons learned
    3. Amazon Web Services infrastruktūra
    4. Deklaratyvi autorizacija
    5. Testavimo serveriai (spork,…)
    6. Code Quality Checklist
    7. Testinių duomenų užkrovimas (Fixtures, FactoryGirl, HornsbyScenarios, BluePrints…)
    8. Hirb
    9. Rails 3
    10. Viskas išskyrus MRIYARV, JRuby, IronRuby, Rubinius
    11. Kita tema (parašykite kokia)
Jei yra norinčių daryti pranešimus paminėtomis arba kitokiomis temomis praneškite mums (info et rubyonrails taškas lt arba straipsnio komentaruose).

Laukiame atsiliepimų, nes tik jie padeda surengti konferenciją tokią, kokios labiausiai nori klausytojai!

Published on 01/03/2010 at 16h29 by Saulius Grigaitis

"Agile Development with Ruby" course at Vilnius University

When I was student, I always thought that it would be great to have more specific courses. Yep, I still agree that students should build strong fundamentals at university, instead of learning something very specific, so they can build specific knowledge later on top of learned fundamentals. But it’s fun to learn some trending topics that people are talking about now. Ruby and Agile are still trending topics here in Lithuania, and since I’m one of Lithuanian Ruby pioneers I decided to deliver course, which embraces two most important things in my daily development – Agile and Ruby. I delivered “Agile Development with Ruby” last semester at Vilnilus Univesity, The Faculty of Mathematics and Informatics. It was my first delivered course, so I decided to share my experience here and get some feedback from people who delivered or listen to such courses or take classes on similar topics.

My main goal was to teach students how to do BDD (Behaviour Driven Development), so I wanted to share knowledge that our team has gained during 3 years of BDD practice developing real-world apps using Ruby on Rails/Merb. My course contains main things that our team utilizes in day-to-day work:

  • Ruby
  • RSpec
  • Cucumber
  • Mocha
  • Rails
  • Factories

I felt that scope of course is probably a bit too big for single semester and too small for two semesters, but I was sure that it’s possible to fit into single semester once I’ve done course plan:
Course lectures:

  1. Intro (general info about course + live BDD example)
  2. Ruby.new, Classes, Objects, and Variables, Containers, Blocks, and Iterators
  3. Standard Types
  4. More About Methods
  5. Expressions
  6. Introducing first task + live example how to complete that task
  7. Exceptions, Catch, and Throw, Modules
  8. BDD with RSpec
  9. RSpec, RSpec-Rails and Custom matchers
  10. Stubing/Mocking using Mocha (examples), ActiveRecord::Base, ActiveRecord::Validations
  11. Introducing second task + live example how to complete that task, ActiveRecord::Associations::ClassMethods
  12. Filling DB with test data: Fixtures, Blueprints, Hornsby, Faker
  13. Rails Architecture, Writting Controllers Specs, Testing controllers with RSpec, ActionController::Base, ActionController::Routing
  14. ActionView::Base, Writting Views Specs

I decided to go with live code writing and source code analysis together with documentation – combination I use in my daily development, instead of boring slides. I used slides only for a couple of lectures that were more about ideology, like “BDD with RSpec”. It went very well, because writing code live, solving unexpected issues and duscussions involve students much more than boring slides.

All students picked unique topic for their tasks (like “DVD Store” or “Funds Trading System”). Then they got 3 practical excercises:

  1. Implement simple CLI application (5 or more models, at least 50 specs, can’t use Rails, 3rd party ORMs or any other 3rd party frameworks, 2 custom matchers, etc…)
  2. Refactor models to ActiveRecord (AR’s validations, associations etc., testing data loaders, stubs/mocks etc. )
  3. Refactor to Ruby on Rails app (at least one complete CRUD, at least 10 controller specs, at least 5 views specs, stubs/mocks etc. )

The scope of practical tasks was just too big for most of the students. Most of them completed first task, but only few completed all of them, so I needed to simplify it somehow. I’d leave same task set for those students who want to get highest marks, but for others scope should not be so big. I already tried to do that, but I can’t find any better solution. I don’t think that implementing some math algorithm (like fibonacci sequence) makes sense, because such task really doesn’t show benefits of BDD. I believe that doing BDD for “business logic” is the best way to learn BDD. So one idea that comes to my mind is just make lower measurable requirements, like 3 models instead of 5, or 30 specs instead of 50.

Has anybody have any ideas regarding questions that I’m still looking answers for:

  1. How to make smaller scope of practical tasks and still make tasks that best fit learning BDD ?
  2. Usually I do live BDD in my lectures, but then students get too much information at once, for instance I write tests for controller actions and those controller actions itself. So I explain how to test things that students don’t know about first, like how to write tests for controller actions that students don’t know about yet. This renders students clueless of what they’re going to test (i.e. they don’t know what a controller or controller’s action is). If I introduce Rails controller at first, then I write untested code (that’s what I would like to avoid, because it’s not the way BDD should be done), because I tend to make live examples. Seems both ways are not perfect, any ideas?
  3. Most of students seem doesn’t have right attitude towards remarks, they usually try to protect their own approach instead of considering other solutions that I suggest them. Usually I make constructive explanations, although some of my suggestions can be proven only in production environment. So general question is how to motivate students to make efforts on improving their apps.
  4. There is an issue of when to give tasks to the students. If I give them at the beginning of semester, then they tend to start completing tasks before they listen to lectures about BDD, it yields not so good results. If I give them later, then students aren’t happy, because scope is too big and there is not much time to complete them. Teach BDD and RSpec before teaching Ruby could be the other way around, but I don’t think it’s right way to go. Any ideas?

Thanks everyone for reading this article, any feedback is highly appreciated, thanks to students for listening to course and developing apps. It was really fun! We will do much better next semester ;) !

Published on 20/01/2010 at 22h04 by Saulius Grigaitis

RubyConfLT 2009 skaidrės, meetup'ai...

Žadėtos ir ilgai lauktos skaidrės bei keletas nuotraukų iš RubyConfLT 2009! Nors ir labai spaudė konferencijos laikas, spėjome pristatyti temas ir padiskutuoti. O kas nespėjo, tai galėjo padaryti afterparty’je , kuris pradėjo linksmai ir turiningai. Auditorija šiemet buvo brandesnė, nemažai buvo patyrusių Ruby/Rails programuotojų. Taigi Ruby/Rails po truputi atranda savo vietą lietuvių programuotojų širdyse ;)

Ketiname rengti nuolatinius Ruby meetup’us Vilniuje. Formatas būtų maždaug toks:

  • Susirenkame kartą per 1-3 mėnesius
  • Susirenkame vakare (po darbo)
  • Dalyvių skaičius 20-40
  • Pristatome porą geidžiamiausių temų
  • Padiskuotuojame, pasidaliname patirtimi
  • Viską pratęsiame afterparty’je

Siūlykit kaip gerinti formatą, siūlykit temas!

Kelios RubyConfLT 2009 nuotraukos:

RubyConfLT 2009 skaidrės:

Konferencijos įrašai čia

Published on 30/05/2009 at 19h48 by Saulius Grigaitis

RubyConfLT 2009 !

Programuoji? Programuoji “web’ui”? Programuoji, tačiau programavimas nesijaučia “fun”? Ko gero tau reikia susipažinti su Ruby, gana neseniai išpopuliarėjusi kalba, kuri tapo mūsų kasdienybe ir mes norime pasidalinti savo žiniomis su jumis. Bandysime apžvelgti Ruby ir Rails pasaulio naujoves bei ekosistemą, o taipogi aptarsime visuomet aktualias temas: greitaveiką, “skalabilitą” (scalability) ir testų rašymą. Laukiami ne vien “web developeriai”, tačiau ir žmonės norintys susipažinti su kalba, jos ideologija ir principais, stovinčiais už jos.

Konferencijos programa:

  • Ruby 1.9 (Eimantas Vaičiūnas)
    Neseniai išleista stabili Ruby 1.9 versija atnešė nemažai pakeitimų. Vienas iš didžiausių buvo interpretatoriaus pakeitimas iš MRI (Matz Ruby Interpreter, originalaus Ruby interpretatoriaus) į YARV (Yet Another Ruby VM). Aptarsime šį perėjimą, jo naudą, bei kitas Ruby 1.9 naujoves.
  • Rails 2.3 & 3 (Artūras Šlajus)
    Rails – nepaliaujamai besivystantis projektas, į kurį suplaukia patobulinimai sukurti viso pasaulio programuotojų. Papasakosime kas naujo neseniai išleistoje 2.3 versijoje, bei kokios perspektyvos laukia Rails 3 versijoje, kurioje bus įlietas MERB karkasas. MERB buvo sukurtas, jog pašalintų Rails trūkumus – monolitiškumą, saugaus gijų palaikymo nebuvimą (thread safety) ir kitką. Rails ir MERB suliejimas leis turėti geriausius dalykus iš abiejų pasaulių.
  • Git versijų kontrolės sistema (Artūras Šlajus)
    Git buvo parašytas valdyti Linux kernelio išeities kodą, tačiau Ruby bendruomenė greitai pamatė jo privalumus. Git yra paskirstyta (distributed), greita ir multiplatforminė versijų kontrolės sistema. Kalbėsime apie jos vidinę struktūrą, naudojimą, palyginsime su Subversion ir kokia Git reikšmė Ruby bendruomenėje.
  • Ruby profiliavimas ir greitaveikos testavimas (Eimantas Vaičiūnas)
    Užklausos pradėjo stabdyti? Procesoriaus apkrovimas viršijo proto ribas? Kažkur dingo visa atmintis? Gal pats laikas optimizuoti kodą? Aiškinsimės kaip tai padaryti.
  • Scaling Rails (Saulius Grigaitis)
    Kad ir kaip beoptimizuotum projektą ar kokį galingą serverį benupirktum, galų gale ateis toks laikas, kai vienas serveris projekto jau nebepavilks. Tad ką daryti? Ogi “scalintis”!
  • Cucumber (Saulius Grigaitis)
    Testai yra gerai, testai, kuriuos supranta klientas, yra dar geriau. Cucumber – karkasas, leidžiantis testus aprašyti natūralia kalba. Žiūrėsime ką daryti, jog tai, ką suprantat jūs ir klientas, suprastų ir Ruby.

Konferencijos pradžia: Balandžio 19 diena, 10:00

Kaina: Nemokama

Vieta: Studentų g. 48a-323, Kaunas

Registracija čia

Published on 22/03/2009 at 14h48 by Saulius Grigaitis

Ruošiamės RubyConfLT 2009!

Sveiki! Jau pradedame ruoštis RubyConfLT 2009 konferencijai, kuri kaip ir praėjusiais metais vyks KTU InfoSHOW festivalio metu. Ketiname išlaikyti praėjusių metų konferencijos formatą, tik šiemet stengsimės būti daugiau organizuotesni – trumpinsime konferencijos laiką, nes ne visiems patiko konferencija iki 21 val. :). Turime keletą galimų temų, bet laukiame konferencijos klausytojų norų:

  1. Rails 3 = Rails + Merb
  2. JRuby, Ruby 1.9, Rubinius ir kitos MRI alternatyvos
  3. MRI internals
  4. Deployment (plačiau nei praėjusiais metais, Centostrano / Deprec2 internals, įpatingas dėmesys mod_rails )
  5. Testavimas (kalbėta praėjusiais metais, gal tik Cucumber neaptartas, ar yra norinčių dar kartą pasiklausyt?)
  6. Saugumas (kalbėta praėjusiais metais, tikrai ne daug naujovių šiemet)
  7. Git
  8. Common practices working with Rails/Ruby
  9. Kešavimo mechanizmai
  10. Ruby performance tips’n’tricks

Kai kurios temos gana rimtos, kitos lengvesnės, tad stengsimės subalansuoti.

O ką Tu norėtum išgirsti?

Beje, pažįsti programuotoją, norintį dirbti su Ruby on Rails ? O gal pats norėtum? Nepraleisk progos !

Published on 03/02/2009 at 19h53 by Saulius Grigaitis

Centostrano 0.2 Released! Easy Rails stack installation and setup on CentOS now with Phusion Passenger (a.k.a mod_rails / mod_rack) support!

I’m happy to announce 0.2 release of Centostrano. Centostrano is deprec2 port to CentOS. Centostrano is tool dedicated for easy and effortless Rails stack installation and setup on CentOS.

Phusion Passenger is supported in Centostrano now. Also, many changes from upstream deprec2 have been backported, and many small issues have been fixed.

If you are not familiar with Centostrano, checkout this detailed guide. If you would like to migrate to Phusion Passenger on already setup server by Centostrano, then run commands ( similar as on deprec2 )

cap centos:nginx:stop
cap centos:nginx:deactivate
cap centos:mongrel:stop
cap centos:mongrel:deactivate_system

Add passenger role to config/deploy.rb

role :passenger, ‘www.example.com’

Change :restart task in same config/deploy.rb

namespace :deploy do
task :restart, :roles => :app, :except => { :no_release => true } do
top.centos.passenger.restart_apache
end
end

And finally install and setup Phusion Passenger

cap centos:passenger:install
cap centos:passenger:config_gen
cap centos:passenger:config
cap centos:passenger:restart_apache

Enjoy!

Published on 25/01/2009 at 23h03 by Saulius Grigaitis

Cucumber - integracinis testavimas lietuviškai

Tiems, kas jau naudoja “Unit” lygio testus ir jaučia integracinio lygio testavimo poreikį verta išbandyti Cucumber, kuris pakeičią senąjį “RSpec Story” karkasą. Įrankis išties labai paprastas, gana gerai dokumentuotas, tad jį perprasti užtruks nedaug laiko. Be to, integracinius testus jau galima rašyti ir lietuvių kalba. Pvz.:

Savybė: Sudėtis
  Norėdamas išvengti kvailų klaidų
  Aš noriu, kad man pasakytų dviejų skaičių sumą
 
  Scenarijus: dviejų skaičių sudėtis
    Duota įvedžiau 50 į skaičiuotuvą
    Ir įvedžiau 70 į skaičiuotuvą
    Kai paspaudžiu "add"
    Tada rezultatas ekrane turi būti 120
    Ir rezultato klasė turi būti "Fixnum"
 
  Daugiau pavyzdžių
    | įvestis_1 | įvestis_2 | mygtukas | išvestis | klasė |
    | 20 | 30 | add | 50 | Fixnum |
    | 2 | 5 | add | 7 | Fixnum |
    | 0 | 40 | add | 40 | Fixnum |
 

Skaidrės iš prezentacijos apie Cucumber irgi lietuviškos!

Published on 23/11/2008 at 23h35 by Saulius Grigaitis

Soma - like SLIME for VIM

One of the most annoying things is to code in IRB if it’s more than couple of lines. Lisp world has SLIME for Lisp interaction mode for Emacs. Is there something like this for Ruby and Vim users? SOMA is very easy way to transfer code from Vim to IRB.

git clone git://github.com/ichverstehe/soma.git
cd soma
gem build soma.gemspec
sudo gem install soma-0.0.1.gem

add to ~/.irbrc

require ‘rubygems’
require ‘soma’
Soma.start

Then open terminal and run IRB. Then run Vim in other terminal, write some code and transfer code using “Ctrl – c” “Ctrl – c”.
Here is video and here is alternative way.

Published on 18/10/2008 at 16h05 by Saulius Grigaitis

Powered by Publify Theme Frederic de Villamil | Photo Glenn