Ruby on Rails 8: Yeni Ozellikler ve 2026 Goc Rehberi
Rails 8, Solid Trifecta, yerlesik kimlik dogrulama, Kamal 2 ve Propshaft ile geliyor. Rails 7'den gecis adimlari ve kod ornekleri ile kapsamli rehber.

Ruby on Rails 8, framework tarihinde onemli bir donusumu temsil etmektedir. Kasim 2024'te yayinlanan ve Ekim 2025'te Rails 8.1 ile pekistirilen bu surum dongusu, yillardir uretim mimarilerini agirlastiran dis bagimliliklari ortadan kaldirmaktadir. Redis, Sprockets, Capistrano: Rails 8, veritabanina dayali entegre alternatifler sayesinde tum bu bilesenleri opsiyonel hale getirmektedir. Gelistirici ekipleri icin bu yeniden yapilandirma, dagitimi onemli olcude basitlestirmekte, altyapi maliyetlerini azaltmakta ve orta olcekli projeler icin giris bariyerini dusurmektedir.
Rails 8, gorevler, onbellek ve WebSocket'ler icin Redis'i Solid Trifecta (Solid Queue, Solid Cache, Solid Cable) ile degistirmekte, yerlesik kimlik dogrulama ureticisi sunmakta, varsayilan asset pipeline olarak Propshaft'i benimsemekte ve kesintisiz dagitimlar icin Kamal 2'yi icermektedir. Ruby 3.2 veya ustu gereklidir.
Solid Trifecta: Veritabanina Dayali Altyapi
Rails 8 oncesinde, ciddi her uretim uygulamasi uc kritik islevde Redis'e bagimliydı: arka plan gorevleri, onbellekleme ve WebSocket pub/sub. Solid Trifecta, bu uc yapiyi dogrudan mevcut iliskisel veritabani tarafindan yonetilen PostgreSQL, MySQL ve SQLite uyumlu adaptorlerle degistirmektedir.
Operasyonel kazanc aninda ortaya cikmaktadir: ayri bir Redis ornegini hazirlamak, izlemek ve surdurmeye artik gerek yoktur. Odun, ham performanstir. Redis, cok yuksek hacimli senaryolarda daha hizli kalmaktadir, ancak uygulamalarin buyuk cogunlugu icin veritabani tabanli adaptorler fazlasiyla yeterli performans sunmaktadir. 37signals'in ana uygulamasi Basecamp, 60 gunluk saklama suresiyle 10 TB'lik bir Solid Cache'i uretimde calistirmaktadir.
Solid Queue: Redis'siz Arka Plan Gorevleri
Solid Queue, veritabanina dayali Active Job backend'i olarak Sidekiq, Resque veya Delayed Job'in yerini almaktadir. PostgreSQL 9.5+ ve MySQL 8.0+'da FOR UPDATE SKIP LOCKED ozelligini kullanmakta, SQLite icin bir geri donus mekanizmasi sunmaktadir.
# config/environments/production.rb
config.active_job.queue_adapter = :solid_queue
# config/solid_queue.yml
production:
dispatchers:
- polling_interval: 1
batch_size: 500
workers:
- queues: "*"
threads: 5
processes: 2
polling_interval: 0.1Puma eklentisi, gelistirme ortaminda Solid Queue'yu web sunucusuyla birlikte baslatmakta, bu da ayri bir surec baslatma gerekliligi ortadan kaldirmaktadir:
# config/puma.rb
plugin :solid_queue if ENV["SOLID_QUEUE_IN_PUMA"] || Rails.env.development?Solid Queue, yinelenen gorevleri, esZamanlilik kontrollerini ve kuyruk bazinda duraklatma ve devam ettirme gibi gelismis ozellikleri desteklemektedir. Dakikada 10.000'den az gorev isleyen uygulamalar icin yuku sorunsuzca kaldirmaktadir.
Solid Cache ve Solid Cable
Solid Cache, onbelleğe alinan HTML parcalarini Memcached veya Redis yerine veritabaninda saklamaktadir. Disk depolamasi (SSD/NVMe), RAM'in maliyetinin bir kesri kadarina mal olmakta, bu da daha uzun saklama suresiyle cok daha buyuk onbellek havuzlarina olanak saglamaktadir.
# config/environments/production.rb
config.cache_store = :solid_cache_storeSolid Cable, Action Cable'in Redis pub/sub adaptorunun yerini almaktadir. WebSocket mesajlari bir tabloya yazilmakta ve varsayilan olarak her 100 ms'de bir sorgulanmaktadir. Sonuc: cogu kullanim senaryosu icin neredeyse gercek zamanli iletisim ve 24 saat sonra mesajlarin otomatik temizlenmesi.
# config/cable.yml
production:
adapter: solid_cable
polling_interval: 0.1
keep_messages_around_for: 1.dayYerlesik Kimlik Dogrulama Ureticisi
Rails 8, giris, cikis ve parola sifirlama icin gerekli yapilari ureten bir kimlik dogrulama ureticisi icermektedir. Temel kimlik dogrulama icin harici bir gem gerekmemektedir.
# Generate the authentication scaffolding
bin/rails generate authenticationBu komut User modeli, Session modeli, SessionsController, PasswordsController ve bir Authentication concern olusturmaktadir. Uretilen kod, bcrypt ile has_secure_password kullanmakta ve IP basina 3 dakikada 10 giris denemesi sinirlamasi icermektedir.
# app/controllers/concerns/authentication.rb
module Authentication
extend ActiveSupport::Concern
included do
before_action :require_authentication
helper_method :authenticated?
end
private
def require_authentication
resume_session || request_authentication
end
def resume_session
Current.session = find_session_by_cookie
end
def find_session_by_cookie
Session.find_by(id: cookies.signed[:session_id]) if cookies.signed[:session_id]
end
def request_authentication
session[:return_to_after_authenticating] = request.url
redirect_to new_session_path
end
def authenticated?
Current.session.present?
end
endParola sifirlama, veritabaninda saklanan token'lar yerine has_secure_password tarafindan uretilen, suresi dolan imzali token'lara dayanmaktadir. Uretici bilerek kayit, e-posta dogrulama veya sosyal kimlik dogrulamayi icermemektedir. Uretilen kod, Devise'in tam bir yedegi degil, genisletilebilir saglam bir temeldir.
Yerlesik uretici giris, cikis ve parola sifirlamayi kapsamaktadir. Kullanici kaydi, e-posta dogrulama, OAuth ve cok faktorlu kimlik dogrulama manuel olarak veya Authentication Zero gibi gem'ler araciligiyla eklenmelidir.
params.expect ile Guvenli Parametre Yonetimi
Rails 8, geleneksel params.require.permit yerine daha katı bir alternatif olan params.expect'i sunmaktadir. Yeni yaklasim, sessizce nil dondurmek yerine anahtarlar eksik oldugunda bir istisna firlatmaktadir.
# Before (Rails 7)
def user_params
params.require(:user).permit(:name, :email, :role)
end
# After (Rails 8)
def user_params
params.expect(user: [:name, :email, :role])
endexpect metodu, :user anahtarinin var oldugunu ve yalnızca izin verilen ozellikleri icerdigini garanti etmektedir. Yoklugunda hemen ActionController::ParameterMissing firlatmakta, bu da yurutme akisinin ilerisinde sessiz hatalari onlemektedir.
Propshaft: Varsayilan Yeni Asset Pipeline
Propshaft, varsayilan asset pipeline olarak Sprockets'in yerini almaktadir. Sprockets derleme, kucultme ve parmak izi eklemeyi monolitik bir sistemde yonetirken, Propshaft yalnizca statik dosyalarin sunumu ve parmak izi eklemesine odaklanmaktadir.
JavaScript paketleme icin Propshaft modern araclara devretmektedir: esbuild, Vite veya Bun. CSS isleme Tailwind CLI veya dart-sass uzerinden yapilmaktadir. Sonuc: daha hizli, daha ongorulebilir ve mevcut frontend ekosistemiyle uyumlu bir asset pipeline.
# Gemfile (Rails 8 default)
gem "propshaft"Sprockets kullanan mevcut uygulamalar kisitlama olmadan bunu kullanmaya devam edebilmektedir. Goc, Sprockets'a ozgu yonergelerin (//= require) kaldirilmasi ve import maps veya JavaScript bundler'in benimsenmesinden ibarettir.
Ruby on Rails mülakatlarında başarılı olmaya hazır mısın?
İnteraktif simülatörler, flashcards ve teknik testlerle pratik yap.
Kamal 2 ve Thruster: Kesintisiz Dagitim
Rails 8, bos bir Linux sunucusunu tek komutla uretim sunucusuna donusturebilen bir dagitim araci olan Kamal 2 ile onceden yapilandirilmis olarak gelmektedir. Kamal 2, Traefik'i bu amac icin ozel olarak tasarlanmis bir reverse proxy olan Kamal Proxy ile degistirmektedir.
kamal setup
kamal deployThruster, Kamal Proxy ve Puma arasinda yer almaktadir. Dosya indirmeleri icin X-Sendfile hizlandirmasi, otomatik asset sikistirma (gzip/brotli) ve HTTP/2 destegi saglamaktadir. Rails 8 tarafindan uretilen Dockerfile varsayilan olarak Thruster'i icermektedir.
RUN gem install thruster
CMD ["thrust", "./bin/rails", "server"]Bu teknoloji yigini (Kamal 2 + Kamal Proxy + Thruster + Puma) SSL sonlandirma, kesintisiz dagitimlar ve asamali yeniden baslatmalari Nginx veya HAProxy gibi harici servislere basvurmadan yonetmektedir.
Uretim Icin Guclendirilmis SQLite
Rails 8, uretimde SQLite destegini onemli olcude iyilestirmektedir. Connection pooling, WAL modu ve gelistirilmis esZamanlilik, SQLite'i kucuk ve orta olcekli uygulamalar icin uygun hale getirmektedir. Solid Trifecta ile birlestiginde, tek bir sunucu herhangi bir harici veritabani sunucusu olmadan tamamen SQLite uzerinde bir Rails 8 uygulamasi calistirabilmektedir.
# config/database.yml (SQLite production setup)
production:
primary:
adapter: sqlite3
database: storage/production.sqlite3
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
cache:
adapter: sqlite3
database: storage/production_cache.sqlite3
queue:
adapter: sqlite3
database: storage/production_queue.sqlite3
cable:
adapter: sqlite3
database: storage/production_cable.sqlite3Bu yapilandirma, tum uygulama yiginini dort SQLite dosyasindan calistirmaktadir. Kamal, depolama dizinini kalici bir birim olarak baglamakta, verilerin container yeniden baslatmalarindan kurtulmasini saglamaktadir.
Rails 7'den Rails 8'e Goc
Rails 7.2'den Rails 8.0'a gec, uygulama onceden kaldirilma uyarilarini gidermis olmak kosulyla sorunsuz ilerlemektedir. Rails 7.0 veya 7.1 altindaki uygulamalar adim adim ilerlemelidir: 7.0'dan 7.1'e, sonra 7.1'den 7.2'ye ve son olarak 7.2'den 8.0'a.
Rails 8, Ruby 3.2 veya uzerini gerektirmektedir. Ruby versiyonunun kontrol edilmesi, test paketinin Rails 7.2 altinda gectiginden emin olunmasi ve guncellemeyi baslatmadan once gem uyumlulugunu RailsBump uzerinden dogrulanmasi gerekmektedir.
Adim 1: Bagimliliklari Guncelleme
# Gemfile
gem "rails", "~> 8.0"bundle update railsAdim 2: Guncelleme Gorevini Calistirma
bin/rails app:updateBu komut yapilandirma dosyalarini Rails 8 varsayilanlarina guncellemektedir. git diff ile her degisikligin incelenmesi onemlidir. Onemli degisiklikler arasinda yeni Regexp.timeout varsayilani (1 saniye), db:migrate'in degisen davranisi (bos veritabanlarinda sema yukleme) ve Propshaft yapilandirmasi bulunmaktadir.
Adim 3: Sema Yeniden Duzenlemeyi Yonetme
Rails 8, veritabanindaki gercek sutun sirasini yansitmak icin schema.rb sutunlarini yeniden siralamaktadir. Bu kozmetik degisikligi gercek migrasyon degisikliklerinden izole etmek icin sema dump'inin hemen calistirilmasi onerilmektedir:
bin/rails db:schema:dump
git add db/schema.rb
git commit -m "Reorder schema columns for Rails 8"Adim 4: Yeni Ozellikleri Asamali Olarak Benimseme
Solid Trifecta, Propshaft ve kimlik dogrulama ureticisi mevcut uygulamalar icin opsiyonel kalmaktadir. Ana guncelleme stabilize olduktan sonra bunlari tek tek benimsemek tercih edilmelidir:
- Gorev adaptorunun Solid Queue ile degistirilmesi
- Onbellek deposunun Solid Cache'e gecilmesi
- Action Cable'in Solid Cable'a tasinmasi (varsa)
- Asset pipeline'in Propshaft'a gocunun degerlendirilmesi
Adim 5: Parametre Yonetimini Modernlestirme
Tum controller'larda params.require.permit cagrilarinin params.expect ile degistirilmesi gerekmektedir. Bu degisiklik opsiyoneldir ancak daha saglam parametre dogrulamasi icin siddetle onerilmektedir.
Rails 8.1: Continuable Jobs ve Entegre CI
Ekim 2025'te yayinlanan Rails 8.1, Rails 8 tarafindan konulan temelleri iki onemli ozellikle genisletmektedir. Continuable Jobs (ActiveJob::Continuable), uzun sureli gorevleri otomatik olarak devam eden adimlara bolmektedir. Bir import sirasinda sunucu yeniden baslarsa, gorev sifirdan baslamak yerine tam olarak kaldigi yerden devam etmektedir.
# app/jobs/import_records_job.rb
class ImportRecordsJob < ApplicationJob
include ActiveJob::Continuable
def perform(cursor:)
records = Record.where("id > ?", cursor.value || 0).limit(1000)
records.each do |record|
process(record)
cursor.advance(record.id)
end
end
endRails 8.1 ayrica entegre CI yapilandirmasi ve yerel Markdown renderlama sunarak harici bagimliliklari daha da azaltmaktadir.
Sonuc
Rails 8, ozellikleri tehlikeye atmadan operasyonel basitligi on plana cikaran framework felsefesinde onemli bir donusumu temsil etmektedir. Hatirlanmasi gereken temel noktalar:
- Solid Trifecta (Queue, Cache, Cable), gorevler, onbellek ve WebSocket'ler icin zorunlu bagimlilik olarak Redis'i ortadan kaldirmaktadir
- Yerlesik kimlik dogrulama ureticisi, ucuncu parti gem olmadan oturum tabanli kimlik dogrulama icin temel saglamaktadir
params.expect,params.require.permityerine daha katı ve guvenli parametre yonetimi sunmaktadir- Propshaft, varsayilan asset pipeline olarak Sprockets'in yerini almakta ve paketlemeyi modern araclara devretmektedir
- Kamal 2 ve Thruster, Nginx veya Capistrano'ya basvurmadan kesintisiz dagitimlar saglamaktadir
- Rails 7.2'den goc artimsal olarak gerceklesmektedir: bagimliliklarin guncellenmesi,
app:updatecalistirilmasi ve yeni ozelliklerin asamali olarak benimsenmesi - Rails 8.1, harici araclari azaltmak isteyen ekipler icin Continuable Jobs ve entegre CI eklemektedir
Pratik yapmaya başla!
Mülakat simülatörleri ve teknik testlerle bilgini test et.
Etiketler
Paylaş
