Ruby On Rails. Hüseyin Gömleksizoğlu

Benzer belgeler
Ruby On Rails. Hüseyin Gömleksizoğlu

Turquaz. Açık kodlu muhasebe yazılımı Turquaz Proje Grubu

Rails İle Ağ Uygulamaları Geliştirimi

Compiere Açık kodlu ERP + CRM yazılımı. Hüseyin Ergün Önsel Armağan Serkan Demir

Qt ile Bir Ağ Uygulaması

Düzenli İfadeler & Kullanım Alanları

Düzenli İfadeler & Kullanım Alanları

REALTIME LINUX. 3. Linux ve Özgür Yazılım Şenliği Murat Demirten, 16 Mayıs 2004, Ankara

QT Eğitimi - 4 : İkili Saat (Binary Clock)

Android e Giriş. Öğr.Gör. Utku SOBUTAY

Sunum Planı. Django Nedir? Django projesi oluşturmak Basit bir blog uygulaması. Şablon Kullanımı Diğer özellikleri

Ajanda. Ruby Betik Dili ve Ruby on Rails. Dr. Erek Göktürk. IdentraYazılım ve Donanım Çözümleri. identra.com.

Python Web 2.0 Python ve Web 2.0 Son. Python ve Web 2.0. Gökmen GÖKSEL, 3 Mayıs 2007

İnternet Programcılığı

DBMAIL KURULUMU BELGESI (Howto Install Dbmail) Yazan: Ozgur Karatas

Bölüm 10: PHP ile Veritabanı Uygulamaları

Ruby. Prof.Dr.Timur Karaçay Başkent Üniversitesi

Java EE web uygulamaları geliştirmek için kullanılan açık kaynak web uygulama framework üdür.

E-Prints: Açık Erişimli Arşiv Oluşturma Yazılımı; Kurulumu-Kullanımı-Özellikleri

ÖZGÜR YAZILIMLAR İLE J2EE

Özgür Yazılımlarla Web Programlama. Özlem Özgöbek

Ruby Nedir? 1.1 Amaçlar. 1.2 Ruby nin Yapısal Sıradüzeni

QT Eğitimi - 2 :Yerleşim (Layout)

Linux Terminal Sunucusu. Afşin Taşkıran

Mantıksal Hacim Yönetimi (LVM)

Kullanıldığı Başlıca Siteler

PHP CodeIgniter MVC Framework

Ders Tanıtım Sunumu. Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. 26 Şub Öğr. Gör.

1 İÇERİK YÖNETİM SİSTEMLERİ VE JOOMLA 1. İçerik Yönetim Sistemi (CMS) Nedir? 1. Neden Joomla? 2. Joomla nın Tarihi 3. Joomla nın Anlamı & Logosu 4

İNTERNET PROGRAMCILIĞI HAFTA MYSQL - PHPMYADMIN. Hazırlayan Fatih BALAMAN. İçindekiler. Hedefler. Mysql Nedir.

Ruby ve Rails'de Exception Kullanımı

Paketi Açalım Indirmiş olduğunuz paketi tar komutu ile açın: tar xzf nagios version.tar.gz Kullanıcı Gruplarını Oluşturalım Paketi derledikten sonra n

Ç NDEK LER G R fi 1 Bafllamadan Önce 1 Kitab Kimler Okumal? 1 Kitap çerisindeki Örnekler 2 Örneklerin Kullan m 3 Çekinmeden Yaz n 7

MOBILEPAX SOAP PRODUCT API KULLANIM ŞEKLİ

1 GİRİŞ 1 Bu Kitap Kime Hitap Eder? 2 Kitapta Nelerden Bahsedilmiştir? 3 Kitabı Takip Edebilmek için Nelere İhtiyaç Duyacaksınız?

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Veritabanı Uygulamaları Tasarımı

Tekir (Ön Muhasebe Yazılımı)

JavaServerFaces. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4

WebInstaller. 1. Kurulum Đçin Gereksinimler

