R.Reddington

WFN Üye
Konular
562
Mesajlar
562
Çözüm
0
Ticaret Puanı
0
Üyelik
24 Gün
Konum
Kastamonu
Web Sitesi
Var
Alanı
Sosyal Backlink
1/1
Konu sahibi
Ruby on Rails uygulamasını PostgreSQL’e bağlamak için pg paketini kurun, config/database.yml dosyasına sunucu ve veritabanı bilgilerini girin, ardından bağlantıyı bir sorguyla sınayın. Veritabanı henüz yoksa önce yetkili bir hesapla oluşturmanız; tabloların hazırlanması için de bağlantıdan sonra migration’ları çalıştırmanız gerekir.

PostgreSQL tarafını hazırlayın​


PostgreSQL sunucusunun çalışır ve Rails uygulamasının bulunduğu yerden erişilebilir olması gerekir. Sunucu adresini, portu, veritabanı adını, giriş yapabilen PostgreSQL kullanıcı adını ve parolasını hazırlayın. Veritabanı başka bir sunucudaysa bu bilgileri yöneticinizden veya sağlayıcınızdan alın. Uygulamanın migration’ları çalıştırabilmesi için kullanıcının ilgili şemada tablo oluşturma ve değiştirme yetkileri de olmalıdır.

Aşağıdaki varsayımsal örnekte sunucu yerel makinededir, port 5432, kullanıcı rails_app ve veritabanı rails_app_development adındadır. Bunları kendi bilgilerinizle değiştirin. 127.0.0.1 uygulamanın çalıştığı makineyi gösterir; örneğin Rails bir kapsayıcıdaysa veritabanı sunucusunun adresi farklı olabilir.

Veritabanı ve kullanıcı zaten hazırsa bu adımı geçin. Yerel bir sunucuda bunları oluşturmak için rol ve veritabanı oluşturma yetkisi olan bir PostgreSQL hesabıyla psql açın. Hesabın adı ve bağlantı yöntemi kurulumunuza bağlıdır. Açılan psql isteminde şu komutları girin:

SQL:
CREATE ROLE rails_app LOGIN;
\password rails_app
CREATE DATABASE rails_app_development OWNER rails_app;

\password parola isteyerek kullanıcıya parola atar. Son komut veritabanını oluşturur ve kullanıcıyı sahibi yapar. Yetki hatası alırsanız süper kullanıcı yetkisi vermek yerine yöneticiden bu kullanıcı ve veritabanını oluşturmasını, gerekli şema yetkilerini tanımlamasını isteyin.

Rails bağımlılığını ve bağlantı ayarlarını düzenleyin​


Uygulamanın kök dizinindeki Gemfile içinde pg yoksa ekleyin; varsa ikinci kez eklemeyin:

Ruby:
gem "pg"

Dosyayı kaydedip aynı dizindeki terminalde bağımlılıkları kurun:

Bash:
bundle install

Kurulum pg için yerel derleme hatası verirse hata çıktısındaki eksik PostgreSQL istemci kütüphanesi, geliştirme dosyaları veya derleyici gereksinimini işletim sisteminize göre giderip komutu yeniden çalıştırın.

Ardından config/database.yml içindeki development yapılandırmasını kendi bilgilerinize göre düzenleyin. Aşağıdaki örnek yalnız geliştirme ortamını gösterir; dosyadaki test veya üretim ayarlarını ihtiyacınız olmadan silmeyin:

YAML:
development:
  adapter: postgresql
  encoding: unicode
  host: 127.0.0.1
  port: 5432
  database: rails_app_development
  username: rails_app
  password: <%= ENV.fetch("PG_APP_PASSWORD").to_json %>
  pool: 5

Buradaki adapter, Rails’in kullanacağı veritabanı sürücüsünü; pool ise bağlantı havuzunun boyutunu belirtir. Parola dosyaya yazılmak yerine ortam değişkeninden okunur. Dosyayı kaydedin ve aşağıdaki komutları çalıştıracağınız terminal oturumunda parolayı tanımlayın. Bu örnek Bash içindir; giriş ekranda görünmez:

