Neler yeni

Yazılım Forum

Tüm özelliklerimize erişmek için şimdi bize katılın. Kayıt olduktan ve giriş yaptıktan sonra konu oluşturabilecek, mevcut konulara yanıt gönderebilecek, itibar kazanabilecek, özel mesajlaşmaya erişebilecek ve çok daha fazlasını yapabileceksiniz! Bu hizmetlerimiz ise tamamen ücretsiz ve kurallara uyulduğu sürece sınırsızdır, o zaman ne bekliyorsunuz? Hadi, sizde aramıza katılın!

Ruby on Rails ile Web Geliştirmeye Kapsamlı Bir Başlangıç Rehberi

Web geliştirme dünyasına hızlı ve etkili bir giriş yapmak isteyenler için Ruby on Rails (genellikle sadece "Rails" olarak anılır) mükemmel bir çerçevedir. Bu rehber, Rails'in ne olduğu, neden popüler olduğu ve ilk uygulamanızı nasıl geliştireceğiniz konusunda size adım adım yol gösterecek. Amacımız, sadece temel komutları göstermekle kalmayıp, aynı zamanda Rails'in arkasındaki felsefeyi ve anahtar kavramları da anlamanızı sağlamaktır.

Ruby on Rails Nedir?
Ruby on Rails, Ruby programlama dili kullanılarak yazılmış açık kaynaklı bir web uygulama geliştirme çatısıdır (framework). David Heinemeier Hansson tarafından geliştirilen Rails, "Convention over Configuration" (Yapılandırma Üzerine Anlaşma) ve "Don't Repeat Yourself" (Kendini Tekrar Etme - DRY) gibi felsefeleri benimser. Bu felsefeler sayesinde geliştiriciler, standartlara uyarak çok daha az kod yazma ve daha hızlı uygulama geliştirme imkanı bulurlar. Özellikle prototipleme ve MVP (Minimum Viable Product) geliştirmede çok tercih edilir.

"Convention over Configuration" ilkesi, geliştiricinin her şeyi manuel olarak yapılandırmak yerine, çerçeve tarafından belirlenmiş varsayılan kurallara uymasını teşvik eder. Bu, kararları azaltır ve geliştirme hızını artırır.

Neden Ruby on Rails Kullanmalısınız?
  • Hız: Rails, geliştirme sürecini önemli ölçüde hızlandıran birçok yardımcı araç ve otomatikleştirilmiş görev sunar.
  • Güçlü Topluluk: Büyük ve aktif bir topluluğa sahiptir. Bu, sorunlarınız olduğunda kolayca yardım bulabileceğiniz anlamına gelir.
  • Geniş Ekosistem (Gems): Binlerce "gem" (kütüphane) mevcuttur. Kimlik doğrulama, ödeme işlemleri, resim yükleme gibi birçok yaygın özellik için hazır çözümler bulabilirsiniz.
  • Ölçeklenebilirlik: Twitter, Basecamp, Shopify gibi büyük platformlar başlangıçta veya hala Rails kullanmaktadır.
  • Öğrenmesi Kolaylık: Ruby dili sezgiseldir ve Rails'in yapısı mantıksaldır. Başlangıç seviyesindeki geliştiriciler için harika bir başlangıç noktasıdır.

Gereksinimler ve Kurulum
Rails uygulaması geliştirmeye başlamadan önce sisteminizde bazı araçların kurulu olması gerekir. En önemlileri:

  • Ruby: Rails'in üzerine inşa edildiği programlama dilidir. En az Ruby 2.7+ veya daha yenisi önerilir.
  • Node.js ve Yarn: JavaScript derleme ve paket yönetimi için gereklidir (örneğin Webpacker gibi araçlar için).
  • Veritabanı Sistemi: Varsayılan olarak SQLite kullanır, ancak üretim ortamında PostgreSQL veya MySQL tercih edilir.

Ruby'yi yönetmek için rvm veya rbenv gibi araçları kullanmanız şiddetle tavsiye edilir. Bu araçlar, farklı Ruby versiyonlarını kolayca kurmanıza ve aralarında geçiş yapmanıza olanak tanır.

Kod:
# rbenv ile Ruby kurulumu (örnek)
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'eval "$(~/.rbenv/bin/rbenv init -)"' >> ~/.bashrc
source ~/.bashrc
rbenv install 3.1.2 # İstediğiniz Ruby versiyonunu kurun
rbenv global 3.1.2