Symfony Doctrine. Symfony-Doctrine. Deniz Bahadr GÜR, Mehmet Onur YALAZI. Özgür Web Teknolojileri Günleri, 2010

İNTERNET PROGRAMCILIĞI - II

Client Server Database

MySqlConnection connection; MySqlCommand command; MySqlDataReader reader; MySqlDataAdapter adapter; DataTable table;

Boğaziçi Üniversitesi Bilgi İşlem Merkezi. Web Yönetimi Birimi. Drupal Kullanım Kılavuzu

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

1 RUBY HAKINDA 1 Ruby nin Gelişim Hikayesi 1 Neden Ruby? 1 Neden Bu Kadar Popüler? 2

MOBİL UYGULAMA GELİŞTİRME

Web Uygulama Anaçatıları. Tahir Emre KALAYCI. May 5, 2009

PHP ile İnternet Programlama

XAML Dili Microsoft Blend. Tasarım ve Kodlamanın. Birbirinden Ayrılması

MongoDB. Doğan Aydın. Eylül, 2011

GNU/Linux ve Özgür Yazılım. Mahir B. Aşut EkoPC Kurucu Ortağı ve Yöneticisi, LKD Üyesi

PAKET TRANSFER SİSTEMİ

Nasıl Pardus Geliştiricisi Olunur?

PHP I PHP I. E. Fatih Yetkin. 26 Eylül 2011

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

ÖĞRENME FAALİYETİ 1 ÖĞRENME FAALİYETİ 1 1. FORMLAR

İÇERİK YÖNETİM SİSTEMİ (CMS) Bir web sitesi yayınlamak için yapılması gerekenler:

Data Structures Lab Güz

Kullanıcı Dökümanı. Flash B2B. Versiyon 0.1

KANTAR UYGULAMASI Kurulum Kılavuzu

Kaynak Kod Güvenliği Bir Güvensiz API Örneği

Bu Kitap Kime Hitap Eder? 2 Kitapta Nelerden Bahsedilmiştir? 3 Kitabı Takip Edebilmek için Nelere İhtiyaç Duyacaksınız?

BM-209 Nesne Yönelimli Programlama. Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü

#include <stdio.h> int main(void) { FILE * dosya; dosya = fopen("soru1.txt", "w"); fprintf(dosya, "Merhaba Dunya!"); fclose(dosya); return 0; }

Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2

Büyük Kurumlarda Özgür Yazılım Kullanımına Giriş

Yaptığımız web sitelerinin daha kullanışlı olması için veritabanı sistemleri ile bağlantı kurup ihtiyaca göre verileri okuyup yazmasını isteriz.

LDAP VE WORDPRESS İLE

Geliştirme Klavuzu İlk Uygulama Hello World

Doküman JETSMS XML Mesaj Đşlemleri Yardım Dokümanı Tarih Sürüm 1.1.0

Useroam Cloud Kurulum Rehberi

PHP'ye Giriş Türkiye PHP Grubu - Linux Şenlikleri PHP Eğitim / Tanıtım Seminerleri Ankara, 11 Mayıs 2006 Hidayet Doğan <hdogan@hido.

Opera V2 Kurulum Klavuzu V0.01

PHP+Memory Cache+PostgreSQL Kullanarak Performanslı Veritabanı Uygulaması Geliştirme

Java JDK (Java Development Kit) Kurulumu:

Internet Programming II

08220 Internet Programcılığı II

Columns : * Next Text Query veri tabanındaki urunler tablosu görülüyor. Finish, çalıştırınca direk veri tabanındaki bilgileri alıyor.

FINDIK Herkese Açık Filtre

Veri Tabanı Yönetim Sistemleri Bölüm - 3

Yedek Almak ve Yedekten Geri Dönmek

FOG SERVER (FREE GHOST SERVER) YAZILIMININ KURULUMU

Gökhan AKIN İTÜ/BİDB Ağ Grubu Başkanı - ULAK/CSIRT

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 7. LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ. LINUX Yapısı

