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.

1901total visits,2visits today

Dodaj do zakładek Link.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

51 + = 53