Sıfırdan Ruby on Rails Uygulaması Geliştirme 🚀
🧠 Teknik Özet
Bu rehberde, Ubuntu 18.04 tabanlı bir geliştirme ortamında Ruby on Rails kullanarak tam işlevli bir web uygulaması geliştireceksiniz. Amaç, Rails’in Model–View–Controller (MVC) mimarisini kullanarak veritabanı tabanlı CRUD işlemleri, veri doğrulama ve kullanıcı kimlik doğrulaması eklemektir.
Uygulama örneği: sharkapp
Veritabanı: SQLite3
Hedef: CRUD işlemleri, doğrulama ve authentication
💡 Bu Rehberde Ne Öğreneceksiniz
- Rails’in MVC yapısını anlamak
rails newvescaffoldkomutlarıyla hızlı proje oluşturmak- SQLite veritabanı kurmak ve migrate işlemleri yürütmek
- Model doğrulamaları (validations) eklemek
- Temel HTTP kimlik doğrulaması (authentication) uygulamak
⚙️ 1. Veritabanı Altyapısını Kurma (SQLite3)
Rails geliştirme ortamında varsayılan olarak SQLite kullanır. Aşağıdaki komutlarla kurulum yapabilirsiniz:
sudo apt update
sudo apt install sqlite3 libsqlite3-dev
sqlite3 --version
Bu komutlar SQLite’ı ve gerekli geliştirme dosyalarını kurar.
🧩 2. Yeni Bir Rails Projesi Oluşturma
Yeni bir uygulama başlatın:
rails new sharkapp
cd sharkapp
Bu komut temel dizin yapısını, Gemfile’ı ve varsayılan MVC bileşenlerini oluşturur.
Rails sunucusunu başlatın:
rails server
Tarayıcıda
http://localhost:3000adresine gidin. Rails karşılama ekranı görünmelidir.
Eğer uzaktaki bir geliştirme sunucusunda çalışıyorsanız:
sudo ufw allow 3000
rails server --binding=tr1-sunucu-ip
Ardından
http://tr1-sunucu-ip:3000adresini ziyaret edin.
🧱 3. Model ve CRUD Kaynaklarını Oluşturma
Shark adında bir model ve CRUD kaynakları oluşturun:
rails generate scaffold Shark name:string facts:text
Bu komut model, controller, view ve migration dosyalarını otomatik olarak üretir.
Veritabanını güncelleyin:
rails db:migrate
Migration,
sharkstablosunu oluşturur ve kullanıma hazır hale getirir.
🌐 4. Uygulamanın Ana Görünümünü Ayarlama
Ana sayfayı (root) Shark listesini gösterecek şekilde yapılandırın:
# ~/sharkapp/config/routes.rb
Rails.application.routes.draw do
resources :sharks
root 'sharks#index'
end
Artık
http://localhost:3000adresinde Shark listesini göreceksiniz.
🧠 5. Veri Doğrulamaları (Validations) Ekleme
Veri girişlerinde tutarlılığı sağlamak için doğrulama kuralları ekleyin:
# ~/sharkapp/app/models/shark.rb
class Shark < ApplicationRecord
validates :name, presence: true, uniqueness: true
validates :facts, presence: true
end
Bu kurallar, boş veya tekrar eden kayıtların veritabanına kaydedilmesini engeller.
🔒 6. Temel Kimlik Doğrulama (Authentication)
Uygulama içeriğini değiştirebilmek için HTTP Basic Authentication ekleyin:
# ~/sharkapp/app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
http_basic_authenticate_with name: 'sammy', password: 'shark', except: [:index, :show]
end
indexveshoweylemleri haricinde tüm işlemler giriş gerektirir.
Tarayıcıda “Yeni Shark” veya “Düzenle” bağlantısına tıkladığınızda kimlik doğrulama penceresi açılacaktır.
🧪 7. Uygulamayı Test Etme
Rails sunucusunu başlatın:
rails s
http://localhost:3000 adresine gidin.
Yeni bir “Shark” kaydı ekleyip düzenleyerek CRUD işlemlerini test edin.
Hatalı veya boş alan bırakırsanız model doğrulaması devreye girecektir.
❓ Sıkça Sorulan Sorular (SSS)
1. MVC mimarisi ne işe yarar?
Model (veri ve iş mantığı), View (arayüz) ve Controller (istek yönetimi) katmanlarını ayırarak kodun düzenli kalmasını sağlar.
2. Scaffold kullanmak iyi bir fikir mi?
Küçük projelerde hızlı başlangıç sağlar. Büyük projelerde ise elle kontrol tercih edilir.
3. Active Record validation nedir?
Rails’in model katmanında veri girişini kontrol etmenizi sağlayan yapıdır.
4. Basic Auth güvenli midir?
Geliştirme ortamı için uygundur. Üretim ortamında Devise veya bcrypt kullanılması önerilir.
5. Rails rotaları ne işe yarar?
Gelen HTTP isteklerini doğru controller’daki doğru metoda yönlendirir.
🎯 Sonuç
Artık Ruby on Rails kullanarak sıfırdan bir MVC uygulaması geliştirdiniz! Projenizde model doğrulaması ve kimlik doğrulama gibi temel güvenlik katmanlarını uyguladınız. 💡 Uygulamanızı hemen Rabisu Bulut üzerinde bir geliştirme sunucusunda test edebilir ve ölçeklendirebilirsiniz.