Pow İncelemesi

Tarih: Ekim 22nd, 2011 | Yazar: | Kategori: Ruby | Etiketler: , , | No Comments »


Ruby on Rails projelerinde özelikle development aşamasında sürekli yaptığımız işlem rails s ile http://localhost:3000 üzerinde uygulamamızı çalıştırmaktır. Eğer birden fazla projemiz varsa ve bunları aynı anda çalıştırmak istiyorsak bu bize biraz külfetli gelir. Her seferinde çalışan projeyi sonlandır, diğer projeye geç ve rails s ile tekrar çalıştır gibi keyifsiz bir durum ile karşı karşıya kalırız. Eğer development ortamında birden fazla proje ile çalışmak istiyorsanız sizi, rails’ in yaratıcılarının yaptığı hafif bir web server ile tanıştırmak istiyorum. Server’ ın adı Pow ve en önemli tarafı hiç bir konfigürasyon yapmadan rails uygulamalarını çalıştırabiliyor olmamız. Kurulum dahil olmak üzere sadece iki üç satır ile bu işleme geçebiliriz.

Mac OS X 10.6 ve üzeri sistemlerde terminal’ i açıp aşağıdaki komutu yazıyoruz. Kurulum bu kadar basit.

$ curl get.pow.cx | sh

Eğer kaynak kodlarını görmeden kurmam! Kurulumu kaynak kodlarından yapacağım derseniz o zaman terminal’ de aşağıdaki komutlar ile bu işlemi gerçekleştirebilirsiniz.

$ git clone https://github.com/37signals/pow.git
$ cd pow
$ npm --global install
$ npm --global run-script pow restart

Pow’ u sistemden kaldırmak için de $ curl get.pow.cx/uninstall.sh | sh komutunu kullanıyoruz.

Kullanmak için de pow’ u kurduğumuz klasöre giriyoruz. Çalıştırmayı istediğimiz rails projele klasörlerini link ediyoruz.

$ cd ~/.pow
$ ln -s /Users/murat/Sites/muratguzel

Yukarıdaki komut ile muratguzel ismindeki projeyi klasör içerisinde link ediyoruz. Artık http://muratguzel.dev/ şeklinde projemize istediğimiz zaman ulaşabiliriz. Bunun gibi birden fazla projeyi de link ederek aynı anda çalıştırmamız mümkün.

Tabiki burada şöyle bir sorun ortaya çıkıyor. Bazen rails s yazdığımızda log/development.log dosyasını sürekli okumak isteyebiliyoruz. Eğer pow kullanırsak bu otomatik olarak çalışmayacaktır. Bu yüzden proje klasörümüze girip aşağıdaki komut ile log akışını sağlayabiliriz.

$ tail -f log/development.log

Ayrıca POW ile kullanabileceğimiz hoş araçlar da var. Örneğin powder pow server’ ın yönetimini yapmamızı sağlayan güzel bir araç.

Pow ile kullanmaktan keyif aldığım hoş bir uygulama ise showoff. Showoff ile localhost’ da çalıştığınız bir rails uygulmasını web üzerinden paylaşabilirsiniz. http://uygulamaadi.kullaniciadiniz.showoff.io/ gibi bir adresten uygulamanızı herkez görebilir. Amaç yaptığınız projeyi release edip, production moda almak değil, development aşamasını diğer kullanıcılarla paylaşmanızdır. Müşterilerinize sunum yapmanın en tatlı yolunun bu olduğunu düşünüyorum. Çünkü Rails camiasında bir projeyi alpha veya beta aşamasını yayına açmak için genelde heroku kullanıyoruz ancak bazı kullandığınız gem’ lerin heroku ile uyumlu çalışması için yapılması gereken işlemler olabiliyor. Bu yüzden showoff bu açıdan en temiz yöntem. Showoff kısaca web ile sizin local’ deki projeniz için bir tunnel yaratıyor. Akıllarda bir soru işareti olmaması için oldukça güvenli olduğunu da belirtelim. Ayrıca beleş olmadığını da söyleyelim :) Gerçi açacağınız tunnel 5 dk. süreyle aktif olacaksa herhangi bir ücret yok. Günlüğü $1 aylığı da 5$.

