今回の記事では、Ruby on Railsバージョン7.1アプリケーションの初期設定と構成を行い、Kinstaにデプロイする方法をご紹介します。初心者でも経験豊富なRuby on Rails開発者でも、Kinstaでアプリケーションのデプロイを開始する手立てとしてご活用ください。

前提条件

具体的な説明を始める前に、ローカル開発マシンにRuby、Rails、必要な依存関係をインストールするようにしてください。また、GitとRuby on Railsについての基本的な理解があることを前提とします。

ステップ1. Kinstaホスティングアカウントのセットアップ

Kinstaのウェブサイトにアクセスし、まだアカウントを持っていない場合は新たに作成してください。また、独自ドメインを設定するか、デプロイ時に提供されるKinsta一時URLを使用することができます。

ステップ2. Ruby on Railsアプリケーションの作成

ターミナルを開き、Railsアプリケーションを作成するディレクトリに移動します。次のコマンドを実行してアプリケーションを作成します。

rails new myapp --database=postgresql --javascript=esbuild --css=tailwind

このコマンドにより、データベースアダプタとしてPostgreSQLを使用した、myappという名前のRailsアプリケーションが作成されます。なお、JavaScriptのコンパイルにはesbuildが、そしてTailwind CSSフレームワークが利用されます。

myappの部分は、お好きなアプリケーション名に変更してください。

rails newコマンドから設定可能なオプション一覧を表示するには、以下を実行することができます。

rails new --help

ステップ3. Railsアプリケーションの設定

以下のコマンドを使用してアプリケーションディレクトリに移動します。

cd myapp

Railsアプリをバンドルする際に、デプロイに使用するOSであるLinuxプラットフォームも追加するようにしてください。ターミナルで次のコマンドを入力します。

bundle lock --add-platform x86_64-linux

ウェブプロセススクリプト

アプリのbinディレクトリにstart.shファイルを追加します。これにより、サーバーがアプリケーションを起動し、必要なコマンドを実行するようになります。ターミナルで、次のように入力してファイルを作成します。

touch bin/start.sh

このファイルの中に以下を追加してください。

#!/bin/bash

bundle exec rails db:prepare
bundle exec rails server

Homeページの作成

そして、Hello Worldを表示するためにアプリのHomeページを作成します。ターミナルで以下を入力してください。

bin/rails generate controller Home index

すると以下が出力されます。

create  app/controllers/home_controller.rb
route    get 'home/index'
invoke  erb
create  app/views/home
create  app/views/home/index.html.erb
invoke  test_unit
create  test/controllers/home_controller_test.rb
invoke  helper
create  app/helpers/home_helper.rb
invoke  test_unit

app/views/home/index.html.erbを開き、その内容を次のように置き換えてください。

 <h1>Hello, Kinsta!</h1>

アプリケーションのホームページを設定する

config/routes.rbを開き、Rails.application.routes.drawブロックの先頭に以下のルートを追加します。

Rails.application.routes.draw do
  root "home#index"

  get "/home", to: "home#index"
end

これでアプリケーションをローカルで実行すると、ホームページが表示されます。esbuildを追加してアプリケーションを生成したので、起動には簡易コマンドを使用できます。以下のコマンドを実行することで、サーバーが起動し、ライブリロードに伴いCSSとJavaScriptの両方の変更点が監視されます。

bin/dev

データベースの作成

PostgreSQLデータベースを選択してRailsアプリケーションを作成したので、MyKinstaからデータベースを設定する必要があります。

  • MyKinstaアカウントにログインし、ダッシュボードから「サービスを追加」をクリックし、「データベース」を選択
  • 基本的な情報を入力し、最終確認ページで「データベースを作成する」をクリックして操作を確定

データベースを作成する
データベースを作成する

ステップ 4. デプロイの準備

コードをホストするには、GitHubに新しくリポジトリを作成することから始めます。

Railsアプリケーションディレクトリのルートレベルを対象に、ローカルでGitリポジトリを初期化します。

git init

アプリケーションディレクトリのルートに.gitignoreファイルを作成し、不要なファイルやディレクトリをバージョン管理から除外します。Railsアプリケーションの.gitignoreファイルのサンプルは、GitHubの公式ページにあります。

