Lépjünk be a parancssorba, és gépeljük be az alábbi parancsot:
C:\>irb [Enter]
Egy parancsértelmező indul el, amiben interaktív módon tudunk ruby parancsokat futtatni. A Ruby scripteket futtat, azaz nem fordítja le a scripteket, hanem értelmezi azokat. A kiíró utasítás a put: Próbájuk ki:
put 'Hello Világ'
Ezt kapjuk:
Helló Világ
=>nil
A parancssorba beírhatunk matematikai műveleteket is, illetve stringet. Mivel minden objektum, ezért a stringekre rögtön alkalmazhatunk metódusokat is:
'Zoli'.reverse
=>"iloZ"
'Zoli'.update
=>ZOLI
"Zoli".length
=>4
"Zoli" * 5
=>ZoliZoliZoliZoliZoli
Bakke ilyet is tud?
Ez a parancssor jó, de írjunk már egy kis programot. Bármilyen ASCII editor megteszi, de a rubí alkotói a korábbi csomagba beletettek egy egyszerű editort, amiből könnyű futtatni a ruby programokat. A program neve: sciTE és a C:\ruby\scite könyvtárból indul.
A rubyban minden objektum!
A rubyban a változókat kisbetűvel vagy aláhúzás jellel kezdjük. A változó értékadáskor jön létre, mint a PHP-ban és típust is akkor kap. Tulajdonképpen
nev = "Ez itt egy név"
puts nev               =>"Ez itt egy név"
puts nev.upcase        =>"EZ ITT EGY NEV"
puts nev.upcase!              
puts nev               =>"EZ ITT EGY NEV"
Ha egy változón végrehajtunk egy metódust, akkor az a módosított értéket adja vissza, de ha a metódus után "!" jelet teszünk, akkor módosul a változó értéke is.
Hogyan definiáljunk osztályokat?
class Ember
    def initialize(nev, szuletesi_ev)
       @nev = nev
       @szuletesi_ev = szuletesi_ev
    end
    #Definiálok egy metódust, amely visszaadja az ügyfél nevét.
    #Nem kell nev-nek neveznem, nevezhetnem ugyfel_neve-nek is nyugodtan.
    def nev
       return @nev
    end
    #Hasonlóan a nev-hez...
    def szuletesi_ev
       return @szuletesi_ev
    end
    #Ez a metódus számítja ki az ügyfél életkorát
    def eletkor
       #Létrehozunk egy aktuális időt tartalmazó objektumot,
       #majd lekérjük belőle az évszámot = Time.new.year()
       return Time.new.year()-@szuletesi_ev
    end
end
A fentiek alapján tehát az
- Osztály neve Nagybetűvel kezdődik .
 - az osztályban kell az initialize metódus - ő lesz a konstruktor.
 - Az osztályban lévő adatokat a konstruktorban deklarálom. A név elé a @ jelet tesszük.
 
Ha a deklaráció megvan, akkor példányosíthatjuk is:
fz = Ember.new('Fábián Zoltán', 1961)
puts fz.nev
puts fz.szuletesi_ev
puts fz.eletkor
Összefoglalva a változókat, lokális értékeket, metódusneveket kisbetűvel vagy aláhúzás jellel kezdjük.
A konstansokat és osztályneveket nagybetűvel kezdjük.
A stringek használata során használhatunk '...' és "...." jeleket is. A " használatakor azonban további lehetőségeink vannak. (Aki a PHP-t ismeri, annak ismerős lesz a dolog):
nev = "Zoli"
s = "Ennek az embernek a neve:  #{nev} "
puts s                 =>Ennek az embernek a neve:  Zoli
A fenti példában tehát behelyettesítette a "nev" változó értékét a stringbe a program.
A stringek összef?zését a + jellel lehet megtenni.
Ha egy osztály egy tagváltozójának értékét szeretnénk megkapni, akkor érdemes ugyanazt a nevet használni a metódus írásakor, mint a változó neve. Ilyenkor ez egyfajta get metódus, azaz visszaadja a változó értékét. Ha beállítom a változó értékét akkor is használhatom ugyanaz a metódus nevet, csak egy kicsit más szintaktikával.
class Ember
    def initialize(nev, szuletesi_ev)
       @nev = nev
       @szule = szuletesi_ev
    end
    #Definiálok egy metódust, amely visszaadja az ügyfél nevét.
    #Nem kell nev-nek neveznem, nevezhetnem ugyfel_neve-nek is nyugodtan.
    def nev
       return @nev
    end
    #Hasonlóan a nev-hez...
    def szule
       return @szule
    end
    #Ez a metódus számítja ki az ügyfél életkorát
    def eletkor
       #Létrehozunk egy aktuális időt tartalmazó objektumot,
       #majd lekérjük belőle az évszámot = Time.new.year()
       return Time.new.year()-@szuletesi_ev
    end
   # ez beállítja a változó új értékét
   def nev=(masik_nev)
      @nev = masik_nev
  end
