Ruby on Rails’i rbenv ile Ubuntu 20.04 Üzerine Kurulum Rehberi
Giriş
Ruby on Rails (genellikle Rails olarak anılır), web uygulamaları geliştirmek için popüler, açık kaynaklı bir sunucu tarafı web uygulama çerçevesidir. Ruby programlama dilinde yazılmış olup, “Convention over Configuration” (Yapılandırma Yerine Kural) ve “Don’t Repeat Yourself” (Kendini Tekrar Etme) felsefeleri üzerine kurulmuştur. Bu prensipler, geliştiricilerin daha az kod yazarak daha hızlı ve verimli bir şekilde uygulama oluşturmasını sağlar. Rails, Model-View-Controller (MVC) mimari desenini kullanarak, geliştiricilere web uygulamalarının farklı katmanlarını düzenli bir şekilde ayırma imkanı sunar. Airbnb, Shopify, GitHub gibi birçok büyük şirket, uygulamalarının bir kısmında veya tamamında Rails kullanmaktadır.
Ruby on Rails geliştirmeye başlamadan önce, sisteminize Ruby ve Rails’i doğru bir şekilde kurmanız gerekir. Bu rehberde, Ubuntu 20.04 işletim sistemi üzerinde Ruby sürümlerini yönetmek için rbenv adlı bir araç kullanarak Ruby on Rails kurulumunu adım adım anlatacağız. rbenv, farklı Ruby projeleri için farklı Ruby sürümlerini kolayca yönetmenizi sağlayan hafif ve esnek bir araçtır. Bu, bir projenin Ruby 2.7 kullanırken, başka bir projenin Ruby 3.1 veya 3.2 kullanmasını gerektirdiğinde büyük bir avantaj sağlar. rbenv‘in aksine, RVM (Ruby Version Manager) gibi alternatifler daha kapsamlı özellikler sunsa da, rbenv minimalizmi ve basitliği nedeniyle birçok geliştirici tarafından tercih edilmektedir. Ubuntu 20.04, uzun süreli destek (LTS) sürümü olması nedeniyle kararlı ve güvenilir bir geliştirme ortamı sunar.
Bu rehber, hem yeni başlayanlar hem de mevcut sistemlerinde Rails ortamını kurmak isteyen deneyimli kullanıcılar için kapsamlı bir yol haritası sunmayı amaçlamaktadır.
Ön Gereksinimler
Kuruluma başlamadan önce aşağıdaki ön gereksinimlerin karşılandığından emin olun:
* Ubuntu 20.04 LTS İşletim Sistemi: Temiz bir kurulum veya mevcut bir sistem.
* Sudo Yetkilerine Sahip Bir Kullanıcı: Kurulum adımlarının çoğu için yönetici ayrıcalıkları gerekecektir.
* İnternet Bağlantısı: Paketleri ve bağımlılıkları indirmek için gereklidir.
* Temel Terminal Bilgisi: Linux komut satırı ile rahat olmanız beklenir.
Sistemi Güncelleme
Herhangi bir yazılım kurulumuna başlamadan önce, sisteminizin paket listesini güncellemek ve mevcut paketleri yükseltmek iyi bir uygulamadır. Bu, potansiyel bağımlılık sorunlarını önler ve en son güvenlik yamalarına sahip olmanızı sağlar.
Terminalinizi açın ve aşağıdaki komutları çalıştırın:
sudo apt update
sudo apt upgrade -y
* sudo apt update: Paket listelerini günceller.
* sudo apt upgrade -y: Yükseltilebilecek tüm paketleri onay gerektirmeden (-y) yükseltir.
Temel Bağımlılıkları Yükleme
Ruby’yi kaynak koddan derlemek ve Rails uygulamaları geliştirmek için çeşitli derleyici araçlarına ve kütüphanelere ihtiyacımız olacak. rbenv ve Ruby-build, Ruby’yi derlemek için bu bağımlılıklara ihtiyaç duyar.
Aşağıdaki komutla gerekli tüm bağımlılıkları tek seferde yükleyebilirsiniz:
sudo apt install git curl build-essential libssl-dev libreadline-dev zlib1g-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev software-properties-common libffi-dev libgdbm-dev libncurses5-dev -y
Bu paketlerin her birinin bir amacı vardır:
* git: rbenv ve ruby-build depolarını klonlamak için.
* curl: Web’den dosya indirmek için.
* build-essential: GCC derleyicisi ve diğer derleme araçlarını içerir; Ruby’yi kaynak koddan derlemek için gereklidir.
* libssl-dev: SSL/TLS desteği için (HTTPS istekleri gibi).
* libreadline-dev: Ruby’nin etkileşimli kabuğu (IRB) için komut geçmişi ve düzenleme özellikleri sağlar.
* zlib1g-dev: Gzip sıkıştırma desteği için.
* libyaml-dev: YAML dosyalarını işlemek için (Rails uygulamalarında sıkça kullanılır).
* libsqlite3-dev ve sqlite3: SQLite veritabanı desteği için (Rails’in varsayılan veritabanı).
* libxml2-dev ve libxslt1-dev: XML ve XSLT işleme için (bazı gem’ler için gerekli olabilir).
* libcurl4-openssl-dev: Curl kütüphanesinin SSL destekli sürümü için.
* software-properties-common: Depo yönetimi için (Node.js ve Yarn gibi ek depolar eklerken faydalıdır).
* libffi-dev: Foreign Function Interface (FFI) desteği için.
* libgdbm-dev ve libncurses5-dev: Ruby’nin bazı dahili kütüphaneleri için.
rbenv Kurulumu
rbenv, farklı Ruby sürümlerini sisteminize kurmanıza ve yönetmenize olanak tanıyan hafif bir Ruby sürüm yöneticisidir. Her projenin kendi Ruby sürümünü kullanmasını sağlayarak bağımlılık çakışmalarını önler.
rbenv ve Ruby-Build Yükleme
rbenv ve eklentisi olan ruby-build‘i GitHub depolarından klonlayacağız. ruby-build, rbenv‘e Ruby sürümlerini derleme yeteneği kazandırır.
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
Bu komutlar, rbenv‘i ev dizininizdeki .rbenv klasörüne, ruby-build eklentisini ise .rbenv/plugins altına klonlar.
Kabuk Ortamını Yapılandırma
rbenv‘in çalışabilmesi için kabuk ortamınıza eklenmesi gerekir. Bu, rbenv komutlarının tanınmasını ve Ruby sürümlerini doğru bir şekilde yönetmesini sağlar.
Aşağıdaki satırları .bashrc dosyanızın sonuna ekleyin:
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
* export PATH="$HOME/.rbenv/bin:$PATH": rbenv yürütülebilir dosyasının sistem PATH’ine eklenmesini sağlar, böylece rbenv komutlarını doğrudan terminalden çalıştırabilirsiniz.
* eval "$(rbenv init -)": rbenv‘i kabuğunuza başlatır. Bu, rbenv‘in Ruby sürümlerini yönetmek için gerekli olan kabuk işlevlerini ve shims’leri yüklemesini sağlar.
Değişikliklerin etkili olması için .bashrc dosyasını yeniden kaynaklamanız veya terminali kapatıp açmanız gerekir:
source ~/.bashrc
Şimdi rbenv‘in doğru kurulup kurulmadığını kontrol edebilirsiniz:
rbenv --version
Bu komut, kurulu rbenv sürümünü göstermelidir.
Ruby Kurulumu
rbenv başarıyla kurulduktan sonra, sıra Ruby’yi kurmaya gelir.
Kullanılabilir Ruby Sürümlerini Listeleme
ruby-build eklentisi sayesinde rbenv ile kurulabilecek tüm Ruby sürümlerini listeleyebilirsiniz:
rbenv install -l
Bu komut, uzun bir Ruby sürümleri listesi döndürecektir. Genellikle en son kararlı sürümü tercih etmek iyi bir başlangıçtır.
Belirli Bir Ruby Sürümünü Yükleme
Bu rehber için, güncel ve kararlı bir Ruby sürümünü (örneğin, 3.2.2 veya en son kararlı sürüm) kuracağız. Kurulum işlemi biraz zaman alabilir, çünkü Ruby kaynak koddan derlenir.
rbenv install 3.2.2 # Veya tercih ettiğiniz başka bir sürüm
Kurulum tamamlandığında, rbenv Ruby’nin derlenmiş halini .rbenv/versions/3.2.2 (veya seçtiğiniz sürüm) altına yerleştirecektir.
Varsayılan Ruby Sürümünü Ayarlama
Kurulan Ruby sürümünü sistem genelinde varsayılan olarak ayarlamak için rbenv global komutunu kullanın:
rbenv global 3.2.2 # Kurduğunuz sürümü kullanın
Bu komut, .rbenv/version dosyasına seçtiğiniz sürümü yazar. Artık sisteminizde varsayılan Ruby sürümünüz bu olacaktır.
Kurulumun başarılı olduğunu doğrulamak için Ruby ve Gem (Ruby’nin paket yöneticisi) sürümlerini kontrol edin:
ruby -v
gem -v
Çıktıda, kurduğunuz Ruby sürümünü ve Gem sürümünü görmelisiniz.
Bundler için Gemset Yapılandırması (Opsiyonel ama önerilir)
rbenv doğrudan RVM gibi “gemset” kavramını desteklemez. Ancak, her Ruby sürümünün kendi gem’leri vardır ve Bundler bu ihtiyacı proje bazında karşılar. Bundler, bir projenin bağımlılıklarını yöneten bir araçtır. Her Rails uygulaması kendi Gemfile‘ına sahiptir ve bundle install komutu, o projeye özel gem’leri yükler. Bu nedenle, rbenv ile genellikle tek bir Bundler gem’ini global olarak kurmak yeterlidir.
gem install bundler
rbenv‘in yeni yürütülebilir dosyaları (bu durumda bundle komutu) tanıması için rbenv rehash komutunu çalıştırmak iyi bir alışkanlıktır. Bu komut, rbenv shims’lerini günceller.
rbenv rehash
Bundler sürümünü kontrol ederek kurulumu doğrulayın:
bundle -v
Rails Kurulumu
Ruby ve Bundler kurulduktan sonra, artık Ruby on Rails çatısını kurmaya hazırız.
Rails Gem’ini Yükleme
Rails, bir Ruby gem’i olarak dağıtılır. En son kararlı sürümü kurmak için aşağıdaki komutu kullanın:
gem install rails
Belirli bir Rails sürümünü kurmak isterseniz (örneğin, bir projenin belirli bir Rails sürümüne bağımlılığı varsa), sürüm numarasını belirtebilirsiniz:
gem install rails -v 7.0.4 # Örnek olarak Rails 7.0.4
Rails gem’i yüklendikten sonra, rbenv‘in yeni rails yürütülebilir dosyasını tanıması için tekrar rbenv rehash çalıştırmanız gerekir:
rbenv rehash
Rails’in başarıyla kurulduğunu doğrulamak için sürümünü kontrol edin:
rails -v
Veritabanı Kurulumu (PostgreSQL Örneği)
Rails uygulamaları genellikle bir veritabanına ihtiyaç duyar. Varsayılan olarak SQLite3 kullanır, ancak üretim ortamlarında veya daha karmaşık uygulamalar için PostgreSQL veya MySQL gibi daha güçlü veritabanları tercih edilir. Bu rehberde PostgreSQL kurulumunu ele alacağız.
PostgreSQL Sunucusunu Yükleme
PostgreSQL sunucusunu ve ilgili araçları yükleyin:
sudo apt install postgresql postgresql-contrib libpq-dev -y
* postgresql: PostgreSQL veritabanı sunucusunun kendisi.
* postgresql-contrib: PostgreSQL için ek modüller ve yardımcı programlar.
* libpq-dev: PostgreSQL C kütüphanesi ve başlık dosyaları; Ruby’nin pg gem’ini derlemek için gereklidir.
PostgreSQL servisi kurulumdan sonra otomatik olarak başlar ve etkinleştirilir. Durumunu kontrol edebilirsiniz:
sudo systemctl status postgresql
PostgreSQL Kullanıcısı Oluşturma
Rails uygulamanızın veritabanına bağlanabilmesi için bir PostgreSQL kullanıcısı oluşturmanız gerekir. Varsayılan olarak, PostgreSQL, postgres adında bir süper kullanıcı hesabı oluşturur. Bu hesabı kullanarak yeni bir kullanıcı oluşturacağız.
sudo -u postgres psql
Bu komut sizi PostgreSQL komut istemine atacaktır. Burada aşağıdaki komutları çalıştırarak yeni bir kullanıcı oluşturun ve parolasını ayarlayın. your_username ve your_password kısımlarını kendi istediğiniz değerlerle değiştirin:
CREATE USER your_username WITH PASSWORD 'your_password';
ALTER ROLE your_username SET client_encoding TO 'utf8';
ALTER ROLE your_username SET default_transaction_isolation TO 'read committed';
ALTER ROLE your_username SET timezone TO 'UTC';
GRANT ALL PRIVILEGES ON DATABASE your_database_name TO your_username; komutu, belirli bir veritabanı üzerinde yetki verir. Ancak, Rails uygulaması genellikle rails db:create komutuyla kendi veritabanlarını oluşturur. Bu nedenle, kullanıcıya belirli bir veritabanı üzerinde yetki vermek yerine, Rails uygulamanızın your_username kullanıcısı ile veritabanı oluşturmasına izin vermek daha yaygın bir yaklaşımdır.
PostgreSQL komut isteminden çıkmak için:
\q
pg Gem’ini Yükleme
Rails uygulamanızın PostgreSQL ile iletişim kurabilmesi için pg gem’ine ihtiyacı vardır. libpq-dev paketini daha önce yüklediğimizden emin olun, aksi takdirde pg gem’i derlenirken hata verecektir.
gem install pg
Yine, rbenv rehash komutunu çalıştırın:
rbenv rehash
Yeni Bir Rails Uygulaması Oluşturma ve Çalıştırma
Şimdiye kadar Ruby, Rails ve PostgreSQL başarıyla kuruldu. Artık yeni bir Rails uygulaması oluşturup çalıştırarak her şeyin doğru çalıştığını test edebiliriz.
Uygulama Oluşturma
Yeni bir Rails uygulaması oluşturmak için rails new komutunu kullanın. PostgreSQL’i veritabanı olarak belirtmek için --database=postgresql bayrağını ekleyin:
rails new my_first_app --database=postgresql
Bu komut, my_first_app adında yeni bir Rails projesi oluşturacak ve tüm gerekli dosyaları ve dizinleri ayarlayacaktır. Bu işlem biraz zaman alabilir.
Proje dizinine geçin:
cd my_first_app
Veritabanını Yapılandırma
Rails, config/database.yml dosyasını kullanarak veritabanı bağlantılarını yapılandırır. Oluşturduğumuz PostgreSQL kullanıcısının bilgilerini buraya eklememiz gerekiyor.
Bir metin düzenleyici ile config/database.yml dosyasını açın (örneğin, nano veya vim):
nano config/database.yml
development (geliştirme) ve test (test) ortamları için username ve password alanlarını, PostgreSQL’de oluşturduğunuz kullanıcı adı ve parolayla güncelleyin:
# config/database.yml (ilgili bölümler)
development:
adapter: postgresql
encoding: unicode
# for details on how to specify connection options, check:
# http://guides.rubyonrails.org/configuring.html#database-pooling
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: your_username # Burayı güncelleyin
password: your_password # Burayı güncelleyin
host: localhost
database: my_first_app_development
test:
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: your_username # Burayı güncelleyin
password: your_password # Burayı güncelleyin
host: localhost
database: my_first_app_test
Dosyayı kaydedin ve kapatın (nano için Ctrl+O, Enter, Ctrl+X).
Şimdi, projenin Gemfile‘ında belirtilen tüm gem’leri yüklemek için bundle install komutunu çalıştırın:
bundle install
Bu komut, projenin özel bağımlılıklarını yükleyecektir. Ardından, veritabanlarını oluşturun:
rails db:create
Bu komut, my_first_app_development ve my_first_app_test adında iki yeni PostgreSQL veritabanı oluşturacaktır.
Uygulamayı Çalıştırma
Rails uygulamasını başlatmak için Rails sunucusunu çalıştırın:
rails server
Veya kısaca:
rails s
Sunucu başarıyla başladığında, terminalde “Puma starting in development on http://127.0.0.1:3000” veya benzeri bir mesaj görmelisiniz. Web tarayıcınızı açın ve http://localhost:3000 adresine gidin. “Yay! You’re on Rails!” mesajını içeren varsayılan Rails hoş geldiniz sayfasını görmelisiniz.
Uygulamayı durdurmak için terminalde Ctrl+C tuşlarına basın.
Ek Bilgiler ve İpuçları
rbenv Kullanımı
rbenv ile Ruby sürümlerini yönetmek oldukça basittir:
* Kurulu Ruby sürümlerini listeleme:
rbenv versions
Bu komut, kurulu tüm Ruby sürümlerini ve şu anda etkin olanı (bir yıldız ile işaretli) gösterir.
* Proje bazında Ruby sürümü ayarlama: Bir projenin dizinindeyken rbenv local komutunu kullanarak o projeye özel bir Ruby sürümü belirleyebilirsiniz. Bu, o dizinde .ruby-version adında bir dosya oluşturur.
rbenv local 3.1.2 # Bu dizin ve alt dizinleri için 3.1.2'yi kullanır
* Genel Ruby sürümü ayarlama: rbenv global komutu, sistem genelinde varsayılan Ruby sürümünü ayarlar.
* Ruby sürümünü kaldırma:
rbenv uninstall 3.0.0 # Belirli bir sürümü kaldırır
* rbenv shims’lerini güncelleme: rbenv rehash komutu, yeni yürütülebilir dosyaları (gem’ler tarafından sağlananlar gibi) rbenv‘in tanımasını sağlar. Bir gem yükledikten sonra bu komutu çalıştırmak iyi bir alışkanlıktır.
Gemset’ler (rbenv ile doğrudan yok, ancak bundler ile benzer işlevsellik)
RVM gibi bazı Ruby sürüm yöneticileri “gemset” kavramını sunar, bu da farklı projeler için farklı gem koleksiyonları oluşturmanıza olanak tanır. rbenv doğrudan gemset’leri desteklemez. Bunun yerine, rbenv her Ruby sürümünün kendi gem’lerini izole eder. Proje bazında bağımlılık yönetimi için ise Bundler kullanılır. Her Rails projesi kendi Gemfile‘ına sahiptir ve bundle install komutu, o projeye özel gem’leri yükler. Bu yaklaşım, gemset’lerin sağladığı izolasyonun çoğunu sunar ve genellikle yeterlidir.
Node.js ve Yarn Kurulumu (Rails 6+ için gerekli)
Rails 6 ve sonraki sürümler, JavaScript bağımlılıklarını yönetmek ve ön uç varlıklarını derlemek için Webpacker (Rails 7’de jsbundling-rails veya cssbundling-rails gibi alternatiflerle) kullanır. Bu da Node.js ve Yarn’a bağımlılık anlamına gelir. Eğer Rails 6 veya daha yeni bir sürümle çalışıyorsanız, bunları da kurmanız gerekir.
Node.js Kurulumu:
NodeSource deposunu ekleyin ve Node.js’yi yükleyin:
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs
Yarn Kurulumu:
Yarn paket yöneticisini kurun:
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update && sudo apt install yarn -y
Bu kurulumlar, Rails uygulamanızın JavaScript ve CSS varlıklarını doğru bir şekilde derlemesini sağlayacaktır.
Sorun Giderme
Kurulum sırasında veya sonrasında karşılaşabileceğiniz bazı yaygın sorunlar ve çözümleri:
* rbenv: command not found: Bu genellikle rbenv‘i PATH’inize eklemediğiniz veya .bashrc dosyasını yeniden kaynaklamadığınız anlamına gelir. source ~/.bashrc komutunu çalıştırdığınızdan veya terminalinizi yeniden başlattığınızdan emin olun.
* rbenv: no such command 'ruby-build': ruby-build eklentisini doğru yere (~/.rbenv/plugins/ruby-build) klonlamadınız demektir. Klonlama adımlarını kontrol edin.
* Ruby derleme hataları (örneğin, ERROR: ruby-build failed to install ruby-3.2.2): Bu genellikle eksik derleme bağımlılıklarından kaynaklanır. build-essential, libssl-dev, libreadline-dev, zlib1g-dev, libyaml-dev gibi paketlerin yüklü olduğundan emin olun. Gerekirse “Temel Bağımlılıkları Yükleme” bölümündeki komutu tekrar çalıştırın.
Gem yükleme hataları (özellikle native gem’ler için, örneğin pg veya nokogiri): Bu tip gem’ler, sistem kütüphanelerine ihtiyaç duyar. Örneğin, pg gem’i için libpq-dev, nokogiri için libxml2-dev ve libxslt1-dev gereklidir. İlgili -dev paketlerini yüklediğinizden emin olun.
* rails komutu bulunamıyor (rails: command not found): Rails gem’ini yükledikten sonra rbenv rehash komutunu çalıştırmayı unutmuş olabilirsiniz. Bu komutu çalıştırarak rbenv shims’lerini güncelleyin.
bundle install hataları: Gemfile.lock dosyasındaki bağımlılıklar sisteminizdeki Ruby sürümü veya diğer gem’lerle çakışıyorsa bu tür hatalar alabilirsiniz. Bazen bundle update veya bundle install --without development test (belirli grupları atlamak için) yardımcı olabilir. Eğer bir native gem hatası alıyorsanız, ilgili -dev paketlerini kontrol edin.
* PostgreSQL bağlantı sorunları: config/database.yml dosyasındaki kullanıcı adı ve parola bilgilerinin doğru olduğundan ve PostgreSQL’de oluşturduğunuz kullanıcı ile eşleştiğinden emin olun. Ayrıca, PostgreSQL servisinin çalıştığından emin olun (sudo systemctl status postgresql).
Sonuç
Bu rehberde, Ubuntu 20.04 üzerinde rbenv kullanarak Ruby ve Ruby on Rails’i nasıl kuracağınızı adım adım öğrendiniz. rbenv‘in esnekliği sayesinde, farklı projeler için farklı Ruby sürümlerini kolayca yönetebilirsiniz. Temel bağımlılıkları yükledik, rbenv ve ruby-build‘i kurduk, istediğimiz Ruby sürümünü yükleyip etkinleştirdik, Bundler ve Rails gem’lerini kurduk. Ayrıca, Rails uygulamaları için yaygın olarak kullanılan PostgreSQL veritabanını kurmayı ve bir Rails uygulaması oluşturup çalıştırmayı da ele aldık.
Artık tam işlevsel bir Ruby on Rails geliştirme ortamına sahipsiniz. Bu noktadan itibaren, kendi web uygulamalarınızı geliştirmeye başlayabilir, mevcut Rails projelerini klonlayabilir veya Rails öğrenme yolculuğunuzda ilerleyebilirsiniz. Unutmayın, geliştirme sürecinde düzenli olarak rbenv rehash çalıştırmak ve bundle install ile proje bağımlılıklarınızı güncel tutmak iyi alışkanlıklardır. Başarılar dileriz!