macOS上のRuby on RailsアプリケーションでPostgreSQLを使用する方法

前書き

Ruby on Rails Webフレームワークを使用する場合、アプリケーションはデフォルトでデータベースとしてhttps://www.sqlite.org/index.html[SQLite]を使用するように設定されます。 SQLiteは、軽量で移植性が高く、ユーザーフレンドリーなリレーショナルデータベースであり、低メモリ環境で特に優れたパフォーマンスを発揮し、多くの場合にうまく機能します。 ただし、より信頼性の高いデータ整合性とプログラムによる拡張性を必要とする非常に複雑なアプリケーションの場合、https://www.postgresql.org/ [PostgreSQL]データベースがより堅牢で柔軟な選択肢になります。 PostgreSQLを使用するようにRuby on Railsセットアップを構成するには、いくつかの追加手順を実行して実行する必要があります。

このチュートリアルでは、ローカルmacOSマシン上のPostgreSQLデータベースに接続されたRuby on Rails開発環境をセットアップします。 PostgreSQLをインストールして構成し、PostgreSQLをデータベースサーバーとして使用するRailsアプリケーションを作成して、セットアップをテストします。

前提条件

このチュートリアルには次のものが必要です。

  • macOSがインストールされた1台のコンピューターまたは仮想マシン、およびそのマシンへの管理アクセスとインターネット接続。 このチュートリアルは、https://www.apple.com/macos/mojave/ [macOS 10.14 Mojave]でテストされています。

  • macOSマシンにインストールされたRuby on Rails開発環境。 これを設定するには、https://www.digitalocean.com/community/tutorials/how-to-install-ruby-on-rails-with-rbenv-on-macos [Ruby on Railsのインストール方法]のガイドに従ってください。 macOSのrbenv]。 このチュートリアルでは、Rubyのバージョン2.6.3とRailsの5.2.3を使用します。最新バージョンの詳細については、https://www.ruby-lang.org/en/downloads/releases/ [Ruby]およびhttps://guides.rubyonrails.org/[Rails]の公式サイトをご覧ください。

ステップ1-PostgreSQLのインストール

PostgreSQLをデータベースとして使用してWebアプリケーションを作成するようにRuby on Railsを構成するには、まずデータベースをマシンにインストールします。 macOSにPostgreSQLをインストールするさまざまな方法がありますが、このチュートリアルではパッケージマネージャーhttps://brew.sh/[Homebrew]を使用します。

異なるバージョンのPostgreSQLをインストールするための複数のHomebrewパッケージがあります。 最新バージョンをインストールするには、次のコマンドを実行します。

brew install postgresql

特定のバージョンのPostgreSQLをダウンロードする場合は、前のコマンドの `+ postgresql +`を目的のパッケージに置き換えます。 利用可能なパッケージは、https://formulae.brew.sh/formula/postgresql [Homebrew website]で見つけることができます。

次に、PostgreSQLコマンドラインツールにアクセスするために、PostgreSQLバイナリを + PATH`変数に含め、 ++ `を使用しているバージョン番号に置き換えます。

echo 'export PATH="/usr/local/opt/postgresql@/bin:$PATH"' >> ~/.bash_profile

次に、 `+〜/ .bash_profile +`ファイルに加えた変更を現在のシェルセッションに適用します。

source ~/.bash_profile

サービスを開始し、ログイン時に開始できるようにするには、次を実行します。

brew services start postgresql@

インストールが成功したことを確認してください:

postgres -V

次の出力が得られます。

Outputpostgres (PostgreSQL)

PostgreSQLをインストールしたら、次のステップは、Railsアプリケーションが後でデータベースを作成するために使用するロールを作成することです。

手順2-アプリケーションのデータベースロールの作成

PostgreSQLでは、_roles_を使用して権限と承認を整理できます。 HomebrewでPostgreSQLを起動すると、macOSユーザー名でスーパーユーザーロールが自動的に作成されます。 これらのスーパーユーザー特権をRailsアプリケーションに使用するデータベースインスタンスとは別に保つために、この手順では、アクセスの少ない新しいロールを作成します。