# Node.js ve Yarn kurulumu (işletim sisteminize göre değişir)
# Ubuntu için:
sudo apt install nodejs npm
sudo npm install --global yarn

# Rails kurulumu
gem install rails -v 7.0.4 # Güncel Rails sürümünü kullanın, -v ile belirtebilirsiniz

Kurulum tamamlandıktan sonra, Ruby ve Rails versiyonlarını kontrol edebilirsiniz:

Kod:
ruby -v
rails -v

Temel Rails Kavramları: MVC Mimarisi
Rails, web uygulamalarını düzenlemek için Model-View-Controller (MVC) mimarisini kullanır. Bu, uygulamanızın farklı sorumluluklarını ayırarak kodunuzu daha okunabilir, yönetilebilir ve test edilebilir hale getirir.

  • Model (Veri ve İş Mantığı): Uygulamanızın verilerini ve iş mantığını temsil eder. Veritabanıyla etkileşimi yönetir. Rails'te modeller genellikle Active Record adı verilen bir ORM (Object-Relational Mapping) kütüphanesi ile oluşturulur. Örneğin, bir blog uygulamasında "Post" veya "User" bir model olabilir.
  • View (Kullanıcı Arayüzü): Kullanıcıya gösterilen verilerin sunumundan sorumludur. HTML, CSS ve JavaScript'in yanı sıra, Rails'te genellikle ERB (Embedded Ruby) şablonları kullanılır. Bu şablonlar, Ruby kodunu HTML içine gömmenize olanak tanır.
  • Controller (İstek Yöneticisi): Kullanıcıdan gelen istekleri alır, uygun modeli çağırır, verileri işler ve ardından bu verileri bir görünüme (View) ileterek kullanıcıya geri gönderir. Controller'lar, uygulama akışını yöneten ana beyinlerdir.

Routing (Rotlama)
Rails'te, bir HTTP isteğinin (GET, POST vb.) hangi denetleyici (controller) eylemine yönlendirileceği `config/routes.rb` dosyasında tanımlanır. Bu, uygulamanızın URL yapısını belirlemenizi sağlar. Örneğin, `/posts` adresine yapılan bir GET isteği, `PostsController` içindeki `index` eylemine yönlendirilebilir.

Kod:
# config/routes.rb
Rails.application.routes.draw do
  resources :posts # CRUD işlemleri için standart rotaları otomatik oluşturur
  get 'about', to: 'pages#about'
  root 'pages#home' # Ana sayfa
end

Veritabanı Göçleri (Migrations)
Rails, veritabanı şemasını (tablolar, sütunlar vb.) yönetmek için "Migrations" (Göçler) kullanır. Bu, veritabanı değişikliklerini kod olarak izlemenizi ve farklı geliştirme ortamları arasında kolayca paylaşmanızı sağlar. Yeni bir tablo eklemek veya mevcut bir tabloyu değiştirmek için göç dosyaları oluşturursunuz.

Kod:
# Yeni bir tablo oluşturmak için migration
rails generate migration CreateArticles title:string body:text

# Migration'ı çalıştırmak için
rails db:migrate

İlk Rails Uygulaması: Basit Bir Blog
Şimdi, tüm bu kavramları bir araya getirerek basit bir blog uygulaması oluşturalım. Bu uygulama, gönderi oluşturma, listeleme, görüntüleme, düzenleme ve silme (CRUD işlemleri) yeteneğine sahip olacak.

  • Yeni bir Rails uygulaması oluşturun:
    Uygulama adı olarak `blog_app` kullanalım. `--database=postgresql` ile veritabanını belirtebilirsiniz; belirtmezseniz varsayılan olarak SQLite kullanır.
    Kod:
        rails new blog_app --database=postgresql
        cd blog_app
  • Veritabanını oluşturun:
    Kod:
        rails db:create
  • Model ve Controller'ları hızlıca oluşturun (Scaffolding):
    Rails, belirli bir model için tüm CRUD işlemlerini ve ilgili View'ları otomatik olarak oluşturan "scaffold" komutuna sahiptir. Bu, hızlı prototipleme için harikadır. "Post" adında bir model oluşturalım, `title` string ve `content` text tipinde olsun.
    Kod:
        rails generate scaffold Post title:string content:text
    Bu komut:
    [list type="circle"]
  • `app/models/post.rb` (Model)
  • `app/controllers/posts_controller.rb` (Controller)
  • `app/views/posts/` (View dosyaları - index, show, new, edit, _form vb.)
  • Veritabanı migration dosyası
  • Test dosyaları
  • Rota tanımları (`resources :posts`)
