Ruby on Rails – konfiguracja połączenia z bazą danych

Ruby umożliwia połączenie z wieloma typami serwerów baz danych – od standardowo wbudowanego Sqlite, po bardziej zaawansowane silniki pod warunkiem, że istnieje biblioteka odpowiedzialna za obsługę danej bazy. Obecnie Ruby dysponuje obsługą następujących serwerów bazy danych:

  • MySQL oraz MariaDB – najbardziej popularny serwer „internetowy”
  • PostgreSQL – świetny serwer dostępny na wiele platform
  • Oracle – serwer znanego producenta
  • Microsoft SQL Server – bardzo popularny serwer dla MS Windows
  • SQLite (w wersji 2.x i 3.x) – plikowa baza danych
  • IBM DB2 – serwer firmy IBM
  • OpenBase – baza z systemu OpenOffice
  • Sybase – baza danych firmy Sybase
  • Firebird – darmowy serwer baz danych wywodzący się z serwera Interbase firmy Borland.

Wsparcie dla serwerów oznacza zarówno model ActiveRecord, jak i mechanizm migracji, za pomocą którego można tworzyć, zmieniać i kontrolować schemat tabel w bazie danych, niezależnie od jej typu, używając jedynie kodu Ruby. Poza tym Rails może pobierać dane z plików (w tym XML, YAML, CSV) czy dowolnego innego źródła obsługiwanego przez Ruby.

Konfiguracja połączenia z bazą danych zapisana jest w pliku config\database.yml i domyślnie zawiera wpis połączenia z bazą SQLite. Jeżeli zajdzie konieczność zmiany połączenia z bazą, należy ten plik odpowiednio zmodyfikować, podając parametry połączenia.

Uwaga – zaraz po zainstalowaniu, Rails używa połączenie z bazą plikową SQLite3, ponieważ jest to baza bezkonfiguracyjna. W przypadku zaistnienia konieczności wsparcia dla innych serwerów, należy zainstalować odpowiedni plugin.

Domyślny plik konfiguracji bazy wygląda tak:

# SQLite version 3.x
#   gem install sqlite3
#
default: &default
  adapter: sqlite3
  pool: 5
  timeout: 5000
 
development:
  <<: *default
  database: db/development.sqlite3
 
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  <<: *default
  database: db/test.sqlite3
 
production:
  <<: *default
  database: db/production.sqlite3

Jak widać, zdefiniowane parametry główne (default) mapowane są później do pozostałych środowisk (deweloperskie, testowe oraz produkcyjne).

Teraz zajmiemy się połączeniem z serwerem MySQL:

W tym celu należy doinstalować gem obsługi tego serwera, wpisując w katalogu projektu następujące polecenie:

gem install mysql2

Następnie można skonfigurować połączenie w pliku config\database.yml:

default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  host: localhost
  username: nazwa_uzytkownika
  password: haslo
  socket: /var/run/mysqld/mysqld.sock
 
test:
  <<: *default
  database: nazwa_bazy
 
development:
  <<: *default
  database: nazwa_bazy
 
production:
  <<: *default
  database: nazwa_bazy

Tutaj ważna uwaga dotycząca formatu Yaml, w którym utworzony jest plik database.yml. Ten specyficzny format wymaga odpowiedniego formatowania wcięć i warto trzymać się zasad używania pojedynczych spacji w tworzeniu nowych wierszy.

Kolejnym krokiem jest zainstalowanie gema obsługi MySQL w pliku gemfile. Otwieramy plik i wpisujemy na końcu:

# Obsługa MySQL
gem 'mysql2', '~> 0.4.4'

W przypadku wszelkich problemów z parsowaniem przez Rubiego plików Yaml, warto przejść na stronę http://www.yamllint.com/, wkleić zawartość pliku konfiguracyjnego i sprawdzić ich składnię. Poprawna weryfikacja i poprawienie błędów spowoduje poprawny odczyt pliku przez system.

Total Page Visits: 3159 - Today Page Visits: 2
Dodaj do zakładek Link.

Komentarze są wyłączone.