1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

リポジトリをrenderにデプロイしてみる

Last updated at Posted at 2023-04-02

目的

railsの勉強をしたい。
せっかくならこの世に放ちたいので、renderを使ってデプロイしようと思いました。
1年前に一度、パンの材料を投稿するwebアプリを作ったことがありますが、
ほとんど全部忘れているので備忘録としてQiitaも書きます。(可能な限り

今回やること

今回の目標は以下の5つ。

  1. 新しい Rails のアプリケーションを作成
  2. GitHub を導入
  3. Rails のデータベース管理システムを PostgreSQL にする
  4. render でデプロイ
  5. 動作確認

環境

  • windows 10
  • VSCode 1.77.0
  • ruby 3.0.4
  • Rails 6.1.4.4
  • SQLite 3.41.2
  • PostgreSQL 15

いざ出陣

といっても、こちらのサイトを参照すれば基本的にはいけました。

実行したコマンドは以下。
( # はサイトを参照して手順に進めます。)

cmd
cd Desktop                     // フォルダを作成するディレクトリに移動
rails new アプリ名              // 任意のアプリ名で作成
cd アプリ名                     // 作成したアプリに移動 (以降、同ディレクトリで作業)
git init                       // 自動で実行されるが一応初期化
git add -A                     // ステージエリアに全てのファイルを追加
git commit -m "first commit"   // commit
git remote add origin http://Github.com/GitHubで作成したID/リポジトリ名.git
                               // リモートレポジトリの登録
git push -u origin master      // Push

# Gemfile, database.yml の編集

bundle config set --local without 'production' // 後述
bundle lock --add-platform x86_64-linux        // 後述
bundle install                                 // ライブラリをインストール

# Railsアプリの作成
# Webサービスの作成/設定
# データベースの作成
# Railsアプリとデータベースの接続

サイトにあるようにリンクを開くと、以下のような画面になると思いますが、いったんこれでOKです。
後でページを作って動作確認をします。
image.png

気になったところ

気になったところがあったので以下にまとめます。

bundle config set --local without 'production' について

サイトでは

cmd
bundle install --without production

を実行するとありましたが、非推奨らしい。
--without フラグは、インストール時に production グループの Gem をインストールしないようにしますが、 Bundler はこの設定を覚えないため、このコマンドはそれを覚えさせるためのものです。
これによって以降、単に bundle install で良くなります。

bundle lock --add-platform x86_64-linux について

bundle lock --add-platform x86_64-linux を実行しないままデプロイすると、

/opt/render/project/.gems/gems/bundler-2.2.33/lib/bundler/definition.rb:432:in `validate_platforms!': Your bundle only supports platforms ["x64-mingw32"] but your local platform is x86_64-linux. Add the current platform to the lockfile with `bundle lock --add-platform x86_64-linux` and try again. (Bundler::ProductionError)

とエラーになります。bundle は x64-mingw32 プラットフォームのみをサポートしており、ローカルプラットフォームが x86_64-linux であることが原因のようです。このコマンドは、Gemfile.lock に x86_64-linux プラットフォームを追加し、 Bundler にもこのプラットフォームをサポートする gem を含めるよう指示します。
正味、意味はあんまり分からないけど実行したら解決しました。

cmd
bundle lock --add-platform x86_64-linux  // Gemfile.lock に "x86_64-linux" プラットフォームを追加
bundle install                           // ライブラリをインストール

動作確認

デプロイしたページが表示されるかを確認します。

データベースの作成

データベースは基本的にアプリケーションに1:1で結びついているため、データベースの作成は1度だけすれば問題ありません。

cmd
rails db:create    // データベースの作成
rails db:migrate   // マイグレーション

コントローラーの作成

以下のコマンドを実行してコントローラーを作成します。コントローラーの名前(ここでは tests )は任意ですが、複数形で付けることが命名規則になっています。
コントローラーが何かわからない人は、こちらのサイトを参照し、MVCモデルについて目を通すと良いと思います。

cmd
rails g controller tests   # testsコントローラーを作成する

コントローラーにアクションを定義

app > controllers フォルダに入っているtest_controller.rbを以下のように編集します。

app/controllers/tests_controller.rb
class TestsController < ApplicationController
    def index
        
    end
end

データベースへアクセスする際は、 def indexend の間にいろいろ書きますが、今回は省略します。

アクションに対応するビューを作成

app > views > tests フォルダに入っているindex.html.erbを作って、以下を記述します。

app\views\tests\index.html.erb
Hello World!

Hello World! と表示するだけのコードです。
.erb 拡張子は、 HTML、XML、CSS、JavaScript などの静的なファイルの中に、 Ruby コードを埋め込んで動的にコンテンツを生成するために使用されます。

ルーティング

configフォルダにあるroutes.rbファイルを以下のように編集します。

config\routes.rb
Rails.application.routes.draw do
  # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
  resources :tests
  root   'tests#index'
end

resources :tests は、標準的な8つのルーティングをまとめて定義するもので、このルーティングのみを使ってアプリケーションを作ることが推奨されています。
root 'tests#index' は、 render のURLを踏んだ時にそのままページが表示されるように追加しました。

デプロイ

以下のコマンドで、 GitHub に変更を Push すると自動でデプロイが始まります。

cmd
git add -A                     // ステージエリアに全てのファイルを追加
git commit -m "first commit"   // commit
git push -u origin master      // Push

render から web ページの URL を開き、画面右上にhello world! と表示されていれば OK です!

余談

Web Services on the free instance type are automatically spun down after 15 minutes of inactivity. When a new request for a free service comes in, Render spins it up again so it can process the request.

無料版の render では15分リクエストがないと、サーバーが閉じるため開くのに時間がかかります。
サイト作成がもうちょい進んだら、有料版にしようかな。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?