gibi birçok dosyayı sizin için otomatik olarak oluşturur.

[*] Veritabanı göçlerini çalıştırın:
Oluşturulan migration dosyasını veritabanında çalıştırın.
Kod:
    rails db:migrate

[*] Rails sunucusunu başlatın:
Kod:
    rails server
Tarayıcınızı açın ve http://localhost:3000/posts adresine gidin. Artık bir blog gönderisi oluşturabilir, düzenleyebilir ve silebilirsiniz!
[/list]

Daha Derinlemesine: El ile Uygulama Geliştirme
Scaffolding harika bir başlangıç olsa da, çoğu zaman uygulamaları sıfırdan, manuel olarak oluşturmanız gerekecektir. Bu, Rails'in nasıl çalıştığını daha iyi anlamanızı sağlar.

  • Statik Sayfalar Oluşturma:
    Ana sayfa veya hakkımızda gibi statik sayfalar için bir controller oluşturabilirsiniz:
    Kod:
        rails generate controller Pages home about
    Bu komut `app/controllers/pages_controller.rb` dosyasını ve `app/views/pages/home.html.erb` ile `app/views/pages/about.html.erb` view dosyalarını oluşturur. `config/routes.rb` dosyanızda bu sayfalar için rotaları tanımlayabilirsiniz:
    Kod:
        # config/routes.rb
        get 'home', to: 'pages#home'
        get 'about', to: 'pages#about'
        root 'pages#home'
    `app/views/pages/home.html.erb` içeriğini düzenleyerek ana sayfanızı özelleştirebilirsiniz.
  • Model Oluşturma (Validasyonlar ve İlişkiler):
    Manuel olarak bir model oluşturalım. Örneğin, bir `Comment` modeli, `Post` modeliyle ilişkilendirilecek.
    Kod:
        rails generate model Comment body:text post:references
        rails db:migrate
    `post:references` ifadesi, `Comment` modelinin `Post` modeline ait olduğunu belirten bir yabancı anahtar (foreign key) ekler.
    `app/models/comment.rb` dosyasına gidin ve model ilişkisini tanımlayın:
    Kod:
        # app/models/comment.rb
        class Comment < ApplicationRecord
          belongs_to :post
          validates :body, presence: true, length: { minimum: 10 }
        end
    Burada `belongs_to :post` ifadesi, her yorumun bir gönderiye ait olduğunu belirtir. `validates` satırı ise `body` alanının boş olmamasını ve en az 10 karakter uzunluğunda olmasını sağlayan bir validasyon ekler. Validasyonlar, veritabanına kaydedilmeden önce verilerin doğruluğunu kontrol etmenizi sağlar.
  • Controller Aksiyonları:
    Bir controller içinde farklı HTTP isteklerine (GET, POST, PUT/PATCH, DELETE) karşılık gelen aksiyonlar tanımlarsınız. Her aksiyon genellikle bir view'ı render eder veya bir başka URL'ye yönlendirme yapar.
    Kod:
        # app/controllers/comments_controller.rb (Örnek Parça)
        class CommentsController < ApplicationController
          def create
            @post = Post.find(params[:post_id])
            @comment = @post.comments.build(comment_params)
    
            if @comment.save
              redirect_to @post, notice: 'Yorum başarıyla eklendi.'
            else
              render 'posts/show', status: :unprocessable_entity
            end
          end
    
          private
    
          def comment_params
            params.require(:comment).permit(:body)
          end
        end
    Yukarıdaki örnekte `create` aksiyonu, yeni bir yorum oluşturur. `comment_params` metodu, güvenli parametrelerin (strong parameters) kullanımını gösterir, bu da güvenlik için kritik öneme sahiptir.
  • Form Oluşturma:
    Rails, form oluşturmayı kolaylaştıran yardımcı metotlar sunar. Örneğin, bir gönderi için yeni bir yorum formu:
    Kod:
        <!-- app/views/posts/show.html.erb (Parça) -->
        <h3>Yorum Bırak</h3>
        <%= form_with model: [@post, @post.comments.build] do |form|
          %>
          <% if form.object.errors.any? %><div id="error_explanation"><h2><%= pluralize(form.object.errors.count, "hata") %> bu yorumu kaydederken ortaya çıktı:</h2><ul><% form.object.errors.full_messages.each do |message| %><li><%= message %></li><% end %></ul></div><% end %><div class="field"><%= form.label :body %><br/><%= form.text_area :body %></div><div class="actions"><%= form.submit "Yorumu Kaydet" %></div>
        <% end %>
    Bu `form_with` yapısı, formun `@post` ve yeni bir `@comment` nesnesi için oluşturulduğunu ve `comments_controller#create` aksiyonuna POST isteği göndereceğini belirtir.