新しいロールを作成するには、次のコマンドを実行し、「++」をロールに付けたい名前に置き換えます。

createuser -P -d

このコマンドでは、「+ createuser 」を使用して「+」という名前のロールを作成しました。 `+ -d +`フラグは、ロールに新しいデータベースを作成する許可を与えました。

また、 `+ -P +`フラグも指定しました。これは、新しいロールのパスワードを入力するように求められることを意味します。 希望のパスワードを入力し、将来のステップで構成ファイルで使用できるように必ず記録してください。

`+ -P +`フラグを使用せず、作成後にロールのパスワードを設定する場合は、次のコマンドでPostgreSQLコンソールを入力します。

psql postgres

PostgreSQLコンソールのプロンプトとともに、次の出力を受け取ります。

Outputpsql ()
Type "help" for help.

postgres=#

PostgreSQLコンソールは、 `+ postgres =#+`プロンプトで示されます。 PostgreSQLプロンプトで次のコマンドを入力して、新しいデータベースロールのパスワードを設定し、強調表示された名前を作成した名前に置き換えます。

\password

PostgreSQLはパスワードの入力を求めます。 プロンプトで希望のパスワードを入力し、確認します。

次のコマンドを入力して、PostgreSQLコンソールを終了します。

\q

通常のプロンプトが再び表示されます。

この手順では、アプリケーションのスーパーユーザー権限なしで新しいPostgreSQLロールを作成しました。 これで、このロールを使用してデータベースを作成する新しいRailsアプリを作成する準備ができました。

ステップ3-新しいRailsアプリケーションの作成

PostgreSQL用に設定されたロールを使用して、PostgreSQLをデータベースとして使用するように設定された新しいRailsアプリケーションを作成できるようになりました。

最初に、ホームディレクトリに移動します。

cd ~

このディレクトリに新しいRailsアプリケーションを作成し、「++」をアプリの呼び出したい名前に置き換えます。

rails new  -d=postgresql

`+ -d = postgresql +`オプションはPostgreSQLをデータベースとして設定します。

このコマンドを実行すると、「++」という名前の新しいフォルダーがホームディレクトリに表示され、基本的なRailsアプリケーションのすべての要素が含まれます。

次に、アプリケーションのディレクトリに移動します。

cd

新しいRailsアプリケーションを作成し、プロジェクトのルートディレクトリに移動したので、Railsアプリ内からPostgreSQLデータベースを構成および作成できます。

手順4-データベースの構成と作成

アプリケーション用に + development`および + test`データベースを作成する場合、Railsはステップ2で作成したPostgreSQLロールを使用します。 Railsがこれらのデータベースを作成することを確認するには、プロジェクトのデータベース構成ファイルを変更します。 次に、データベースを作成します。

Railsアプリケーションで行う構成変更の1つは、最後の手順で作成したPostgreSQLロールのパスワードを追加することです。 パスワードなどの機密情報を安全に保つために、構成ファイルに直接書き込むのではなく、環境変数に保存することをお勧めします。

ログイン時に環境変数にパスワードを保存するには、次のコマンドを実行します。` `をアプリの名前に、` `を最後の手順で作成したパスワードに置き換えます。

echo 'export _DATABASE_PASSWORD=""' >> ~/.bash_profile

このコマンドは、環境変数がログイン時に設定されるように、 + export`コマンドを +〜/ .bash_profile`ファイルに書き込みます。

現在のセッションの変数をエクスポートするには、 `+ source +`コマンドを使用します:

source ~/.bash_profile

環境にパスワードを保存したら、構成ファイルを変更します。

任意のテキストエディターでアプリケーションのデータベース構成ファイルを開きます。 このチュートリアルでは、 `+ nano +`を使用します。

nano config/database.yml

