R.Reddington

WFN Üye
Konular
522
Mesajlar
522
Çözüm
0
Ticaret Puanı
0
Üyelik
24 Gün
Konum
Kastamonu
Web Sitesi
Var
Alanı
Sosyal Backlink
1/1
Konu sahibi
Rails uygulamasını PostgreSQL’e bağlamak için PostgreSQL sunucusunda bir kullanıcı ve veritabanı oluşturup Rails projesindeki PostgreSQL sürücüsünü etkinleştirmeniz, ardından config/database.yml dosyasındaki bağlantı bilgilerini tanımlamanız gerekir. Ayarlar doğruysa bin/rails db:prepare komutu veritabanını oluşturur veya şemayı hazırlar; bağlantıyı doğrulamak için daha sonra basit bir Rails komutu çalıştırabilirsiniz.

Gerekli hazırlıklar​


Önce PostgreSQL sunucusunun çalıştığından ve bağlanmak için kullanacağınız bilgilerin hazır olduğundan emin olun. Gerekli bilgiler şunlardır:
  • PostgreSQL sunucusunun adresi: Yerel geliştirmede genellikle localhost.
  • Port: PostgreSQL’in yaygın varsayılan portu 5432’dir; sunucunuz farklı port kullanıyorsa onu yazmalısınız.
  • Kullanıcı adı ve parola.
  • Rails’in kullanacağı veritabanı adı.
Örneğin varsayımsal olarak rails_app adlı bir PostgreSQL kullanıcısı ve blog_development adlı bir veritabanı kullanabilirsiniz. Kullanıcıyı ve veritabanını PostgreSQL istemcisinden oluşturmak için yetkili bir hesapla şu komutları çalıştırın:

SQL:
CREATE ROLE rails_app WITH LOGIN PASSWORD 'Güçlü_Bir_Parola';
CREATE DATABASE blog_development OWNER rails_app;

Parolayı gerçek projede doğrudan kaynak koduna yazmayın. Özellikle üretim ortamında parola, ortam değişkeni veya platformun gizli bilgi yönetimi aracılığıyla sağlanmalıdır.

Rails projesinde PostgreSQL sürücüsünü etkinleştirme​


Yeni bir Rails projesi oluşturuyorsanız PostgreSQL’i veritabanı olarak baştan seçebilirsiniz:

Bash:
rails new blog -d postgresql
cd blog
bundle install

Mevcut bir projede Gemfile dosyasındaki veritabanı sürücüsünü kontrol edin. PostgreSQL için gereken gem pg paketidir. Dosyada yoksa aşağıdaki satırı ekleyin:

Ruby:
gem "pg"

Ardından proje dizininde bundle install çalıştırın. Kurulum sırasında pg derlenemiyorsa sorun genellikle PostgreSQL istemci geliştirme dosyalarının veya derleme araçlarının eksik olmasından kaynaklanır. Bu durumda Rails ayarını değiştirmek yerine işletim sisteminizde PostgreSQL’in geliştirme paketlerini ve Ruby gem derleme araçlarını kurmanız gerekir.

config/database.yml dosyasını ayarlama​


Rails, veritabanı bağlantılarını çoğunlukla config/database.yml dosyasından okur. Yerel geliştirme için en küçük çalışan yapılandırma şu şekildedir:

YAML:
default: &default
  adapter: postgresql
  encoding: unicode
  host: localhost
  port: 5432
  username: rails_app
  password: Güçlü_Bir_Parola
  pool: <%%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %%>

development:
  <<: *default
  database: blog_development

test:
  <<: *default
  database: blog_test

Buradaki adapter: postgresql satırı Rails’e PostgreSQL sürücüsünü kullanacağını bildirir. host, port, username, password ve database değerleri PostgreSQL sunucusundaki gerçek bilgilerle aynı olmalıdır. pool değeri ise Rails’in aynı anda kullanabileceği bağlantı havuzunun boyutunu belirler; bunu uygulamanızın iş parçacığı sayısıyla uyumlu tutmalısınız.

Dosyayı kaydettikten sonra geliştirme veritabanını hazırlayın:

Bash:
bin/rails db:prepare

