# 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. - Published: 2026-04-17 - Updated: 2026-04-17 - Author: SharpSkill - Tags: ruby-on-rails, rails-8, tutorial, migration, solid-queue, solid-cache, authentication - Reading time: 9 min --- 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 Ozeti** > > 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. ```ruby # 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.1 ``` Puma eklentisi, gelistirme ortaminda Solid Queue'yu web sunucusuyla birlikte baslatmakta, bu da ayri bir surec baslatma gerekliligi ortadan kaldirmaktadir: ```ruby # 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. ```ruby # config/environments/production.rb config.cache_store = :solid_cache_store ``` Solid 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. ```yaml # config/cable.yml production: adapter: solid_cable polling_interval: 0.1 keep_messages_around_for: 1.day ``` ## Yerlesik 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. ```bash # Generate the authentication scaffolding bin/rails generate authentication ``` Bu 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. ```ruby # 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 end ``` Parola 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. > **Uretici Kapsami** > > 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. ```ruby # 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]) end ``` `expect` 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. ```ruby # 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. ## 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. ```bash kamal setup kamal deploy ``` Thruster, 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. ```dockerfile 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. ```yaml # 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.sqlite3 ``` Bu 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. > **Kontrol Edilmesi Gereken On Kosullar** > > 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 ```ruby # Gemfile gem "rails", "~> 8.0" ``` ```bash bundle update rails ``` ### Adim 2: Guncelleme Gorevini Calistirma ```bash bin/rails app:update ``` Bu 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: ```bash 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: 1. Gorev adaptorunun Solid Queue ile degistirilmesi 2. Onbellek deposunun Solid Cache'e gecilmesi 3. Action Cable'in Solid Cable'a tasinmasi (varsa) 4. 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. ```ruby # 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 end ``` Rails 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.permit` yerine 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:update` calistirilmasi ve yeni ozelliklerin asamali olarak benimsenmesi - Rails 8.1, harici araclari azaltmak isteyen ekipler icin Continuable Jobs ve entegre CI eklemektedir --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/tr/blog/ruby-on-rails/ruby-on-rails-8-new-features-migration-guide