end
A fentiekhez képest van egyszerűbb lehetőség is:
class Ember
    attr_accessor    :nev           #Olvasó és író metódusa sis lesz a névnek.(get és set)
    attr_reader      :szulido       #Olvasó metódus a szuletési időhöz.(get)
    attr_writer      :fizetes       #Író metódus a fizetésnek.(set)
....
end
Mutatók használata
:mutato   - Ha : jellel kezdődik. Bármire mutathat - változóra, objektumra, stringre, stb...
A mutatókat arra hazsnáljuk, hogy konstans szövegeket jelöljünk velük, mert akkor csak egy példány van a memóriában, ha stringeket használunk konkrét értékekkel, minden egyes példány plusz memóriát foglal el.
Tömbök
#új tömb létrehozása
tomb = [1, 3.41, "Helló bello"]
tomb[0]                          #lekérdezzük az Első elemet
tomb << ' van egy kis meló?'     #Fűzzünk hozzá egy új elemet
#A szavak tömbbe pakolására van rövidebb lehetőség is.
tomb = %w {Minden szó a tömb egy elemévé válik}  
#=> ["Minden", "szó", ...]
Hash táblák (Asszociatív tömbök PHP-ban )
#Létrehozunk egy új hash táblát
#A bal oldalt álló valami az a kulcs, a jobb oldalon van az amit tárolunk
honapok = {
    :elso => "Január",
    :masodik => "Február"
}
#szimbólumok lesznek a kulcsok. lehetnének szövegek is, de így állítólag gyorsabb
honapok[:elso]   #Visszaadja, hogy "Január"
Vezérlési szerkezetek
Elágazás
#Elágazás
if  feltétel
    puts "nem túl ok"
elsif másik feltétel
    puts "majdnem jó"
else
    puts "allright"
end
#Ciklus
while feltétel
    puts valami
    valami += 1
end
Ciklus
#Ciklus
while feltétel
    puts valami
    valami += 1
end
For ciklus nincsen, de tö9bb nyelven létezik a foreach ciklus, itt is.
for elem in tomb
    puts elem
end
Blokkok és Iterátorok
Egy blokk pár sor kód két kapcsos zárójel, vagy egy do..end közé zárva.
{
    puts "hello"
}
Vagy
do
    puts "Hello "
    puts "Bello"
end
Paraméterátadás a blokk részére:
Blokknak át lehet adni paramétereket: A paraméter ez után a blokkon belül használható. A blokk paraméterét || jelek közé kell írni.
do |eloleny|
    puts eloleny.nev
end
vagy
{|eloleny|
    puts eloleny.nev
}
A {}-jellel jelölt blokkokat egy sorba szokás írni.
{|animal| puts animal.name}
A blokk nem állhat önmagában, ezért a fenti kódokat beírva nem működnek.
Hogyan tudunk végiglépkedni egy tömbön?
Korábban már megmutattuk a for ciklust, most itt egy másik lehetőség, iterátor és blokk segítségével. Az iterátor sorban egymás után visszaadja a tömb egymás utáni elemeit.
tomb.each do |elem|
    puts elem
end
#vagy rövidebben {}-val írva:
tomb.each{|elem| puts elem}
#Kiírja a tömb elemeit sorban, mivel az each a tömb iterátora, ami az elemeket sorban bepakolja a blokk |elem| paraméterébe
Kivételkezelés
Kivételkezelésre akkor van szükség, ha a program egy hibán végzetes hibával leállna, de mi azt akarjuk, hogy a felhasználó mégis értelmes választ kapjon. Tegyük fel, hogy egy termékcsoportban nincsen adott azonosítójú termék:
begin
    @product = Termekcsoport.find(1)
rescue
    #Ide jön, amit akkor kell csinálni, ha valami baj történt.
    #Például beleírhatjuk a log fájlba, hogy baj van!
    logger.info("Nem található az 1-es azonosítójú termék!")
end
Ha else ágat is definiálunk, akkor a hibátlan futás esetén is kapunk visszajelzést
begin
    @product = Product.find(1)
rescue
    #Ide jön, amit akkor kell csinálni, ha valami baj történt.
    #Például beleírhatjuk a log fájlba, hogy baj van!
    logger.info("Nem található az 1-es azonosítójú termék!")
else
    #Ide pedig azt, ami akkor következik, ha minden rendben.
    logger.info("Megtaláltam az 1-es terméket!")
end
Változó, feltételes inicializálása
Ha még nincs értéke a szam változónak, akkor az egyenl?ség mögöt álló kifejezés kerül bele, ha már van, akkor nem történik semmi.
szam ||= 0
A következő hasznos dolog, hogy Ruby-ban a feltételeket írhatjuk a parancs után is. Az alábbi parancs kiírja, hogy "hello", ha a név Zoli.
puts "hello" if name == "Zoli"
A feltételes elágazát írhatjuk így:
if !true
  puts "hamis"
end
és így is:
unless true
   puts "hamis"
end
Természetesen az unless is kerülhet a parancs mögé:
puts "hamis" unless false
Itt található egy online szamárvezető, ami végigvisz egy jókora adag ruby nyelvvel kapcsolatos okosságon. Érdemes végigmenni rajta: http://tryruby.hobix.com/