Showoff.io kullanmak için

$ gem install showoff-io

Kurulum yapıldıktan sonra ücretsiz kullanmak için (5 dk. süreyle)

$ show dev

komutunu çalıştırıyoruz. Bize bir adres veriyor bena verilen adres şu şekilde http://r12t.showoff.io/ İşte bu adrese subdomain olarak pow altına link ettiğiniz proje adlarını verebilirsiniz. Örneğin http://muratguzel.r12t.showoff.io/ adresi ile muratguzel isimli projenize herkes ulaşabilir. Tabiki 5 dk :)


Ruby on Rails 3 ile Formtastic Kullanımı

Tarih: Ekim 7th, 2011 | Yazar: | Kategori: Ruby | Etiketler: , | No Comments »


Eğer size de form yaratmak, kodlamak ve tasarımını yapmak sıkıcı geliyorsa, formtastic’ i incelemenizi öneririm. Bu yazımda formtastic’ in kurulumu ve kullanımı hakkında paylaşacağım. Formtastic Justin French tarafından yapılmış bir ruby on rails gem’ i dir. Formtastic hakkında daha detaylı bilgi için https://github.com/justinfrench/formtastic adresine bakabilirsiniz.

Kurulum için öncelikle Rails projenizde Gemfile içerisinde

gem 'formtastic'

eklemesini yapıyoruz. Ardından bundle install çalıştırıyor ve aşağıdaki gibi kurulumu gerçekleştiriyoruz.

$ rails g formtastic:install

Eğer 2.0.2 versiyonunu kurduysanız install yapmamız formtastic stylesheet dosyalarını kurmuyor. Bunun için siz https://github.com/justinfrench/formtastic/tree/master/app/assets/stylesheets adresinden css dosyalarını ilgili klasöre kopyalayın. Artık formtastic kullanıma hazır.

Kullanımına gelirsek aslında her zaman kullandığım rails’ in form helper’ ından pek te bir farkı yok. Normal olarak kullandığımız form_for helper’ ı nın başına semantic eklememiz (semantic_form_for) yeterli olacaktır.

< %= semantic_form_for @cars do |f| %>

Eğer routes.rb içerisinde resources kullanmıyorsak (ki kullanmalıyız) form action’ ı da verebiliriz.

< %= semantic_form_for @cars, :url => {:action => "yarat"} do |f| %>
< % end %>

Model içinde olan tüm attribute ları almak form içerisine almak istediğimizde ve buttonları da otomatik olarak oluştursun dersek kodumuz aşağıdaki gibi olacaktır.

< %= semantic_form_for @cars do |f| %>
< %= f.inputs # tüm fieldları tipine göre getirecektir. %>
< %= f.buttons %>
< % end %>

Ben bu şekilde kullanımın yanlış olduğunu düşünenlerdenim. Esnek bir uygulama istiyorsak bile tüm modeli forma almak çok yanlış olacaktır. Bunun için aşağıdaki şekilde kullanmak daha akılcıldır.

< %= semantic_form_for @cars do |f| %>
< %= f.inputs do %>
< %= f.input :name %>
< %= f.input :color, :label => "Renk Seçeneği" #Özel etiketleme de yapabiliriz. %>
< % end %>
< %= f.buttons %>
< % end %>

Buraya kadar oldukça şık ilerledik. Ancak modelimiz içerisinde date tipinde bir attribute varsa o zaman yapmamız gereken bir iki işlem var. Default olarak kullandığımızda date tipini formtastic anlıyor ve bizim için tarih alınacak 3 select ekliyor.

Ay isiminlerinin ingilizce olduğunu göreceksiniz. Bunu değiştirmek için config -> locales -> en.yml dosyası içerisine aşağıdaki kodları eklememiz gerekiyor.

