Ruby 3D logosu bembeyaz arka planda sade premium kompozisyon

Ruby eğitimi, dili sadece "Rails dili" olarak değil ifade gücü yüksek bir programlama aracı olarak kullanan mühendisler yetiştirir. Ruby'nin "everything is object" felsefesi idiomatik biçimde uygulanır; block, Proc ve Lambda arasındaki farklar net açıklanır.

Eğitim sonunda katılımcı, metaprogramming (method_missing, define_method) ile DSL tasarlar; Rails'in Active Record, Active Job ve Action Cable bileşenlerini kullanır; Gemfile ve Bundler ile dependency yönetimini disipline alır. RSpec ve Minitest ile test yazımı, MVC ile convention over configuration eğitimin pratik tarafıdır. Eğitim sırasında Ruby belgeleri temel referans olarak kullanılır.

Katılımcı Profili

Bu eğitim, Ruby'yi sadece "Rails dili" olarak değil ifade gücü yüksek bir dil olarak kullanmak isteyen rollere yöneliktir:

  • Ruby Geliştiriciler: Rails veya Sinatra ile web yazan mühendisler
  • Backend Mühendisleri: MVC framework deneyimi olan ve Ruby'ye geçen roller
  • DevOps Mühendisleri: Chef, Puppet veya Vagrant ile Ruby kullanan ekipler
  • Startup Mühendisleri: Hızlı MVP yazan ve iterasyon yapan roller
  • Rails Migration Ekipleri: Eski Rails sürümünden modern sürüme geçen ekipler

Ön Gereklilikler

Bu eğitime katılım için aşağıdaki ön bilgiler önerilir:

  • Herhangi bir dilde temel programlama deneyimi
  • OOP kavramlarına (class, inheritance) aşinalık
  • Komut satırı ile rahat çalışma
  • Git ile sürüm kontrol akışı bilgisi
  • HTTP ve REST API kavramlarına temel aşinalık

Süresi ve Tarihi

Süre: 3 gün. Bu süre standart program içindir; ek modüllere ve hedefe göre süre özelleştirilebilir.
Eğitim tarihleri ve saatleri, ekibinizin uygunluğuna göre birlikte planlanır.

Kazanımlar

Eğitim sonunda katılımcı, Ruby'yi sadece "Rails dili" olarak değil ifade gücü yüksek bir dil olarak kullanır:

  • Ruby'nin "everything is object" felsefesini idiomatik kullanır
  • Block, Proc ve Lambda arasındaki farkı net açıklar
  • Metaprogramming (method_missing, define_method) ile DSL tasarlar
  • Rails ile Active Record, Active Job ve Action Cable kullanır
  • Gemfile ve Bundler ile dependency yönetimini disipline alır
  • RSpec ve Minitest ile test yazımını rutine sokar
  • MVC ile convention over configuration'ı somut kararlarda uygular

Ruby Eğitimi Konuları

1. Ruby Dil Felsefesi ve Sözdizimi

  • Matz'ın "developer happiness" felsefesi
  • Everything is an object prensibi
  • Ruby sürüm akışı ve MRI
  • Truthy ve falsy: sadece nil ve false

2. Veri Tipi ve Collection

  • Integer, Float, String, Symbol
  • Array, Hash, Range
  • Enumerable modülü ve metotları
  • map, select, reject, reduce, each
  • String interpolation ve heredoc

3. Method, Block, Proc, Lambda

  • Method tanımı ve return değeri
  • Block ve yield
  • Proc ve Lambda farkı
  • &block ve arity
  • Closure davranışı

4. Class, Module, Mixin

  • Class hierarchy ve inheritance
  • Module ile namespace
  • include, extend, prepend
  • Singleton class ve meta-programming
  • attr_accessor, attr_reader, attr_writer

5. Meta-programming

  • define_method ve send
  • method_missing
  • respond_to? ve introspection
  • Class macro pattern

6. Exception ve Error Handling

  • begin/rescue/ensure
  • Custom exception class
  • raise ve rescue chain
  • retry mekanizması

7. Gem ve Bundler

  • RubyGems ekosistemi
  • Gemfile ve Gemfile.lock
  • Bundler ile bağımlılık yönetimi
  • Gem oluşturma ve yayınlama

8. Rails - MVC Mimarisi

  • Convention over configuration
  • Model, View, Controller ayrımı
  • Rails sürüm akışı
  • Rake ve Rails console

