リモートワークを便利にするWebアプリRee①~準備からridgepoleを使ってみるまで~

リモートワーカー向けのWebアプリを作っていきます。

バックエンドにRails、フロントエンドはReactにする予定です。

まずはRailsでAPIを作成するところから。個人的な勉強でRailsを少し触ってましたが、実践は初めて。実践でしかしれないこともあって勉強になります。

今回は、Railsの準備から、いつもdb:migrateをしていたところをridgepoleを使ってみるとすごく便利だったという話までです。

準備

RailsはAPIモードで始めます。

rails new remotework-app --api

DB作成

ここでいつもは「rails g resource」などを使ってmigrationファイルを作って、rails db:migrateをしていましたが、ridgepoleを使ってみました。

gemfileに以下を追記し、「bundle install」

gem 'ridgepole'

完了したら「db」ディレクトリ以下に「Schemafile」を作成します。試しにDBにprojectsを作ってみます。

「db」ディレクトリ以下にprojects.schemeを作成し以下を書きます。

# -*- mode: ruby -*-
# vi: set ft=ruby :
create_table "projects", force: :cascade do |t|
t.string "uuid"
t.string "name"
t.integer "team_id"
end

そしてSchemafileには、以下を追記。

require 'projects.schema'

このようにrequireを使ってファイル分割してますが、Schemafileにまとめて書いても大丈夫なので、そんなに規模が大きくなければ分割しなくてもいいかもです。

そして、以下のコマンドでこのschemeを適用します。

bundle exec ridgepole -c config/database.yml -E development --apply -f db/Schemafile

これでrails db:migrateをやった時と同じ状態になります。

migrationをやってた時は、dbの構造変える時にいちいちスキーマ変更のためのコマンド打って、migrationファイル作って変更して、再びコマンド打っていて面倒でした。

が、ridgepoleを使えば、ファイル上で変更して、コマンドを打つだけ。

ファイルを見ればデータ構造もぱっと見れて、分かりやすいです。

面倒に感じていた部分が解消されたので、より楽しく開発していけそうです。