Bu komut başarılı biçimde tamamlanırsa Rails bağlantı kurabilmiş ve gerekli veritabanı işlemini gerçekleştirmiş demektir. Bu sonuç, uygulamanızdaki bütün modellerin veya sorguların doğru çalıştığını kanıtlamaz; yalnızca Rails’in PostgreSQL’e erişebildiğini ve hazırlama adımını tamamlayabildiğini gösterir.

Bağlantıyı ve migration işlemlerini doğrulama​


Veritabanı hazırlandıktan sonra migration dosyalarını çalıştırın:

Bash:
bin/rails db:migrate

Ardından Rails konsolunda bağlantının hangi veritabanına yapıldığını kontrol edebilirsiniz:

Bash:
bin/rails runner 'puts ActiveRecord::Base.connection_db_config.database'

Çıktıda blog_development görünüyorsa Rails beklenen geliştirme veritabanını kullanıyordur. Bu kontrol yalnızca seçilen veritabanı adını gösterir; yetki, tablo şeması veya uygulamanın sorgularının doğruluğu ayrıca db:migrate ve uygulama işlemleriyle kontrol edilir.

Üretim ortamında database.yml içine sabit parola koymak yerine bağlantı bilgilerini ortam değişkenlerinden okuyabilirsiniz:

YAML:
production:
  adapter: postgresql
  encoding: unicode
  url: <%%= ENV.fetch("DATABASE_URL") %%>
  pool: <%%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %%>

Örnek bir bağlantı adresi şu biçimdedir:

Kod:
postgresql://rails_app:[email protected]:5432/blog_production

Parolada @, :, /, ? veya # gibi URL içinde özel anlamı olan karakterler varsa bağlantı adresinde uygun URL kodlaması kullanılmalıdır. Üretim sunucusunda DATABASE_URL değerinin gerçekten tanımlı olduğunu doğruladıktan sonra bin/rails db:prepare veya dağıtım sürecinizin kullandığı migration komutunu çalıştırın.

Hata mesajını sonuca göre yorumlama​


Aynı görünen bağlantı hataları farklı nedenlerden kaynaklanabilir. Önce Rails’in hangi ortamda çalıştığını ve hangi yapılandırmayı yüklediğini kontrol edin; geliştirme ayarını düzeltip üretim ortamında aynı sonucu beklemeyin.
Hata veya durumAnlamı ve sonraki işlem
connection refusedPostgreSQL çalışmıyor olabilir veya host/port yanlış olabilir. PostgreSQL servis durumunu, host değerini ve port değerini kontrol edin.
password authentication failedKullanıcı adı ya da parola PostgreSQL’deki bilgilerle eşleşmiyordur. Aynı kullanıcıyla PostgreSQL istemcisinden giriş yapmayı deneyin; gerekirse parolayı yetkili hesapla yenileyin.
database does not existRails’in database veya bağlantı URL’sindeki veritabanı adı yanlış ya da veritabanı henüz oluşturulmamıştır. Veritabanı adını listeleyip database.yml ile karşılaştırın.
permission deniedKullanıcı sunucuya bağlanmış ancak veritabanı veya tablo üzerinde gerekli yetkiye sahip değildir. Veritabanı sahipliğini ve verilen izinleri kontrol edin.
pg gem kurulumu başarısızRails henüz PostgreSQL’e ulaşma aşamasına gelmemiştir. Önce PostgreSQL istemci kitaplıklarını ve Ruby gem derleme ortamını düzeltin.
Hata devam ederse yalnız hata metnini değil, çalıştırılan Rails ortamını, host, port, veritabanı adını ve kullanıcı adını paylaşarak inceleyin; parolayı, DATABASE_URL değerini ve diğer gizli bilgileri paylaşmayın. PostgreSQL’e doğrudan istemciyle bağlanamıyorsanız sorun Rails yapılandırmasından önce sunucu, ağ veya PostgreSQL kimlik doğrulama ayarındadır. İstemciyle bağlantı kuruluyor ancak Rails kuramıyorsa Gemfile, pg kurulumu ve config/database.yml dosyasındaki ortam bölümünü karşılaştırın.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Foruma git ?

Bu konuyu görüntüleyen kullanıcılar

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic