今回の記事では、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で作成したリポジトリに接続するには、username
とrepository
を自分のものに置き換えて、リモートオリジンをローカルリポジトリに追加します。
git remote add origin https://github.com/username/repository.git
コードをGitリポジトリに追加、コミット、プッシュします。
git add .
git commit -m "Initial commit"
git push
リポジトリにプッシュするたびに自動でデプロイするようにKinstaを設定しているため、最初のビルドは失敗します。これは、まだデータベースをアプリケーションに接続していないために起こります。
ステップ5. MyKinstaにデプロイする
- MyKinstaアカウントにログイン
- ダッシュボードから「サービスを追加」をクリックし、「アプリケーション」を選択
- Gitサービスに接続
アプリケーションの詳細情報を設定する
- リポジトリを追加し、「デフォルトブランチ」を指定
- (任意で)このデフォルトブランチで「コミットに際し自動でデプロイ」を選択
- アプリケーション名を追加(これは、ダッシュボード上でアプリケーションを識別するために使用されます)
- データセンターの場所を選択(あなたの利用者に最も近い場所を選んでください)
次に環境変数を追加できます(例はこちら)。生成されたRailsアプリには、configフォルダ内credentialsファイルにあるsecrets(シークレット)を解読し読み取るマスターキーが付属します。マスターキーは絶対にバージョン管理下に置かないようにしてください(すでに.gitignoreファイルにあります)。
復号を許可するには、特別な鍵を使って変数を設定します。「環境変数」を展開し、ローカルのマスターキーファイルの値をコピーして、RAILS_MASTER_KEY
変数の「値1」に貼り付けます。
ビルド環境の設定
- ビルドリソースを選択
- Railsアプリケーションの場合は「Buildpacksを使用してコンテナイメージを設定」を選択
- 「続行」をクリック
アプリケーションリソースの設定
- 「startコマンド」フィールドは空のままにしておく
- 「続行」をクリック
アプリのデータベースを作成する
データベースの最終的な接続設定を行います。
- 左側のMyKinstaメニューから、「データベース」をクリックし、新しく作成したデータベース名をクリック
- 「情報」見出しの下に「内部接続」という小見出しがあるので、「アプリケーションを追加」をクリック
- ドロップダウンメニューから、Railsアプリケーションを選択
- 「アプリケーションへの環境変数の追加」にチェックを入れる
- 「接続を追加」をクリック
ローカルデータベースの設定
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の便利な機能の数々を利用することができます。疑問点等がございましたら公式ドキュメントをご参照いただくか、カスタマーサポートまでお気軽にお問い合わせください。
コメントを残す