Web geliştirme dünyasına hızlı ve etkili bir giriş yapmak isteyenler için Ruby on Rails (genellikle sadece "Rails" olarak anılır) mükemmel bir çerçevedir. Bu rehber, Rails'in ne olduğu, neden popüler olduğu ve ilk uygulamanızı nasıl geliştireceğiniz konusunda size adım adım yol gösterecek. Amacımız, sadece temel komutları göstermekle kalmayıp, aynı zamanda Rails'in arkasındaki felsefeyi ve anahtar kavramları da anlamanızı sağlamaktır.
Ruby on Rails Nedir?
Ruby on Rails, Ruby programlama dili kullanılarak yazılmış açık kaynaklı bir web uygulama geliştirme çatısıdır (framework). David Heinemeier Hansson tarafından geliştirilen Rails, "Convention over Configuration" (Yapılandırma Üzerine Anlaşma) ve "Don't Repeat Yourself" (Kendini Tekrar Etme - DRY) gibi felsefeleri benimser. Bu felsefeler sayesinde geliştiriciler, standartlara uyarak çok daha az kod yazma ve daha hızlı uygulama geliştirme imkanı bulurlar. Özellikle prototipleme ve MVP (Minimum Viable Product) geliştirmede çok tercih edilir.
Neden Ruby on Rails Kullanmalısınız?
Gereksinimler ve Kurulum
Rails uygulaması geliştirmeye başlamadan önce sisteminizde bazı araçların kurulu olması gerekir. En önemlileri:
Ruby'yi yönetmek için rvm veya rbenv gibi araçları kullanmanız şiddetle tavsiye edilir. Bu araçlar, farklı Ruby versiyonlarını kolayca kurmanıza ve aralarında geçiş yapmanıza olanak tanır.
Kurulum tamamlandıktan sonra, Ruby ve Rails versiyonlarını kontrol edebilirsiniz:
Temel Rails Kavramları: MVC Mimarisi
Rails, web uygulamalarını düzenlemek için Model-View-Controller (MVC) mimarisini kullanır. Bu, uygulamanızın farklı sorumluluklarını ayırarak kodunuzu daha okunabilir, yönetilebilir ve test edilebilir hale getirir.
Routing (Rotlama)
Rails'te, bir HTTP isteğinin (GET, POST vb.) hangi denetleyici (controller) eylemine yönlendirileceği `config/routes.rb` dosyasında tanımlanır. Bu, uygulamanızın URL yapısını belirlemenizi sağlar. Örneğin, `/posts` adresine yapılan bir GET isteği, `PostsController` içindeki `index` eylemine yönlendirilebilir.
Veritabanı Göçleri (Migrations)
Rails, veritabanı şemasını (tablolar, sütunlar vb.) yönetmek için "Migrations" (Göçler) kullanır. Bu, veritabanı değişikliklerini kod olarak izlemenizi ve farklı geliştirme ortamları arasında kolayca paylaşmanızı sağlar. Yeni bir tablo eklemek veya mevcut bir tabloyu değiştirmek için göç dosyaları oluşturursunuz.
İlk Rails Uygulaması: Basit Bir Blog
Şimdi, tüm bu kavramları bir araya getirerek basit bir blog uygulaması oluşturalım. Bu uygulama, gönderi oluşturma, listeleme, görüntüleme, düzenleme ve silme (CRUD işlemleri) yeteneğine sahip olacak.
[*] Veritabanı göçlerini çalıştırın:
Oluşturulan migration dosyasını veritabanında çalıştırın.
[*] Rails sunucusunu başlatın:
Tarayıcınızı açın ve http://localhost:3000/posts adresine gidin. Artık bir blog gönderisi oluşturabilir, düzenleyebilir ve silebilirsiniz!
[/list]
Daha Derinlemesine: El ile Uygulama Geliştirme
Scaffolding harika bir başlangıç olsa da, çoğu zaman uygulamaları sıfırdan, manuel olarak oluşturmanız gerekecektir. Bu, Rails'in nasıl çalıştığını daha iyi anlamanızı sağlar.
Rails Ekosistemi ve İleri Konular
Rails öğrenme yolculuğunuzda karşılaşacağınız bazı önemli kavramlar ve araçlar:
[*] Testler: Rails, uygulamanızın doğru çalıştığından emin olmak için güçlü bir test altyapısı sunar. Hem birim testleri (unit tests) hem de entegrasyon testleri (integration tests) yazabilirsiniz. Minitest veya RSpec gibi kütüphaneler kullanılır.
[*] Dağıtım (Deployment): Uygulamanızı canlıya almak için Heroku, DigitalOcean, AWS, Google Cloud veya Capistrano gibi araçlar ve platformlar kullanabilirsiniz.
[*] API Geliştirme: Rails, sadece tam teşekküllü web uygulamaları değil, aynı zamanda mobil uygulamalar veya tek sayfalı uygulamalar (SPA) için API (Uygulama Programlama Arayüzü) geliştirmek için de harikadır. `--api` seçeneğiyle yeni bir Rails API uygulaması oluşturabilirsiniz.
[/list]
Sonuç
Ruby on Rails, web geliştirme dünyasına hızlı ve verimli bir başlangıç yapmak için eşsiz bir araçtır. "Convention over Configuration" ve "DRY" prensipleri sayesinde, kod yazmaya daha az, iş mantığına daha fazla odaklanabilirsiniz. Bu rehber, Rails'in temel kavramlarına ve ilk uygulamanızı nasıl kurup çalıştıracağınıza dair kapsamlı bir bakış sunmuştur.
Unutmayın, bu sadece başlangıç. Rails'in derinlikleri oldukça fazladır. Öğrenmeye devam etmek için Rails Kılavuzları, Drifting Ruby gibi kaynakları takip etmenizi ve aktif Rails topluluğuna katılmanızı şiddetle tavsiye ederim. Bol şans!
Ruby on Rails Nedir?
Ruby on Rails, Ruby programlama dili kullanılarak yazılmış açık kaynaklı bir web uygulama geliştirme çatısıdır (framework). David Heinemeier Hansson tarafından geliştirilen Rails, "Convention over Configuration" (Yapılandırma Üzerine Anlaşma) ve "Don't Repeat Yourself" (Kendini Tekrar Etme - DRY) gibi felsefeleri benimser. Bu felsefeler sayesinde geliştiriciler, standartlara uyarak çok daha az kod yazma ve daha hızlı uygulama geliştirme imkanı bulurlar. Özellikle prototipleme ve MVP (Minimum Viable Product) geliştirmede çok tercih edilir.
"Convention over Configuration" ilkesi, geliştiricinin her şeyi manuel olarak yapılandırmak yerine, çerçeve tarafından belirlenmiş varsayılan kurallara uymasını teşvik eder. Bu, kararları azaltır ve geliştirme hızını artırır.
Neden Ruby on Rails Kullanmalısınız?
- Hız: Rails, geliştirme sürecini önemli ölçüde hızlandıran birçok yardımcı araç ve otomatikleştirilmiş görev sunar.
- Güçlü Topluluk: Büyük ve aktif bir topluluğa sahiptir. Bu, sorunlarınız olduğunda kolayca yardım bulabileceğiniz anlamına gelir.
- Geniş Ekosistem (Gems): Binlerce "gem" (kütüphane) mevcuttur. Kimlik doğrulama, ödeme işlemleri, resim yükleme gibi birçok yaygın özellik için hazır çözümler bulabilirsiniz.
- Ölçeklenebilirlik: Twitter, Basecamp, Shopify gibi büyük platformlar başlangıçta veya hala Rails kullanmaktadır.
- Öğrenmesi Kolaylık: Ruby dili sezgiseldir ve Rails'in yapısı mantıksaldır. Başlangıç seviyesindeki geliştiriciler için harika bir başlangıç noktasıdır.
Gereksinimler ve Kurulum
Rails uygulaması geliştirmeye başlamadan önce sisteminizde bazı araçların kurulu olması gerekir. En önemlileri:
- Ruby: Rails'in üzerine inşa edildiği programlama dilidir. En az Ruby 2.7+ veya daha yenisi önerilir.
- Node.js ve Yarn: JavaScript derleme ve paket yönetimi için gereklidir (örneğin Webpacker gibi araçlar için).
- Veritabanı Sistemi: Varsayılan olarak SQLite kullanır, ancak üretim ortamında PostgreSQL veya MySQL tercih edilir.
Ruby'yi yönetmek için rvm veya rbenv gibi araçları kullanmanız şiddetle tavsiye edilir. Bu araçlar, farklı Ruby versiyonlarını kolayca kurmanıza ve aralarında geçiş yapmanıza olanak tanır.
Kod:
# rbenv ile Ruby kurulumu (örnek)
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'eval "$(~/.rbenv/bin/rbenv init -)"' >> ~/.bashrc
source ~/.bashrc
rbenv install 3.1.2 # İstediğiniz Ruby versiyonunu kurun
rbenv global 3.1.2
# Node.js ve Yarn kurulumu (işletim sisteminize göre değişir)
# Ubuntu için:
sudo apt install nodejs npm
sudo npm install --global yarn
# Rails kurulumu
gem install rails -v 7.0.4 # Güncel Rails sürümünü kullanın, -v ile belirtebilirsiniz
Kurulum tamamlandıktan sonra, Ruby ve Rails versiyonlarını kontrol edebilirsiniz:
Kod:
ruby -v
rails -v
Temel Rails Kavramları: MVC Mimarisi
Rails, web uygulamalarını düzenlemek için Model-View-Controller (MVC) mimarisini kullanır. Bu, uygulamanızın farklı sorumluluklarını ayırarak kodunuzu daha okunabilir, yönetilebilir ve test edilebilir hale getirir.
- Model (Veri ve İş Mantığı): Uygulamanızın verilerini ve iş mantığını temsil eder. Veritabanıyla etkileşimi yönetir. Rails'te modeller genellikle Active Record adı verilen bir ORM (Object-Relational Mapping) kütüphanesi ile oluşturulur. Örneğin, bir blog uygulamasında "Post" veya "User" bir model olabilir.
- View (Kullanıcı Arayüzü): Kullanıcıya gösterilen verilerin sunumundan sorumludur. HTML, CSS ve JavaScript'in yanı sıra, Rails'te genellikle ERB (Embedded Ruby) şablonları kullanılır. Bu şablonlar, Ruby kodunu HTML içine gömmenize olanak tanır.
- Controller (İstek Yöneticisi): Kullanıcıdan gelen istekleri alır, uygun modeli çağırır, verileri işler ve ardından bu verileri bir görünüme (View) ileterek kullanıcıya geri gönderir. Controller'lar, uygulama akışını yöneten ana beyinlerdir.
Routing (Rotlama)
Rails'te, bir HTTP isteğinin (GET, POST vb.) hangi denetleyici (controller) eylemine yönlendirileceği `config/routes.rb` dosyasında tanımlanır. Bu, uygulamanızın URL yapısını belirlemenizi sağlar. Örneğin, `/posts` adresine yapılan bir GET isteği, `PostsController` içindeki `index` eylemine yönlendirilebilir.
Kod:
# config/routes.rb
Rails.application.routes.draw do
resources :posts # CRUD işlemleri için standart rotaları otomatik oluşturur
get 'about', to: 'pages#about'
root 'pages#home' # Ana sayfa
end
Veritabanı Göçleri (Migrations)
Rails, veritabanı şemasını (tablolar, sütunlar vb.) yönetmek için "Migrations" (Göçler) kullanır. Bu, veritabanı değişikliklerini kod olarak izlemenizi ve farklı geliştirme ortamları arasında kolayca paylaşmanızı sağlar. Yeni bir tablo eklemek veya mevcut bir tabloyu değiştirmek için göç dosyaları oluşturursunuz.
Kod:
# Yeni bir tablo oluşturmak için migration
rails generate migration CreateArticles title:string body:text
# Migration'ı çalıştırmak için
rails db:migrate
İlk Rails Uygulaması: Basit Bir Blog
Şimdi, tüm bu kavramları bir araya getirerek basit bir blog uygulaması oluşturalım. Bu uygulama, gönderi oluşturma, listeleme, görüntüleme, düzenleme ve silme (CRUD işlemleri) yeteneğine sahip olacak.
- Yeni bir Rails uygulaması oluşturun:
Uygulama adı olarak `blog_app` kullanalım. `--database=postgresql` ile veritabanını belirtebilirsiniz; belirtmezseniz varsayılan olarak SQLite kullanır.
Kod:rails new blog_app --database=postgresql cd blog_app
- Veritabanını oluşturun:
Kod:rails db:create
- Model ve Controller'ları hızlıca oluşturun (Scaffolding):
Rails, belirli bir model için tüm CRUD işlemlerini ve ilgili View'ları otomatik olarak oluşturan "scaffold" komutuna sahiptir. Bu, hızlı prototipleme için harikadır. "Post" adında bir model oluşturalım, `title` string ve `content` text tipinde olsun.
Kod:rails generate scaffold Post title:string content:text
[list type="circle"] - `app/models/post.rb` (Model)
- `app/controllers/posts_controller.rb` (Controller)
- `app/views/posts/` (View dosyaları - index, show, new, edit, _form vb.)
- Veritabanı migration dosyası
- Test dosyaları
- Rota tanımları (`resources
osts`)
[*] Veritabanı göçlerini çalıştırın:
Oluşturulan migration dosyasını veritabanında çalıştırın.
Kod:
rails db:migrate
[*] Rails sunucusunu başlatın:
Kod:
rails server
[/list]
Daha Derinlemesine: El ile Uygulama Geliştirme
Scaffolding harika bir başlangıç olsa da, çoğu zaman uygulamaları sıfırdan, manuel olarak oluşturmanız gerekecektir. Bu, Rails'in nasıl çalıştığını daha iyi anlamanızı sağlar.
- Statik Sayfalar Oluşturma:
Ana sayfa veya hakkımızda gibi statik sayfalar için bir controller oluşturabilirsiniz:
Kod:rails generate controller Pages home about
Kod:# config/routes.rb get 'home', to: 'pages#home' get 'about', to: 'pages#about' root 'pages#home'
- Model Oluşturma (Validasyonlar ve İlişkiler):
Manuel olarak bir model oluşturalım. Örneğin, bir `Comment` modeli, `Post` modeliyle ilişkilendirilecek.
Kod:rails generate model Comment body:text post:references rails db:migrate
`app/models/comment.rb` dosyasına gidin ve model ilişkisini tanımlayın:
Kod:# app/models/comment.rb class Comment < ApplicationRecord belongs_to :post validates :body, presence: true, length: { minimum: 10 } end
ost` ifadesi, her yorumun bir gönderiye ait olduğunu belirtir. `validates` satırı ise `body` alanının boş olmamasını ve en az 10 karakter uzunluğunda olmasını sağlayan bir validasyon ekler. Validasyonlar, veritabanına kaydedilmeden önce verilerin doğruluğunu kontrol etmenizi sağlar.
- Controller Aksiyonları:
Bir controller içinde farklı HTTP isteklerine (GET, POST, PUT/PATCH, DELETE) karşılık gelen aksiyonlar tanımlarsınız. Her aksiyon genellikle bir view'ı render eder veya bir başka URL'ye yönlendirme yapar.
Kod:# app/controllers/comments_controller.rb (Örnek Parça) class CommentsController < ApplicationController def create @post = Post.find(params[:post_id]) @comment = @post.comments.build(comment_params) if @comment.save redirect_to @post, notice: 'Yorum başarıyla eklendi.' else render 'posts/show', status: :unprocessable_entity end end private def comment_params params.require(:comment).permit(:body) end end
- Form Oluşturma:
Rails, form oluşturmayı kolaylaştıran yardımcı metotlar sunar. Örneğin, bir gönderi için yeni bir yorum formu:
Kod:<!-- app/views/posts/show.html.erb (Parça) --> <h3>Yorum Bırak</h3> <%= form_with model: [@post, @post.comments.build] do |form| %> <% if form.object.errors.any? %><div id="error_explanation"><h2><%= pluralize(form.object.errors.count, "hata") %> bu yorumu kaydederken ortaya çıktı:</h2><ul><% form.object.errors.full_messages.each do |message| %><li><%= message %></li><% end %></ul></div><% end %><div class="field"><%= form.label :body %><br/><%= form.text_area :body %></div><div class="actions"><%= form.submit "Yorumu Kaydet" %></div> <% end %>
Rails Ekosistemi ve İleri Konular
Rails öğrenme yolculuğunuzda karşılaşacağınız bazı önemli kavramlar ve araçlar:
- Gems (Mücevherler): Rails'in en büyük güçlerinden biri, geniş "gem" ekosistemidir. Gems, uygulamanıza kolayca ekleyebileceğiniz kütüphanelerdir. Örneğin:
[list type="circle"] - Devise: Kullanıcı kimlik doğrulama için popüler bir gem.
- Sidekiq: Arka plan işleri (background jobs) için.
- Pundit/CanCanCan: Yetkilendirme (authorization) için.
- Kaminari/WillPaginate: Sayfalama (pagination) için.
Kod:
# Gemfile (örnek)
gem 'devise'
gem 'sidekiq'
[*] Testler: Rails, uygulamanızın doğru çalıştığından emin olmak için güçlü bir test altyapısı sunar. Hem birim testleri (unit tests) hem de entegrasyon testleri (integration tests) yazabilirsiniz. Minitest veya RSpec gibi kütüphaneler kullanılır.
[*] Dağıtım (Deployment): Uygulamanızı canlıya almak için Heroku, DigitalOcean, AWS, Google Cloud veya Capistrano gibi araçlar ve platformlar kullanabilirsiniz.
[*] API Geliştirme: Rails, sadece tam teşekküllü web uygulamaları değil, aynı zamanda mobil uygulamalar veya tek sayfalı uygulamalar (SPA) için API (Uygulama Programlama Arayüzü) geliştirmek için de harikadır. `--api` seçeneğiyle yeni bir Rails API uygulaması oluşturabilirsiniz.
[/list]
Sonuç
Ruby on Rails, web geliştirme dünyasına hızlı ve verimli bir başlangıç yapmak için eşsiz bir araçtır. "Convention over Configuration" ve "DRY" prensipleri sayesinde, kod yazmaya daha az, iş mantığına daha fazla odaklanabilirsiniz. Bu rehber, Rails'in temel kavramlarına ve ilk uygulamanızı nasıl kurup çalıştıracağınıza dair kapsamlı bir bakış sunmuştur.
Unutmayın, bu sadece başlangıç. Rails'in derinlikleri oldukça fazladır. Öğrenmeye devam etmek için Rails Kılavuzları, Drifting Ruby gibi kaynakları takip etmenizi ve aktif Rails topluluğuna katılmanızı şiddetle tavsiye ederim. Bol şans!