Rails ve Hotwire ile Modern Web/Mobil Uygulamaları
Eğitmenler: Tayfun Erikan, Hüseyin Bıyık, Güven Karabulut, Azim Can Kuruca
Kurslara kayıt olmak için tıklayın
Ruby on Rails’i öğrenirseniz neler inşa edebileceğinizi bir hayal edin…
Bu yeni yıla Ruby on Rails öğrenerek başlayabilirsiniz. Böylece tam donanımlı (full-stack) bir web geliştirici olarak daha mutlu, üretken, zahmetsiz ve hızlı şekilde web uygulamaları hayata geçirmenin keyfini yaşayabilirsiniz.
Peki nasıl mı?
Modern bir web uygulaması oluşturmayı öğrenmek çoğu zaman göz korkutucu olabilir. Ruby on Rails bunu çok daha kolay ve eğlenceli bir hale getirmektedir. Harika web uygulamaları oluşturmak için ihtiyacınız olan her şeyi (hatta daha fazlasını) bünyesinde barındıran Rails; model-view-controller (MVC), kendini tekrar etme (don’t repeat yourself – DRY), convention over configuration (CoC) yaklaşımlarını temel alır.
Kampta Rails dünyası ile tanışarak bu araçlarla web uygulaması geliştirme, kapsam belirleme ve kapsamları parçalara bölme, proje yönetimi, uzaktan çalışma kültürü, sürüm kontrol sistemleri, versiyonlama, MVC, ORM, RESTful, test odaklı geliştirme, sürekli entegrasyon (CI) ve uygulamaların web sunucusuna yayınlanması gibi aşamalarda bilgi sahibi olmanız amaçlanmaktadır.
Ayrıca, Basecamp’in ekosisteme hediye ettiği Ruby on Rails ile birlikte sunulan HOTWIRE, Stimulus, Turbo ve Hotwire Native (iOS/Android) gibi JavaScript ve Hybrit uygulama geliştirme araçlarının Rails ile birlikte nasıl harikalar yarattığını görme fırsatı bulacaksınız. Bu araçlar sayesinde bir çok katmana bölünmüş, karmaşık, kendini tekrar eden, mikroservis yaklaşımlı “JavaScript uygulamalarının” (SPA) aksine sunucu tarafında oluşturulmuş HTML’leri barındıran, benzer kullanıcı deneyimini yaşatmak için JavaScript’i sadece “bir araç” olarak gören ve ihtiyacı kadar kullanarak tek parçadan oluşan (Monolithic) modern uygulamaların web, mobil ve masaüstü platformlar için başarısı kanıtlanmış bu tekniklerle ne kadar hızlı bir şekilde hayata geçirilebileceğini öğrenebileceksiniz.
Hadi şimdi siz de Ruby on Rails öğrenin ve bu harika ekosisteme dahil olarak web uygulaması geliştirmenin altın çağını tekrar yaşayın…
Katılımcılar için ön-şartlar
- Bu kamp ana hatları ile Rails Guides içeriğine sadık kalınarak hazırlanmıstır.
- Kampta başarılı olmak ve kampın sizin için daha verimli geçmesini istiyorsanız mutlaka gelmeden önce Rails Guides’a https://guides.rubyonrails.org adresinden bir göz atmalısınız.
- Temel Ruby bilgisine sahip olmalısınız.
- Web teknolojileri konusunda bilgi sahibi olmalısınız (HTTP, HTML, CSS, JS, SSL, GET/POST, Session, Cookie, vs).
- OOP: Object-oriented programming – Nesne yönelimli programlama bilgisine sahip olmalısınız.
- Başka bir dilde MVC, ORM tasarım şablonlarını kullanan frameworkler kullanmış olmalısınız.
- Herhangi bir VCS kullanmış olmak ve tercihen Git biliyor olmalısınız.
- Gitlab, Github ya da benzeri bir Git servisinde hesaba sahip olmalısınız.
- SQL biliyor olmak ve PostgreSQL veri tabanı hakkında fikir sahibi olmalısınız.
- GNU/Linux Sistem Yönetimi 0.5 Eğitimi konularına hakim olmalısınız.
Katılımcıların kampta kullanması gereken donanım/yazılım:
Geliştirme ortamlarının hazırlanması. Bu işlem için aşağıdaki adımları takip edebilirsiniz.
Ubuntu GNU/Linux dağıtımını http://www.ubuntu.com/download/desktop adresinden bilgisayarınıza kurabilirsiniz.
Eğer Ubuntu kuracaksanız, performans problemleri yaşamamak için işletim sistemini, sanal makine yerine, bilgisayarınızın herhangi bir bölümüne kurmanız önerilir.
Ubuntu veya macOS için https://github.com/lab2023/builder adresinde bulunan bash kurulum scripti’ni kullanabilirsiniz yada https://guides.rubyonrails.org/install_ruby_on_rails.html adresinden faydalanabilirsiniz.
Ayrıca DHH tarafından yayınlanan https://omakub.org “An Omakase Developer Setup for Ubuntu 24.04+ by DHH” inceleyip ihtiyacınıza uygun kurulumları gerçekleştirebilirsiniz.
Kimler Katılmalı:
Temel programlama bilgisine sahip, web/mobil geliştirme alanında kendini geliştirmek ve tam donanımlı bir geliştirici olmak isteyenler
Ruby on Rails ekosistemine adım atmak isteyenler ve toplulukla tanışmak isteyenler
Rails yeniliklerini öğrenerek modern web/mobil projeleri geliştirmek isteyenler
Rails alında deneyimi olup eksiklerini gidermek veya Rails’in henüz kullanmadıkları işlevlerini deneyerek ufkunu genişletmek isteyenler
Eğitim içeriği
Giriş
Bu bölümde Rails’in ilke ve görüşlerini anlayarak Rails felsefesini ve ekosistemini tanıyacağız.
- Rails Doktrini: Ruby on Rails İlke ve Görüşlerini Anlamak (Bkz: https://speakerdeck.com/tayfunoziserikan/rails-doktrini)
- Rails nedir / ne değildir?
- Rails kimler içindir?
- Rails ekosistemininin tanıtımı
Temel Bilgiler
Bu bölümde Rails’i daha verimli kullanabilmek için gerekli temel bilgileri edineceğiz ve partik yapacağız.
- Terminal kullanmak
- Text editör ve/veya IDE kullanmak
- Git, Gitflow, Semver ile versiyonlama ve sürüm kontrolü
- Kod rewiew kültürü
- CI/CD süreçleri
- Test yazma kültürü
- HTTP yaşam döngüsü ve temel kavramları
- Ruby İçin Gereken Temel Bilgiler
- Ruby’nin genel özellikleri
- IRB konsol ile Ruby kullanımı (alternatif olarak PRY)
- Ruby Paket Yöneticisi (RubyGems ve Bundler)
- Rails İçin Gereken Temel Bilgiler
- MVC
- REST ve RESTful
- DAO ve ORM
- Rack Middleware
Rails’e Hızlı Başlangıç
Bu bölümde Rails Guides üzerinden Rails’e hızlıca göz atıp çok kısa bir sürede çalışan bir uygulama hazırlayacağız.
Rails’e Giriş ve İlk Uygulama ve deneyimler;
- Ruby on Rails’e Giriş
- Rails nedir ve neden tercih edilmelidir?
- MVC (Model-View-Controller) Mimarisi
- Rails felsefesi
- Rails Kurulumu ve İlk Uygulama
- Rails’in kurulumu ve çalışma ortamının hazırlanması
- İlk Rails projenizin başlatılması
- Rails Uygulama Dizini Yapısı
- Uygulama dizinlerinin işlevleri ve temel bileşenler
- Örnek Ürün Yönetimi Uygulamasının İlk Adımları
- Yeni bir Rails uygulaması oluşturma
- Scaffold komutuyla başlangıç noktası kurma
- Rails sunucusunu çalıştırma ve uygulama yapısını inceleme
HOTWIRE
Bu bölümde web uygulamanızda daha hızlı gezinmenizi sağlayan ve istemci tarafı JavaScript çerçevelerinin ek karmaşıklığı olmadan tek sayfalık bir uygulamanın performans avantajlarından yararlanabileceğiniz HOTWIRE araçları ile tanışacak ve bu araçların ne işe yaradığı hakkında sahibi olacaksınız. Rails ile nasıl etkileşime girdiğini görecek, mobil veya masaüstü platformlar için hibrit uygulamaları nasıl oluşturabileceğinizi anlayacaksınız.
Alıntı; “Hotwire, modern web uygulamaları geliştirmek için fazla JavaScript kullanmadan, JSON yerine HTML göndererek çalışan alternatif bir yaklaşımdır. Bu yöntem, hızlı ilk yükleme sayfaları sağlar, şablonların sunucuda işlenmesini devam ettirir ve herhangi bir programlama dilinde daha basit ve verimli bir geliştirme deneyimi sunar. Geleneksel tek sayfa uygulamalarının hız ve duyarlılığından ödün vermez.”
Referans kaynak: https://hotwired.dev
Turbo
Kendi sayfasında da belirtildiği üzere HOTWIRE’ın kalbi Turbo’dur. Turbo sayfa değişikliklerini ve form gönderimlerini hızlandırmak için sayfa içeriklerini Frame adı verilen küçük parçalara bölerek sunucu tarafından JavaScript kullanmadan güncellemenize olanak tanır. Bu güncellemeleri asenkron olarak WebSoket üzerinden de gerçekleştirebilirsiniz. Aynı zamanda Hotwire iOS ve Android adaptörleri ile hibrit uygulama geliştirmenize olanak tanır.
- Turbo Handbook
- Introduction
- Navigate with Turbo Drive
- Smooth page refreshes with morphing
- Decompose with Turbo Frames
- Come Alive with Turbo Streams
- Go Native on iOS & Android
- Building Your Turbo Application
- Installing Turbo in Your Application
- Rerefence
- Drive
- Frames
- Streams
- Events
- Attributes
Stimulus
Bu bölümde mütevazi istekleri olan bir JavaScript çercevesi olan Stimulus ile tanışacak ve bu araçın ne işe yaradığı hakkında sahibi olacaksınız. Stimulus kullanarak bir tutam JavaScript kullanarak uygulamanıza nasıl daha fazla etkileşim kazandıracağınızı öğreneceksiniz. Ayrıca Stimulus’u Rails ile nasıl daha efektif bir şekilde kullanabileceğiz hakkında fikir sahibi olacaksınız.
- Stimulus Handbook
- Introduction
- Hello, Stimulus
- Building Something Real
- Designing For Resilience
- Managing State
- Working With External Resources
- Installing Stimulus in Your Application
- Reference
- Lifecycle
- Callbacks
- Actions
- Targets
- Outlets
- Values
- CSS Classes
- Using Typescript
Native
Hotwire Native, mobil web içeriğinizi Android ve iOS’ta yerel bir deneyimle sunar. Sunucu tarafından oluşturulan HTML ve CSS içeriğini yerel bir kabuk içinde görüntüler, platforma özgü animasyonlar ve gezinme özellikleri sağlar. Yerel kodla (Swift veya Kotlin) entegre edilebilir ve uygulama mağazalarına yeniden gönderim yapmadan güncellemeler anında kullanıma sunulabilir.
- Overview
- How it Works
- Basic Navigation
- Path Configuration
- Bridge Components
- Native Screens
- iOS & Android
- Getting Started
- Path Configuration
- Bridge Components
- Native Screens
- Configuration
- Reference
- Reference
- Navigation
- Path Configuration
- Bridge Installation
- Bridge Components
Temel Rails Bileşenleri
Bu bölüde Rails içerisinde ihtiyacınız olan en temel bileşenler hakkında bilgi sahibi olacak, bu bileşenleri kullanarak Rails uygulamanızı nasıl inşaa edeceğinizi öğreneceksiniz. Bu bölümü tamamladığımızda baştan uca çalışan bir Rails uygulaması hayata geçirecek temel bilgilere erişmiş olacaksınız.
Veritabanı Yönetimi ve Model Katmanı
- Active Record ve Veritabanı İlişkileri
- Active Record ile ORM (Object-Relational Mapping)
- Migrations ile veritabanı tabloları oluşturma ve güncelleme
- CRUD İşlemleri
- Ürünler için Create, Read, Update, Delete işlemlerini uygulama
- Validasyonlar ve İlişkiler
- Verilerin doğruluğunu sağlamak için model validasyonları
- Model ilişkilerinin (has_many, belongs_to) tanımlanması
- Views (View Katmanı)
- Action View Overview
- Layouts & Rendering in Rails
- Action View Form Helpers
- Controllers (Kontrolör Katmanı)
- Action Controller Overview
- Rails Routing from the Outside In
Diğer Rails Bileşenleri
Bu bölüde Rails ile birlikte gelen harika bileşenleri görecek ve bu bileşenleri kullanarak uygulamanızı nası daha zengin ve kullanışlı hale getirebileceğinizi öğreneceksiniz.
- Active Support Core Extensions
- Action Mailer Basics
- Action Mailbox Basics
- Action Text Overview
- Active Job Basics
- Active Storage Overview
- Action Cable Overview
Yeni Rails GEM’ler
- Importmaps for Rails
- Tailwind CSS for Rails
- JavaScript Bundling for Rails
- CSS Bundling for Rails
- Request.JS for Rails
- Dart Sass for Rails
Derinlemesine Rails
Bu bölüde Rails’in derinlerine inerek geliştirme sırasında ihtiyacınız olacak tüm araç ve kavramlarla tanışacaksınız.
- Rails Internationalization (I18n) API
- Testing Rails Applications
- Debugging Rails Applications
- Configuring Rails Applications
- The Rails Command Line
- The Asset Pipeline
- Working with JavaScript in Rails
- Autoloading and Reloading
- Using Rails for API-only Applications
- Multiple Databases
- Composite Primary Keys
Üretim Ortamına Geçiş (Deploy to Production)
Bu bölümde, Rails uygulamalarınızı üretim ortamına taşımak, performans iyileştirmeleri yapmak, güvenliği sağlamak, önbellekleme yöntemlerini kullanmak ve hata raporlama araçlarıyla uygulamanızı kararlı hale getirmek için ihtiyacınız olan tüm temel araçlar ve kavramlarla tanışacaksınız.
- Tuning Performance for Deployment
- Caching with Rails: An Overview
- Securing Rails Applications
- Error Reporting in Rails Applications
Rails’i Genişletme
Bu bölüde Rails uygulamanızı genişletmeniz veya kendinize göre özelleştirmeniz yada kendi bileşenlerinizi tasarlamanız için gereken araçları tanıyacaksınız.
- The Basics of Creating Rails Plugins
- Rails on Rack
- Creating and Customizing Rails Generators & Templates (Özet)
- Getting Started with Engines (Özet)
- Threading and Code Execution in Rails (Özet)
Bazı Faydalı Ruby Gem’lerin Tanıtılması
Bu bölüde Ruby ve Rails dünyasındaki popüler Ruby Gem’ler hakkında bilgi sahibi olacaksınız.
- Ruby Toolbox servisi ve ihtiyaç duyulabilecek bazı Gem’lerin tanıtımı
- Kebab Project (https://github.com/kebab-project) GEM’lerinin tantılması
- Daha fazlası için bkz: https://github.com/lab2023/playbook/blob/master/development/ruby.md#ruby-gems
Uygulamanızın Yayınlanması (Deployment)
Bu bölüde Rails uygulamalarınızın Heroku servisine veya bir VPS sunucuna nasıl yayınlanacağını öğreneceksiniz.
- Kamal Deploy
- Heroku
- Heroku CLI kurulumu
- Ücretsiz Heroku hesabı açılması
- Heroku yönetim konsolunun tanıtılması
- Heroku’ya deploy
- VPS (Standart bir VPS’e deploy için https://github.com/lab2023/playbook/blob/master/development/server.md kaynağından bahsedilecektir.)
Topluluk
Bu bölümde özgür yazılım, açık kaynak ve topluluklar hakkında bolca sohbet ederek Ruby, Rails dünyasını daha yakından tanıyacak ve Ruby Türkiye topluluğu olarak Türkiye’de gerçekleştirilen etkinlikler hakkında bilgilendirileceksiniz.
- Ruby Türkiye topluluğu
- Özgür yazılım felsefesi
- Rails’in gelişimi ve topluluğun katkısı
- Rails’e nasıl katkı sağlarsınız?
- Birlikte neler geliştirebilirsiniz ve özgür yazılım projelerine nasıl katkı sağlarsınız?
- Rails belgeleri ve toplulukları ile sürekli öğrenme ve kendini geliştirme fırsatları
Örnek Uygulamalar
Bu bölümde öğrendiklerimizi pekiştirmek için bir Rails projesi nasıl hayata geçirilir öğreneceğiz. Bu projeyi Rails ile birlikte, HOTWIRE, Turbo ve Hotwire Native kullanarak web ve mobil platformlarda nasıl yayınlayacağımızı öğreneceğiz.
- Shape-up ile proje şekillendirme süreçleri
- Modelleme ve sistem gereksinimlerinin tespiti
- Döngünün planlanması
- Web platformunda uygulamayı geliştirme
- Mobil platformda uygulamayı geliştirme
- Heroku’ya deploy ve canlıya geçiş
Başvuru Yap ve Rails Dünyasına Adımını At!
Ruby on Rails dünyasına hızlı bir giriş yaparak modern web uygulamaları geliştirme becerileri kazanmak için bu kursa katılın! Hemen başvurarak yerinizi ayırtın ve Ruby on Rails dünyasına adımınızı atın.
Kaynaklar: