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ázvemostechnix
s 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