date:
      month_names: [~, Ocak, Şubat, Mart, Nisan, Mayıs, Haziran, Temmuz, Ağustos, Eylül, Ekim, Kasım, Aralık]
      abbr_month_names: [~, Oca, Şub, Mar, Nis, May, Haz, Tem, Ağu, Eyl, Eki, Kas, Ara]

Select tipinde değerler için de :collection methodunu kullanabiliriz.

< %= f.input :brand_id,  :as => :select, :collection => Brand.all, :include_blank => false %>

Basit anlamda oldukça etkin kullanılabilecek bir gem. Şu anda rails camiasında da oldukça tutulmaktadır. Formtastic’ i kullanmak model ilişkilerinde de büyük kolaylık sağlıyor.


Steve Jobs (1955-2011)

Tarih: Ekim 6th, 2011 | Yazar: | Kategori: Genel | No Comments »

Bazı adamlar vardır çok takdir edilir. Bazı adamlar vardır başarılı olur. Bazı adamlar vardır dünya için çok faydalı şeyler yapar. Bazı adamlar vardır hemen hemen herkesin hayatına bir şekilde girmiştir. Steve Jobs işte böyle bir adamdı. İsterseniz Microsoft kullanıcısı olun, isterseniz MAC kullanıcısı olun hiç farketmez. Şu anda kullandığımız teknolojinin altında sayısız imzası olan adamlardan biridir. Türkiye’ de biraz daha geç tanınan biri oldu. Bilgisayarlarla haşır neşir olmayan kimseler, izledikleri pixar filmlerinden bile ismini pek duymadı.

Kişisel olarak ta Steve Jobs ile ilgili iki kitap okudum. Hayatını biraz daha net öğrendikten sonra daha çok sevmeye başladım. Evlatlık olarak bir aile verilmiş, üniversiteyi bitirememiş, çocukluk ve gençlik yıllarını maddi sıkıntılarla geçirmiş olması ve sonradan yakaladığı başarısı herkesi etkileyecek nitelikte.

Şiddetle tavsiye ettiğim kitaplar

Ve son olarak bir şey daha var …


Rails 3 Üzerinde Microsoft Sql Server Bağlantısı

Tarih: Ekim 4th, 2011 | Yazar: | Kategori: Ruby | Etiketler: , | No Comments »

Rails üzerinden sql server’ a bağlanmak diğerlerine göre (sqlite3, mysql, oracle) hafif zor olsa da yine de oldukça kolaydır. Öncelikle sisteminize kurmanız gereken bazı eklentiler vardır. Özellikle FreeTDS kurulması gerekiyor. FreeTDS sizin mssql ile bağlantınızda protokol görevi gören tds’ in open source hali. PHP üzerinden sqlserver’ a native olarak bağlanmak istediğinizde de kullanacağınız bir arabirim.

Bu tarz bir ihtiyacın doğması da şu şekilde oldu. Yaptığım bir proje mysql database’ i kullanıyor. İş mantığı çerçevesinde bazı tablolara veri yazdığım zaman aynı kayıt uzaktaki bir sqlserver 2008′ e de veri eklemesi gerekiyor. Bu sebeple rails 3.1.0 üzerinde sql server bağlantısı yapıp, sql cümlelerini execute etmem gerekti.

Kullandığım işletim sistemi Mac OS X Lion ve verdiğim kurulum örnekleri de mac için olacaktır. İlk olarak homebrew’ u kuruyoruz. Bunun için aşağıdaki kodu kopyalayıp, terminal window’ a yapıştırmanız yeterli olacaktır.

/usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"

Homebrew kurduktan sonra FreeTDS kurulumuna geçiyoruz.

brew install freetds

FreeTDS kurulumu tamamlandığında iki tane gem’ i install etmemiz gerekiyor.

  $ gem install tiny_tds
  $ gem install activerecord-sqlserver-adapter

Kurulum tamamlandığında rails projemizin Gemfile dosyasına kurduğumuz gem’ leri ekliyoruz.

  gem 'tiny_tds'
  gem 'activerecord-sqlserver-adapter'