Rails Ekosistemi ve İleri Konular
Rails öğrenme yolculuğunuzda karşılaşacağınız bazı önemli kavramlar ve araçlar:

  • Gems (Mücevherler): Rails'in en büyük güçlerinden biri, geniş "gem" ekosistemidir. Gems, uygulamanıza kolayca ekleyebileceğiniz kütüphanelerdir. Örneğin:
    [list type="circle"]
  • Devise: Kullanıcı kimlik doğrulama için popüler bir gem.
  • Sidekiq: Arka plan işleri (background jobs) için.
  • Pundit/CanCanCan: Yetkilendirme (authorization) için.
  • Kaminari/WillPaginate: Sayfalama (pagination) için.
Bu gem'ler `Gemfile` dosyanıza eklenir ve `bundle install` komutuyla kurulur.
Kod:
    # Gemfile (örnek)
    gem 'devise'
    gem 'sidekiq'

[*] Testler: Rails, uygulamanızın doğru çalıştığından emin olmak için güçlü bir test altyapısı sunar. Hem birim testleri (unit tests) hem de entegrasyon testleri (integration tests) yazabilirsiniz. Minitest veya RSpec gibi kütüphaneler kullanılır.

[*] Dağıtım (Deployment): Uygulamanızı canlıya almak için Heroku, DigitalOcean, AWS, Google Cloud veya Capistrano gibi araçlar ve platformlar kullanabilirsiniz.

[*] API Geliştirme: Rails, sadece tam teşekküllü web uygulamaları değil, aynı zamanda mobil uygulamalar veya tek sayfalı uygulamalar (SPA) için API (Uygulama Programlama Arayüzü) geliştirmek için de harikadır. `--api` seçeneğiyle yeni bir Rails API uygulaması oluşturabilirsiniz.
[/list]

Sonuç
Ruby on Rails, web geliştirme dünyasına hızlı ve verimli bir başlangıç yapmak için eşsiz bir araçtır. "Convention over Configuration" ve "DRY" prensipleri sayesinde, kod yazmaya daha az, iş mantığına daha fazla odaklanabilirsiniz. Bu rehber, Rails'in temel kavramlarına ve ilk uygulamanızı nasıl kurup çalıştıracağınıza dair kapsamlı bir bakış sunmuştur.

Unutmayın, bu sadece başlangıç. Rails'in derinlikleri oldukça fazladır. Öğrenmeye devam etmek için Rails Kılavuzları, Drifting Ruby gibi kaynakları takip etmenizi ve aktif Rails topluluğuna katılmanızı şiddetle tavsiye ederim. Bol şans!
 
shape1
shape2
shape3
shape4
shape5
shape6
Üst

Bu web sitenin performansı Hazal Host tarafından sağlanmaktadır.

YazilimForum.com.tr internet sitesi, 5651 sayılı Kanun’un 2. maddesinin 1. fıkrasının (m) bendi ve aynı Kanun’un 5. maddesi kapsamında Yer Sağlayıcı konumundadır. Sitede yer alan içerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır.

YazilimForum.com.tr, kullanıcılar tarafından paylaşılan içeriklerin doğruluğunu, güncelliğini veya hukuka uygunluğunu garanti etmez ve içeriklerin kontrolü veya araştırılması ile yükümlü değildir. Kullanıcılar, paylaştıkları içeriklerden tamamen kendileri sorumludur.

Hukuka aykırı içerikleri fark ettiğinizde lütfen bize bildirin: lydexcoding@gmail.com

Sitemiz, kullanıcıların paylaştığı içerik ve bilgileri 6698 sayılı KVKK kapsamında işlemektedir. Kullanıcılar, kişisel verileriyle ilgili haklarını KVKK Politikası sayfasından inceleyebilir.

Sitede yer alan reklamlar veya üçüncü taraf bağlantılar için YazilimForum.com.tr herhangi bir sorumluluk kabul etmez.

Sitemizi kullanarak Forum Kuralları’nı kabul etmiş sayılırsınız.

DMCA.com Protection Status Copyrighted.com Registered & Protected