「+ default 」セクションの下で、「 pool:<%= ENV.fetch( "RAILS_MAX_THREADS"){5}%> + `」という行を見つけて、以下の強調表示された行を追加し、資格情報と環境変数を入力します。作成しました。 これは次のようになります。

config / database.yml

...
default: &default
 adapter: postgresql
 encoding: unicode
 # For details on connection pooling, see Rails configuration guide
 # http://guides.rubyonrails.org/configuring.html#database-pooling
 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>



development:
 <<: *default
 database: appname_development
...

これにより、Railsアプリケーションは正しいロールとパスワードでデータベースを実行します。 保存して終了するには、「+ CTRL + X 」、「 Y 」、「 ENTER +」の順に押します。

Railsでのデータベースの構成の詳細については、https://guides.rubyonrails.org/configuring.html#configuring-a-database [Rails documentation]を参照してください。

`+ config / database.yml `に変更を加えたので、 ` rails +`コマンドを使用してアプリケーションのデータベースを作成します:

rails db:create

Railsがデータベースを作成すると、次の出力が表示されます。

OutputCreated database '_development'
Created database '_test'

出力が示唆するように、このコマンドはPostgreSQLサーバーに + development`および + test`データベースを作成します。

これで、Railsアプリに接続されたPostgreSQLデータベースができました。 アプリケーションが機能していることを確認するために、次のステップは構成をテストすることです。

ステップ5-構成のテスト

アプリケーションがPostgreSQLデータベースを使用できることをテストするには、Webアプリケーションを実行して、ブラウザーに表示されるようにします。

最初に、Railsの組み込みWebサーバーhttps://github.com/puma/puma[Puma]を使用してアプリケーションを提供します。 このWebサーバーにはRailsが自動的に付属しており、追加のセットアップは不要です。 アプリケーションを提供するには、次のコマンドを実行します。

rails server --binding=127.0.0.1

`-binding`は、アプリケーションを特定のIPにバインドします。 デフォルトでは、このフラグはRailsを ` 0.0.0.0 `にバインドしますが、これはRailsがすべてのインターフェースをリッスンすることを意味するため、 ` 127.0.0.1 `を使用して ` localhost `を指定する方が安全です。 デフォルトでは、アプリケーションはポート「+3000」でリッスンします。

Railsアプリが実行されると、コマンドプロンプトが消え、次の出力に置き換えられます。

Output=> Booting Puma
=> Rails  application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version  (ruby -p62), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://127.0.0.1:3000
Use Ctrl-C to stop

アプリケーションが実行されているかどうかをテストするには、サーバーで新しいターミナルウィンドウを開き、 `+ curl +`コマンドを使用してリクエストを `+127.0.0.1:3000 +`に送信します。

curl http://127.0.0.1:3000

HTMLで多くの出力を受け取り、次のような結果になります。

Output...
       <strong>Rails version:</strong><br />
       <strong>Ruby version:</strong>  (x86_64-darwin18)
     </p>
   </section>
 </div>
</body>
</html>

以下にアクセスして、ローカルWebブラウザーでRailsアプリケーションにアクセスすることもできます。

http://127.0.0.1:3000

このURLには、Ruby on Railsのウェルカムページがあります。

image:https://assets.digitalocean.com/articles/cart_66733/Rails_Welcome.png [Ruby on Railsウェルカムページ]

これは、アプリケーションが適切に構成され、PostgreSQLデータベースに接続されていることを意味します。

結論

このチュートリアルでは、ローカルmacOSマシン上のデータベースとしてPostgreSQLを使用するように設定されたRuby on Rails Webアプリケーションを作成しました。 Rubyプログラミング言語について詳しく知りたい場合は、https://www.digitalocean.com/community/tutorial_series/how-to-code-in-ruby [Rubyシリーズのコーディング方法]をご覧ください。

アプリケーション用のデータベースの選択の詳細については、https://www.digitalocean.com/community/tutorials/sqlite-vs-mysql-vs-postgresql-a-comparisonの違いとユースケースに関するチュートリアルをご覧ください。 -リレーショナルデータベース管理システム[SQLite、PostgreSQL、およびMySQL]。 データベースの使用方法の詳細については、https://www.digitalocean.com/community/tutorials/introduction-to-queries-postgresql [PostgreSQLのクエリの概要]の記事を参照するか、DigitalOceanのhttpsをご覧ください。 //www.digitalocean.com/products/managed-databases/[Managed Databases product]。