Herşey yolunda giderse database.yml dosyamızı değiştirebiliriz.

  development:
    adapter: sqlserver
    host: mydb.net
    database: myapp_development
    username: sa
    password: secret

İlgili yerlere kendi connection bilgilerinizi yazdığınızda artık projemiz sql server için hazır hale geliyor. Eğer amacınız tüm proje içerisinde veritabanı olarak sql server kullanmaksa ( ki bunu yapmayın:) ) o zaman bu kadar şey işinizi çözecektir. Ancak amacınız ek bir veritabanı olması ise ve sadece belli modellere mssql bağlantısı yapacaksanız o zaman oluşturacağınız model aşağıdaki gibi olmalıdır.

class Mssql < ActiveRecord::Base
  establish_connection (ActiveRecord::Base.configurations["mssql_database"])
  self.abstract_class = true
end

Böylece Microsoft Sql Server’ a bir sql cümlesi göndermek istediğinizde aşağıdaki gibi modelimizi kullanabiliriz.

Mssql.connection.execute "insert into bla bla bla"


Kod Yazarken Ne Dinleyelim ?

Tarih: Eylül 27th, 2011 | Yazar: | Kategori: Programcı Dünyası | Etiketler: , | No Comments »

Kimileri çok sessiz çalışır, kimileri de müzik dinlemeden çalışamaz. Eğer siz de benim gibi ikinci gruptaysanız önerilerimi dikkate alın. Öncelikle jazz, fusion ve rock müzikten hoşlandığımı belirteyim. Fakat çalışırken slap solo atan bir bass, double time giden bir davul veya groove’ un dibine vurmuş bir gitar rif dikkatimi dağıtabiliyor. Bu yüzden son zamanlarda çalışırken iki favori paul’ um var.

Paul Carrack

Eğer yapacağım iş rutin ve senelerdir yaptığım bir iş ise tercihim paul carrack oluyor. Youtube üzerindeki favori playlist‘ im.

Paul Simon

Yaptığım yazılım biraz daha kastırıyorsa, en güzel seçenek Paul Simon’ dur. Otostopçunun galaksi rehberini yazan merhum Douglas Adams da kitabını yazarken sürekli Paul Simon dinlermiş. Gerçekten iyi geliyor. Favori parçam ve albümüm Hearts and Bones.


Fringe 4. Sezon Başlıyor

Tarih: Eylül 19th, 2011 | Yazar: | Kategori: Dizi & Sinema & TV | Etiketler: | No Comments »

Bu sezon sanırım Peter Bishop nerede diye merak edeceğiz ve bunu çözmeye çalışacağız. Haydi şimdiden herkese hayırlı traşlar. Daha 15, 20 sn. promolar olmasına rağmen millet senaryoları ve olası tahminleri çizmeye başlamış. Aslında ben bu fringe olayına sonradan dahil olanlardanım. İlk sezon pilot bölümü 3, 4 kez izlemiş ve beğenmemiştim. Israrla devam edip, sabredip, izleyip bir iki bölüm devirdikten sonra bağımlılık başladı. Şöyle dışarıdan bakıyorum da aslında hiçbir numarası da yok. J.J. Abrams abimiz yaptı diye takılıyoruz. 4. sezon bakalım nasıl olacak. Bu cuma Amerika’ da yayınlanıyor ve cumartesi biz izleriz. Umarım klasik fringe sezonlarından biri (sezon yarısında kadar baygın bölümler ve sonradan alevlenen konu değişimleri vs.) daha olmaz.

Promolardan bir bukle sunmadan da geçmeyelim. Bu yazıyı yazdığım sırada da fring rsmi twitter hesabından tesadüfen (ya da paralel evrenin bir ilgili olabilir) Fringe’ in 5. promosu yayınlandı diye tweet atıldı. Unutmadan …. Eğer teaser’ lardan gördüğümüz gibi görüntüler sürekli titreyecekse ayvayı sağlam yedik.