9. Active Record - ORM

  • Migration ve schema
  • Validation ve callback
  • Association: has_many, belongs_to, has_one
  • Scope, eager loading (includes)
  • N+1 problem ve bullet gem

10. Action Controller ve Routing

  • RESTful resources
  • Strong parameters
  • before_action ve filter chain
  • Routing constraints ve nested route

11. Action View ve ERB

  • ERB template engine
  • Partial ve layout
  • Form helper ve form_with
  • Asset Pipeline (Sprockets, Propshaft)
  • Hotwire (Turbo + Stimulus)

12. Authentication - Devise

  • Devise ile authentication
  • OmniAuth (OAuth) entegrasyon
  • JWT ile API authentication
  • Pundit ve CanCanCan ile authorization

13. Active Job ve Background Worker

  • Active Job soyutlama
  • Sidekiq ile Redis queue
  • Delayed Job, Resque
  • Cron job: whenever gem

14. API Mode ve Rails API

  • rails new --api
  • Jbuilder ile JSON view
  • Active Model Serializers
  • Versioning stratejisi

15. Testing - RSpec ve Minitest

  • RSpec söz dizimi
  • Capybara ile integration test
  • Factory Bot ve Faker
  • System test ve fixture
  • Minitest klasik Rails default

16. Performance - Caching

  • Fragment, page, action caching
  • Russian doll caching
  • Redis cache backend
  • Rack::MiniProfiler ve Skylight

17. Deploy - Heroku ve Kamal

  • Heroku klasik deploy
  • Kamal (eski Mrsk): Docker-based deploy
  • Capistrano (legacy)
  • Puma ve concurrency tuning

18. Modern Rails - Hotwire

  • Turbo Drive ile sayfa geçişi
  • Turbo Frame ve Turbo Stream
  • Stimulus controller
  • Solid Queue, Solid Cache, Solid Cable

RUBY EĞİTİMİ ile İlgili
Sıkça Sorulan Sorular ve Cevapları


Block, Proc ve Lambda arasındaki fark nedir?

Block metod argümanı olarak geçer ama nesne değildir, return metoddan çıkar. Proc nesnedir, return içeren proc tüm enclosing method'tan çıkar — sürpriz davranış. Lambda Proc'un sıkı versiyonu; argüman sayısı uyumsuzsa hata verir, return sadece lambda'dan çıkar. Lambda daha güvenli.

Active Record N+1 problemini nasıl önleriz?

includes(:author) ile eager loading — N+1 yerine 2 query. nested için includes(comments: :user). preload doğrudan ikinci query, eager_load JOIN ile tek query. Bullet gem development'ta N+1'i otomatik tespit eder. Index ve query analizi production'da kritik.

method_missing ile DSL nasıl tasarlanır?

method_missing tanımsız çağrılan metod ismini ve argümanları yakalar — dynamic dispatch sağlar. respond_to_missing? ile birlikte implement edilmeli (reflection için). ActiveRecord'un find_by_name benzeri dinamik metodları arkada method_missing ile çalışır. Aşırı kullanım kod takibini zorlaştırır.

Bundler ile Gemfile.lock neden önemli?

Gemfile minimum gereksinimi belirtir (gem 'rails', '~> 7.0'); Gemfile.lock o anda çözümlenen tam sürümleri kaydeder. Lock dosyası commit edilir, ekibin ve production'ın aynı sürümle çalışmasını garanti eder. bundle update ile bilinçli güncelleme yapılır.

RSpec ile Minitest arasında karar?

RSpec describe/it/expect ile BDD-style, fluent matcher zengin, default Rails projelerinde yaygın. Minitest Ruby stdlib, sade, daha az boilerplate. Performans yakın, ekibin syntax tercihi belirleyici. Yeni Rails projeleri RSpec'i sıkça kullanır; ama Minitest backend community'sinde aktif.

Hotwire ve Stimulus ne zaman tercih edilir?

Hotwire (Turbo + Stimulus) JavaScript framework'süz Rails sunar — Turbo Frame ve Turbo Stream ile SPA-benzeri deneyim. Stimulus küçük modular JS'i HTML attribute'larıyla bağlar. React/Vue full SPA'ya gerek yoksa Hotwire daha az JS, daha hızlı geliştirme. Karmaşık client state için yine SPA gerekir.