I když výchozí databáze SQLite3 funguje skvěle s Ruby on Rails , v některých případech bychom jej neměli používat. Pokud například k vaší aplikaci Rails současně přistupuje velký počet uživatelů, SQLite se nedoporučuje. Měli bychom vyzkoušet robustnější databáze jako MySQL nebo PostgreSQL, které poskytují škálovatelnost, souběžnost, centralizaci a kontrolu. Už jsme věděli, jak používat aplikaci MySQL s Rails . Dnes uvidíme, jak používat PostgreSQL s aplikací Ruby on Rails v Ubuntu Linux.
Předpoklady
Předpokládám, že jste již nainstalovali nejnovější Ruby on Rails na svůj systém Linux. Pokud ne, podívejte se do následujícího průvodce.
- Jak nainstalovat Ruby On Rails v Linuxu
1. Nainstalujte PostgreSQL
Chcete-li nainstalovat PostgreSQL v Debianu, Ubuntu a jeho derivátech, spusťte:
$ sudo apt install postgresql postgresql-contrib libpq-dev
Tento příkaz nainstaluje PostgreSQL spolu se všemi požadovanými závislostmi. Zde je libpq-dev je knihovna PostgreSQL, která umožňuje klientským programům předávat dotazy na backend server PostgreSQL a přijímat výsledky těchto dotazů. Tato knihovna je vyžadována pro připojení k PostgreSQL, když nastavujete aplikaci Rails.
Ujistěte se, že služba postgresql je spuštěna a povolena při spuštění:
$ sudo systemctl start postgresql
$ sudo systemctl enable postgresql
Chcete-li zobrazit aktuální stav služby postgresql, spusťte:
$ systemctl status postgresql
1.1. Vytvořit novou databázovou roli
Potřebujeme vyhrazeného databázového uživatele (role), který bude vytvářet a konfigurovat databáze nebo naši aplikaci Rails.
Chcete-li vytvořit novou databázovou roli v PostgreSQL, spusťte z terminálu následující příkaz:
$ sudo -u postgres createuser -s ostechnix -P
Tady,
sudo -u postgres- umožňuje spustit příkaz zpostgresúčet.createuser -s ostechnix- vytvořit novou roli s názvemostechnixs oprávněními superuživatele.-P- vás vyzve k zadání hesla pro novou roli.
2. Použijte PostgreSQL s aplikací Ruby on Rails v Linuxu
Chcete-li vytvořit novou aplikaci Rails s názvem ostechnixapp a použijte PostgreSQL jako svou výchozí databázi, spusťte:
$ rails new ostechnixapp -d postgresql
Tím se vytvoří aplikace Rails s názvem ostechnixapp v adresáři s názvem ostechnixapp a nainstalujte závislosti drahokamů, které jsou již zmíněny v Gemfile pomocí bundle install .
Po vytvoření ostechnixapp aplikace, přepněte do jejího adresáře:
$ cd ostechnixapp/
Upravte konfigurační soubor databáze aplikace:
$ vi config/database.yml
Pod default sekce, přidejte databázovou roli PosgreSQL a její heslo, které jsme vytvořili v předchozím kroku:
[...]
default: &default
adapter: postgresql
encoding: unicode
# For details on connection pooling, see Rails configuration guide
# https://guides.rubyonrails.org/configuring.html#database-pooling
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: ostechnix
password: Password123#@!
[...]
Nahraďte uživatelské jméno a jeho heslo svým vlastním. Stiskněte ESC a zadejte :wq uložte a zavřete soubor.
Nyní vytvořte novou databázi pro vaši aplikaci Rails pomocí příkazu:
$ rake db:create
Tím vytvoříte dvě databáze s názvem vaší aplikace Rails. Pokud je například název aplikace ostechnixapp, vytvoří se ostechnixapp_development a ostechnixapp_test .
Created database 'ostechnixapp_development' Created database 'ostechnixapp_test'
Můžete si to ověřit, zda jsou databáze úspěšně vytvořeny i z PosgreSQL.
Přihlaste se do PosgreSQL:
$ sudo -u postgres psql
Ve výzvě postgresql spusťte \l seznam dostupných databází:
postgres=# \l
Ukázkový výstup:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
--------------------------+-----------+----------+---------+---------+-----------------------
ostechnixapp_development | ostechnix | UTF8 | C.UTF-8 | C.UTF-8 |
ostechnixapp_test | ostechnix | UTF8 | C.UTF-8 | C.UTF-8 |
postgres | postgres | UTF8 | C.UTF-8 | C.UTF-8 |
template0 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(5 rows)
postgres=#
Ukončete výzvu PostgreSQL zadáním \q .
postgres=# \q
Nyní spusťte webový server Rails pomocí příkazu:
$ rails server -b 0.0.0.0
Tím se spustí vaše aplikace Rails na výchozím portu 3000 . Zde jsme předali argument -b 0.0.0.0 za účelem přístupu k aplikaci Rails z libovolného počítače v místní síti.
Otevřete svůj webový prohlížeč a přejděte na adresu URL:http://ip-address:3000 .
Pokud chcete použít jiný port, předejte -p příznak spolu s číslem portu, jak je uvedeno níže:
$ rails server -b 0.0.0.0 -p 8080
Nyní je aplikace Rails přístupná z této adresy URL:http://ip-address:8080 .
3. Smazat aplikaci Rails
Pokud jste použili výchozí databázi, kterou je SQLite, můžete aplikaci Rails smazat jednoduchým smazáním jejího adresáře aplikace.
$ rm -fr ostechnixapp
Pokud jste použili PostgreSQL, musíte nejprve zrušit související databáze vaší aplikace pomocí příkazu:
$ rake db:drop
A poté smažte adresář aplikace:
$ rm -fr ostechnixapp
Závěr
Nyní víte, jak vytvořit aplikaci Rails s PostgreSQL jako databází. Jak jsem již zmínil, pokud je vaše aplikace aktivně používána velkým počtem uživatelů, musíte použít PostgreSQL nebo MySQL. To může být také užitečné, když budete chtít v budoucnu škálovat databázi, spravovat databázi z odstraněného systému.
Související čtení:
- Konfigurace připojení k databázi pomocí proměnné prostředí v Rails