Bash:
read -r -s -p 'PostgreSQL parolası: ' PG_APP_PASSWORD
printf '\n'
export PG_APP_PASSWORD

Parolayı komut geçmişine, projeye veya kaynak kod deposuna kaydetmeyin. Yeni bir terminal açarsanız değişkeni o oturumda yeniden tanımlamanız gerekir. DATABASE_URL zaten tanımlıysa Rails bu bağlantı bilgisini dosyadaki ayarlarla birleştirebilir ve URL’deki çakışan değerler geçerli olabilir; beklenmedik bir sunucuya bağlanmamak için onu da gözden geçirin. Değerini parola içerebileceğinden paylaşmayın.

Bağlantıyı ve tabloları doğrulayın​


Uygulama kök dizininde, aynı terminal oturumunda şu komutu çalıştırın:

Bash:
RAILS_ENV=development bundle exec rails runner 'puts ActiveRecord::Base.connection.select_value("SELECT current_database()")'

Örnekte rails_app_development yazdırılması, Rails’in o anda o adlı PostgreSQL veritabanına sorgu gönderebildiğini gösterir. Bu sonuç tabloların hazır olduğunu veya uygulamanın bütün işlemlerinin yetkili olduğunu kanıtlamaz. Beklenmeyen bir ad görürseniz database.yml ve varsa DATABASE_URL ayarlarını düzeltip tekrar deneyin.

Bağlantı başarılıysa projenin bekleyen şema değişikliklerini uygulayın:

Bash:
RAILS_ENV=development bundle exec rails db:migrate

Komut hatasız tamamlanırsa bekleyen migration’lar uygulanmıştır; bekleyen migration yoksa yeni bir tablo oluşturulması gerekmez. Migration sırasında yetki hatası çıkarsa hata metnindeki şema veya nesne adını not edin ve yöneticiden rails_app kullanıcısına ilgili işlem için gerekli yetkiyi isteyin. Üretim veritabanında migration çalıştırmadan önce hedef ortamı ve yedekleme prosedürünü doğrulayın.

Bağlantı kurulamazsa​


connection refused veya zaman aşımında PostgreSQL’in çalıştığını, adresin ve portun Rails’in çalıştığı yerden erişilebilir olduğunu inceleyin. Parola doğrulama hatasında kullanıcı adını ve aynı terminaldeki parola değişkenini yeniden girin; sunucunun bu bağlantı için hangi kimlik doğrulama yöntemini kullandığını yöneticiyle doğrulayın. Veritabanı bulunamıyorsa yapılandırmadaki adı mevcut adla karşılaştırın veya yöneticiden o adla oluşturmasını isteyin.

Uzak sunucuya bağlanırken sağlayıcının TLS ve sertifika koşullarını kullanın. Sertifika yetkilisi dosyası ve sunucu adı hazırsa sslmode: verify-full ile sunucu sertifikası ve adı doğrulanabilir; gerekli kök sertifikanın konumunu sslrootcert ile belirtin. Bağlantı yine başarısızsa yöneticiye hedef adres ve portu, kullanılan kullanıcı ve veritabanı adını ve parolalar ayıklanmış hata metnini iletin; ağ erişimi, kimlik doğrulama ve şema yetkilerinin kontrol edilmesini isteyin.

Sık sorulan sorular​

Yeni bir Rails projesi PostgreSQL ayarlarıyla başlatılabilir mi?​

Evet. Rails kuruluysa rails new proje_adi --database=postgresql komutu PostgreSQL için başlangıç yapılandırması oluşturur. Sunucu, kullanıcı ve veritabanı yine ayrıca hazırlanmalı ve bağlantı bilgileri ortamınıza göre düzenlenmelidir.

SQLite’tan PostgreSQL’e geçince eski veriler otomatik taşınır mı?​

Hayır. Bağlantı ayarını değiştirmek ve migration çalıştırmak mevcut SQLite kayıtlarını PostgreSQL’e aktarmak anlamına gelmez. Verileri ayrıca aktarmanız, ilişkileri ve sonuçları doğrulamanız gerekir; geçişten önce mevcut veritabanının yedeğini alı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