FRINGE – Where is Peter Bishop? Teaser 1

FRINGE – Where is Peter Bishop? Teaser 2

FRINGE – Where is Peter Bishop? Teaser 3

FRINGE – Where is Peter Bishop? Teaser 4

FRINGE – Where is Peter Bishop? 5


Şirinler (Smurfs)

Tarih: Eylül 18th, 2011 | Yazar: | Kategori: Genel | Etiketler: , | No Comments »

Küçükken hastasıydım. Gargameli ve kedisini bile severdim. Tesadüf oldu ki kızımı ilk kez sinemaya götürdüm ve bu da şirinler oldu. Eğer ki onu götürmek durumunda kalmasaydım sanırım gitmezdim.

Filme gelecek olursak aslında oldukça başarısız bir film olmuş. Konu namına hiç birşey yok. Eskinden 15 – 20 dk. şirinler bile konu olarak daha doyurucu olurdu. Ancak şirinleri tekrar görmek ve o meşhur soundtrack’ i tekrar dinlemek filmin konusunu unutturuyor. Türkçe seslendirmeleri de gayet başarılı. Hala gösterimdeyken vakit kaybetmeden gidin derim.


Ruby’ de Array Kullanımı

Tarih: Haziran 20th, 2011 | Yazar: | Kategori: Ruby | Etiketler: , , | No Comments »

Bu yazıda ruby üzerinde array ve list kullanımından bahsedeceğim. Kanımca veri yapıları arasında en önemlisi dizilerdir. Ruby üzerinde dizi kullanımları oldukça basit ve etkindir. Yine de array kullanımı açısından PHP’ yi kıskandığımı da söylemem lazım. Ancak yine de PHP’ deki kadar olmasa da Ruby üzerinde de çok keyifli şekilde dizilerle çalışabilirsiniz. Önce dizilerin nasıl yaratıldığına bakalım. 5 elementli ve her elementi integer olan bir dizi yaratacağız ve üzerinde verilerle ilgili basit işlemler yapacağız. Aşağıda vermiş olduğum örnekler “# =>” bölümü ekran çıktısında olabilecek değerlerdir. puts kullandığımız zaman normalde satır satır değerleri almamız gerekiyor ama ben örneklerin çıktıları anlaşılsın diye tek satır olarak gösterdim.

x = [1,2,3,4,5]
puts  x[0]
puts  x[1]
# 2 numaralı index' in değerini 10 arttıralım ve ekrana basalım.
puts x[2] += 10
puts x[2] #=> 13
# 0 numaralı index içerisindeki integer olan değeri string ile değiştirelim ve ekrana basalım
puts x[0] = "String " * 3
# tüm diziyi ekrana basalım
puts x #=> ["String String String, 2, 13, 4, 5]

Şimdiki örneğimizde boş bir array yaratalım ve içerisine yeni elementler ekleyelim. Yeni element eklerken < < operatöründen faydalanacağız. Bu operatör ile push yöntemini çalıştırmış oluyoruz. Aynı işlemi x.push(“Ruby”) şeklinde de yapabiliriz. Oluşturduğumuz diziden elementleri pop yöntemi ile aldığımıza da dikkat edin. Burada önemli olan nokta pop ile aldığımız değeri ekrana bastıktan sonra array’ den de ilgili elementin siliniyor olmasıdır.

x = []
x < < "Murat"
x << "Ruby"
x << "Rails"
x << "Güzel" puts x.length #=&gt; 4
puts x #=> ["Murat","Ruby", "Rails", "Güzel"]
puts x.pop
puts x.pop
puts x.length # => 2

Dizi işlemlerinde sık kullanacağımız fonksiyonlardan birisi de join dir. Join ile tüm array içerisindeki elemntleri yan yana yazdırabiliriz. Ayrıce vereceğimiz parametre ile istediğimiz formatta da listeleyebiliriz. Örneğin