ローカルリポジトリをGitHubで作成したリポジトリに接続するには、usernamerepositoryを自分のものに置き換えて、リモートオリジンをローカルリポジトリに追加します。

git remote add origin https://github.com/username/repository.git

コードをGitリポジトリに追加、コミット、プッシュします。

git add .
git commit -m "Initial commit"
git push

リポジトリにプッシュするたびに自動でデプロイするようにKinstaを設定しているため、最初のビルドは失敗します。これは、まだデータベースをアプリケーションに接続していないために起こります。

ステップ5. MyKinstaにデプロイする

  1. MyKinstaアカウントにログイン
  2. ダッシュボードから「サービスを追加」をクリックし、「アプリケーション」を選択
  3. Gitサービスに接続

Gitサービスに接続する
Gitサービスに接続する

アプリケーションの詳細情報を設定する

  1. リポジトリを追加し、「デフォルトブランチ」を指定
  2. (任意で)このデフォルトブランチで「コミットに際し自動でデプロイ」を選択
  3. アプリケーション名を追加(これは、ダッシュボード上でアプリケーションを識別するために使用されます)
  4. データセンターの場所を選択(あなたの利用者に最も近い場所を選んでください)

アプリケーションの追加
アプリケーションの追加

次に環境変数を追加できます(例はこちら)。生成されたRailsアプリには、configフォルダ内credentialsファイルにあるsecrets(シークレット)を解読し読み取るマスターキーが付属します。マスターキーは絶対にバージョン管理下に置かないようにしてください(すでに.gitignoreファイルにあります)。

復号を許可するには、特別な鍵を使って変数を設定します。「環境変数」を展開し、ローカルのマスターキーファイルの値をコピーして、RAILS_MASTER_KEY変数の「値1」に貼り付けます。

環境変数
環境変数

ビルド環境の設定

  1. ビルドリソースを選択
  2. Railsアプリケーションの場合は「Buildpacksを使用してコンテナイメージを設定」を選択
  3. 続行」をクリック

Buildpacksを使用する
Buildpacksを使用する

アプリケーションリソースの設定

  1. startコマンド」フィールドは空のままにしておく
  2. 続行」をクリック

プロセスのセットアップ
プロセスのセットアップ

アプリのデータベースを作成する

データベースの最終的な接続設定を行います。

  1. 左側のMyKinstaメニューから、「データベース」をクリックし、新しく作成したデータベース名をクリック
  2. 情報」見出しの下に「内部接続」という小見出しがあるので、「アプリケーションを追加」をクリック
  3. ドロップダウンメニューから、Railsアプリケーションを選択
  4. アプリケーションへの環境変数の追加」にチェックを入れる
  5. 接続を追加」をクリック

内部接続
内部接続

ローカルデータベースの設定

config/database.ymlファイルを開き、MyKinstaのデータベースログイン情報に従ってデータベース情報を編集します。

例)

production:
  adapter: postgresql  
  encoding: unicode  
  pool: 5
  database: <%= ENV["DB_NAME"] %>
  host: <%= ENV["DB_HOST"] %>
  username: <%= ENV["DB_USER"] %>
  password: <%= ENV["DB_PASSWORD"] %> 

データベース接続の処理に関する詳細は、設定ドキュメントをご参照ください。

設定を確認し、お支払い情報を入力してアプリケーションのセットアップを完了すると、Kinstaのシステムにより数分でデプロイが行われます。

まとめ

この記事にある説明に沿って進めることで、Ruby on Railsバージョン7.1とPostgreSQLデータベースを用いたアプリケーションをKinstaにデプロイしてホスティングを開始することができます。

これで、アプリケーションの開発に専念し、Kinstaの便利な機能の数々を利用することができます。疑問点等がございましたら公式ドキュメントをご参照いただくか、カスタマーサポートまでお気軽にお問い合わせください。

Lee Sheppard

Lee is an Agile certified full stack Ruby on Rails developer. With over six years in the tech industry he enjoys teaching, coaching Agile, and mentoring others. Lee also speaks at tech related events and has a background in design and illustration.