MOODLE UZAKTAN ÖĞRETİM SİSTEMİ

MOBILEPAX XML PRODUCT API KULLANIM ŞEKLİ

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Java Programlamaya Giriş

cofaso ile farkı yaşayın Şubat

Swing ve JDBC ile Database Erişimi

TachoMobile Server Uygulaması Kullanım Kılavuzu

Program Kurulum. Turquaz Muhasebe. İçindekiler

Php İle Mysql Veritabanından Bilgi Çekme

Transkript:

Ruby On Rails Hüseyin Gömleksizoğlu huseyin@gomleksizoglu.com

Belge Lisansı Bu belgeyi, Free Software Foundation tarafından yayınlanmış bulunan GNU Özgür Belgeleme Lisansının 1.2 ya da daha sonraki sürümünün koşullarına bağlı kalarak kopyalayabilir, dağıtabilir ve/veya değiştirebilirsiniz. Lisans'ın bir kopyasını http://www.gnu.org/copyleft/gfdl.html adresinde bulabilirsiniz. Bu belgedeki bilgilerin kullanımından doğacak sorumluluklar ve olası zararlardan belge yazarı sorumlu tutulamaz. Bu belgedeki bilgileri uygulama sorumluluğu uygulayana aittir. Tüm telif hakları aksi özellikle belirtilmediği sürece sahibine aittir. Belge içinde geçen herhangi bir terim, bir ticari isim ya da kuruma itibar kazandırma olarak algılanmamalıdır. Bir ürün ya da markanın kullanılmış olması ona onay verildiği anlamında görülmemelidir. page 2

Herşey bir programcının eğlenceli bir programlama dili oluşturmak istemesiyle başladı.

Önce Biraz Ruby Yukihiro "Matz" Matsumoto 1993 yılında başladı ve 1995 yılında ilk defa yayınlandı Tamamen nesne tabanlı betik bir dil Açık Kaynak Kodlu Zengin Kütüphaneler Öğrenmesi kolay, Kodlaması eğlenceli Esnek ve Hedefe yönelik Kolay arayüz HIZLI!

http://www.ruby-lang.org

http://tryruby.hobix.com/

irb

Ruby'den Örnekler def say_goodnight(name) result = "Good night, #{name.capitalize}" return result end def say_hello(name) Hello, + name.capitalize end puts say_goodnight('uncle') puts say_goodnight 'uncle' puts say_goodnight uncle page 8

Ruby'den Örnekler if a == 1 puts bir end if a == 1 then puts bir if a == 1; puts bir ; end if a == 1 puts bir else puts bir değil elsif end puts bir if a == 1 puts bir değil unless a == 1 a = 1 page 9

Ruby'den Örnekler until a > 10 a = a + 1 end while a <= 10 a += 1 end for i in [1,2,3,10,11, merhaba ] puts i end [1,2,3,10,11].each do i puts i end [1,2,3].map { i i * 10 } page 10

Ruby'den Örnekler numbers ={ :one => bir, :two => iki, :three => üç } puts numbers[:two] redirect_to :action => 'show', :id => message.id page 11

Ruby'den Örnekler class MyClass def initialize(value) @value = value end def value @value end def value=(value) @value = value end end require "class" a = MyClass.new(10) puts a.value a.value = 15 puts a.value page 12

Ruby'den Örnekler class MyClass2 attr_reader :name, :date attr_writer :date attr_accessor :age def initialize(name, date, age) @name = name @date = date @age = age.to_i end end b = MyClass2.new("Ruby", "13/05/2006", 20) puts b.name puts b.date puts b.age b.date = "14/05/2006" b.age = 20.01 b.name = "Ruby On Rails" <=undefined method `name=' page 13

Ruby For Rails - www.manning.com

Ruby On Rails Acısız web uygulamaları geliştirme

Rails Nedir? Rails tamamen Ruby dili ile yazılmış bir altyapı(framework)tur. David Heinemeir Hansson tarafından 2004 yılında yayınlandı. 3 Katmanlı Mimari - (Model-View-Controller) page 16