x = ["Ruby","Java","C/C++", "C#"]
puts x.join #=> RubyJavaC/C++C#
puts x.join('-') #=> Ruby-Java-C/C++-C#
# Ruby de istersek parantez kullanmayabiliriz.
puts x.join ' | ' #=> Ruby | Java | C/C++ | C#

Array içerisindeki son ve ilk elemente ulaşmak için first ve last fonksiyonlarını kullanabiliriz.

x = [1,9,3,4,6,423,2,165,15,45,8]
puts x.last #=> 8
puts x.first #=> 1

Dizi içerisindeki bir elementi aradığımız zaman include? fonksiyonunu kullanabiliriz.

x = ["Sarı","Mavi,"Kırmızı","Mor"]
puts "Sarı rengi mevcut" if x.include? "Sarı"
puts "Yeşil rengi yok" unless x.include? "Yeşil"

Diziyi sıralı bir dizi haline getirmek için sort fonksiyonunu kullanıyoruz. Sıralı olmayan rastgele bir dizi almak istediğimiz zaman shuffle fonksiyonunu kullanabiliriz.

x = [8,1,69,254,2,0]
# orjinal dizi
puts x # => [8, 1, 69, 254, 2, 0]
puts x.sort.join ',' # 0,1,2,8,69,254
x.shuffle # => [1, 0, 254, 8, 69, 2]
x.shuffle # => [0, 69, 1, 2, 8, 254]

Diziden istediğimiz kadar eleman alıp yeni bir dizi olarak kullanmak için take fonksiyonunu kullanıyoruz. Belirli bir karar yapısına göre eleman almak için de take_while fonksiyonunu kullanabiliriz. Gerçek uygulamalarda oldukça işe yarayan bir fonksiyondur. Sıklıkla kullanabileceğimiz bir başka fonksiyonda uniq’ dir.

x = [8,1,69,254,2,0]
# orjinal dizi
x.take 2 # => [8, 1]
x.take_while {|z| z&lt;100} # => [8, 1, 69]
x < < 2
x << 0
x << 2
puts x # => [8, 1, 69, 254, 2, 0, 2, 0, 2]
puts x.uniq # => [8, 1, 69, 254, 2, 0]


Ruby’ de Text ve String İşlemleri

Tarih: Haziran 19th, 2011 | Yazar: | Kategori: Ruby | Etiketler: , , | No Comments »

Text ve Strings işlemleri bir programlama için can alıcı şekilde önemlidir. Bu konuda Ruby kendi dil yapısı nedeniyle çok sade ve temiz bir kod dizimine sahiptir. Özellikle tüm programcıların sytnax’ ın dan iğrendiği ve korktuğu regular expression söz dizimlerini de oldukça temiz bir şekilde kullanmamızı sağlar.

puts “Merhaba Dünya!” yazdığımız zaman otomatik olarak string oluşturmuş ve bunu ekrana basmış oluyoruz. Hangi class’ a sahip olduğumuzu görmek için console’ a şu şekilde kodu yazalım ve görelim

puts "Merhaba Dünya!".class

Yukarıdaki kodu yazdığımız zaman ekranda String yazılı olduğunu göreceğiz. Buradan anlaşılacağı üzere bir string yarattığımız zaman ille de bunu bir değişkene atmak zorunda değiliz. String’ i direk yazdığımız zaman String class’ larının methodlarına ulaşabilir ve çalıştırabiliriz. Örneğin “Merhaba Dünya!” string’ i içerisinde kaç karakter olduğunu ekrana basalım.

puts "Merhaba Dünya!".length

Bir char’ ın ASCII değerini almak da son derece basit. ?x bize x’ in ascii değerini vermektedir.

puts ?x
puts 120.chr

String işlemlerinde çoğu zaman kodun okunmasını zorlayan string’ leri birleştirmektir. Bununla ilgili olarak c# da çok basit bir kod örneği vermek istiyorum.

int x=10;
int y=20;
Console.Writeline(x.ToString()  + " + " + y.ToString() + " = " ((x+y)).ToString());

Ruby’ de bu işlemi yapmak istersek,

x = 10
y = 20
puts "#{x} + #{y} = #{x + y}"

Başka bir örnek daha verelim. C# altında “merhaba, nasılsınız” diyelim ve bir de ruby altındaki kod yapısına bakalım.

string adi = "Murat Güzel";
Console.WriteLine("Merhaba "+ adi +", nasılsınız ?");

Ruby altında

adi = "Murat Güzel"
puts "Merhaba #{adi}, nasılsınız ?"

Bazı string fonksiyonları :

“Test” + “Test” TestTest
“Test”.capitalize Test
“Test”.downcase test
“Test”.chop Tes
“Test”.next Tesu
“Test”.reverse tseT
“Test”.sum 416
“Test”.swapcase tEST
“Test”.upcase TEST
“Test”.upcase.reverse TSET
“Test”.upcase.reverse.next TSEU


Ruby’ de Karar Yapıları

Tarih: Haziran 19th, 2011 | Yazar: | Kategori: Ruby | Etiketler: , | No Comments »

Kontrollerin ve mantığın olmadığı programlar sadece hesap makineleri gibidir.

Bu yazımda Ruby üzerinde karar yapılarından bahsedeceğim. Ruby dili kod yapısı olarak ingilizce gibi bir dil olduğunu ve yazımının son derece keyifli olduğunu da söylemem gerekiyor.

IF Kalıpları

c# ile şöyle bir kod yazalım. Eğer 18 yaşından küçük bir değer varsa ekrana “Çok gençsiniz, tadını çıkarın!” yazdıralım.

int yas = 10;
if(yas>18)
   Console.WriteLine("Çok gençsiniz, tadını çıkarın!");

Aynı kodu Ruby ile yazarsak (If Modifier);

yas = 10
puts "Çok gençsiniz, tadını çıkarın!" if yas < 18

Biraz daha işi ilerletelim.

yas = 10
puts "Çok gençsiniz, tadını çıkarın!" if yas < 18 && yas > 12

Evet yukarıdaki kodu çalıştırırsanız herhangi bir yanıt alamayacaksınız. Çünkü yas 12 den büyük değildir. Bunun için şöyle bir kod yazabiliriz if yerine unless kullanıyoruz.

yas = 10
puts "Çok gençsiniz, tadını çıkarın!" unless yas < 18 && yas > 12

Karşılaştırmalar

x > y ( Büyüktür )
x < y ( Küçüktür )
x == y ( Eşittir )
x >= y ( Büyüktür veya Eşittir )
x < = y ( Küçüktür veya Eşittir )
x <=> y ( Eğer x ve y eşitse 0 döndürür, x büyük ise 1 döndürür ve y büyük ise -1 döndürür )
x != y ( Eşit değildir )

If Else kalıbı diğer dillerden alışkın olduğumuz gibi

x=1
if x > 2
   puts "x 2' den büyüktür"
elsif x < = 2 and x!=0
   puts "x' in degeri 1' dir"
else
   puts "Numarayı tahmin edemiyorum :)"
end

Benzer karar yapısını unless ile uygularsak;

x=1
unless x>2
   puts "x degeri 2' den küçüktür."
 else
  puts "x değeri 2' den büyüktür."
end

Basit İterasyonlar

Ruby' de herşey bir objedir. Bunun sağlamış olduğu bir avantaj ile aşağıdaki gibi bir döngü yapabiliriz.

10.times do puts "murat " end

Yukarıdaki kodu çalıştırdığınızda göreceksiniz. Ekranda 10 defa murat yazıyor. do ve end anahtar kelimelerini kaldırarak aşağıdaki gibi de yazabiliriz.

10.times {puts "murat "}

Aynı kodu c# ile yazmak isteseydik

for(int x=0;x&lt;10;x++)
{
    Console.Writeline "murat";
}

farklı örneklere bakalım

1.upto(10) {puts "murat"}
10.downto(1) {puts "murat"}
0.step(100,10) {puts "murat"}
 
1.upto(10) {|x| puts x}