Neden Rails? Ruby 3 Katmanlı mimari İş Hayatının ihtiyaçlarına yönelik hızlı üretim Üretim Odaklı Kolay Başlangıç Her aşamada çalışan sistem Plugin desteği Doğal AJAX uyumluluğu Generater Ruby'den gelen veritabanı kütüphanesi page 17

www.rubyonrails.org

www.rubyforge.org

Rails Kurulumu Ruby kurulur pisi install ruby www.ruby-lang.org dan kaynak kodundan derlenebilir Gem kurulur rubyforge.org'den kaynak kodları indirilir. ruby setup.rb Gem aracılığı ile rais kurulur gem install rails include-dependencies ActionMailler, ActionPack, ActionWebservice, ActiveRecord, ActiveSupport kütüphaneleri de kurulacak page 20

Editörler vi / emacs TextMate Radrails Eclipse (RubyDevelopmentTools) FreeRide SciTE Arachno Editplus, notepad2 Klasör listesi gösterenler daha kullanışlı page 21

3 Katmanlı Mimari Kullanıcıdan bilgi alma Ekranda bilgi gösterme View İşleyişi kontrol etme Karar verme Controller Veritabanı işlemleri Veri üzerine işlemler model veritabanı page 22

Örnek Uygulama

Rails'in adres yapısı config/routes.rb dosyası içinde tanımlanır Dosya bazlı değil controller, action ve id bazlıdır Başka bilgiler de kullanılabilir Örneğin http://localhost/welcome/hello/1 :controller/:action/:id http://localhost/arsiv/2006/05/12 :yil /:ay/:gun :controller => news, :action => show şeklinde olabilir. page 24

Şablon Yapısı Rails template yapısını destekler Bir sayfa gösterilmeden önce app/views/layouts/application.rhtml veya app/views/layouts/:controller.rhtml app/views/:controller/:action.rhtml dosyalarını işler Application.rhtml dosyası varsa tüm sayfalar için o dosya kullanılır yoksa her controller için ayrı şablon dosyası kullanılır. page 25

Veritabanı işlemleri Rails veritabanına erişmek için Ruby'nin veritabanı sürücülerini kullanır Uygulama içindeki config/database.yml dosyasına göre bağlanır. 3 farklı çalışma durumuna göre farklı veritabanları kullanır. Development Geliştirme Production Yayın, sürüm Test Veritabanı işlemleri ile MCV yapısında Model katmanı ilgilenir page 26

config/database.yml development: adapter: mysql database: blog_development username: root password: host: localhost socket: /var/run/mysqld/mysqld.sock production: adapter: mysql database: blog_production username: root password: host: localhost socket: /var/run/mysqld/mysqld.sock page 27

migration Uygulama versiyonları ile veritabanı arasındaki uyumsuzluğu gidermek için geliştirilmiş script/generate migration create_blog rake migrate rake migrate VERSION=1 page 28

Model bağlantıları has_one has_many belongs_to has_and_belongs_to page 29

Kontroller validates_presence_of :title, :description, :image_url validates_numericality_of :price validates_uniqueness_of :title validates_format_of :image_url, :with => %r{^http:.+\.(gif jpg png)$}i, :message => "must be a URL for a GIF, JPG, or PNG image" protected def validate errors.add(:price, "should be positive") unless price.nil? price >= 0.01 end Kontroller model üzerinde tanımlanır ve tüm sistem üzerinde geçerli olur. page 30

Kontroller # validates_acceptance_of # validates_associated # validates_confirmation_of # validates_each # validates_exclusion_of # validates_format_of # validates_inclusion_of # validates_length_of # validates_numericality_of # validates_presence_of # validates_size_of # validates_uniqueness_of page 31

Hata Ayıklama Ruby'nin debug kütüphanesini kullanır scripts/breakpointer breakpoint() view üzerinde debug(params) page 32

Agile Web Development with Rails

SORULAR?