- Web Engineer
- アウトバウンド営業
- Webエンジニア(経験者)
- Other occupations (18)
- Development
- Business
なぜこの記事を書くのか
最近、Github ActionsでRailsアプリケーションの自動テストを設定する中で、schema.rb
がCI環境やテスト環境で重要な役割を果たすことを体感しました。
その際、schema.rb
が正しく管理されていないことが原因で、スキーマの不一致によるエラーや不便な点がありました。
これを機にschema.rb
の役割や管理方法をしっかりと理解しておこうと思い、ブログ執筆に至りました。
schema.rbの基本
schema.rbとは?
Railsアプリケーションのデータベース構造を記録するファイルです。
データベースのスキーマの情報がこのファイルに反映されます。
Rails 7.1.3.4
ActiveRecord::Schema[7.1].define(version: 2024_10_10_071952) do create_table "sample_users", id: :integer, charset: "utf8", force: :cascade do |t|
t.datetime "created_at", precision: nil, null: false
t.datetime "updated_at", precision: nil, null: false
t.string "name" t.string "birthday" t.text "hobby"
t.index ["name"], name: "index_sample_user_on_name", unique: true
end
テーブルの定義がズラッと並びます。
内容としては、ActiveRecordのcreate_table
メソッドでテーブルを生成する記述がされています。
version: 2024_10_10_071952
はmigrationのバージョンで、DBのschema_migrations
テーブルの最新のものが反映されます。
schema_migrations
テーブルには、Rails アプリケーションでマイグレーションを実行する度にバージョンがインサートされていきます。
Railsはこのテーブルを介して、マイグレーションがどこまで実行されたかを管理しています。
rails db:schema:dumpによるschema.rbの生成・更新について
Railsでschema.rbを生成・更新するのはrails db:schema:dump
コマンドです。rails db:migrate
で、マイグレーションを実行する際は、このrails db:schema:dump
コマンドがDBスキーマ更新後に実行され、db/schema.rb
ファイルにスキーマが出力されます。
なお、データベース上にすでにテーブルが存在し、schema_migrations
テーブルがあれば、マイグレーションファイルがなくてもrails db:schema:dump
コマンドを実行すればdb/schema.rb
に出力されます。
つまり、rails db:schema:dump
は、マイグレーションファイルを見るのではなく、実際のデータベースのスキーマを見ています。
schema.rbの役割
schema.rb
の役割はなんでしょうか?
Railsでmigrationファイルを触ったことのある人であれば、例に挙げたschema.rb
のsample_users
テーブル生成の記述は、migrationファイル
の記述ととてもよく似ていることに気がつくと思います。
schema.rb
の役割を理解するには、このmigrationファイルとの役割の違いを理解することが大切です。
両者の違いは以下になります。
migrationファイル
はスキーマの履歴を表現し、開発者が作成・管理schema.rb
は現在のスキーマの状態を表現し、Railsアプリケーションが生成・管理
migrationファイル
は、必要なテーブルやカラムの追加、ユニークキーやインデックスの追加を行う際に使用します。migrationファイル
の記述後、rails db:migrate
コマンドを実行しデータベースにスキーマを反映します。
これらのmigrationファイル
をGitリポジトリ上で管理しておくことで、スキーマの変更やタイミングを開発者やRailsアプリケーションは知ることができます。
…
記事の続きは下のURLをクリック!
https://rightcode.co.jp/blogs/50365
エンジニア積極採用中です!
現在、WEBエンジニア、モバイルエンジニア、デザイナー、営業などを積極採用中です!
採用ページはこちら:https://rightcode.co.jp/recruit
社員の声や社風などを知りたい方はこちら:https://rightcode.co.jp/blogs?category=life
社長と一杯飲みながらお話しませんか?(転職者向け)
特設ページはこちら: https://rightcode.co.jp/gohan-sake-president-talk
もっとワクワクしたいあなたへ
現在、ライトコードでは「WEBエンジニア」「モバイルエンジニア」「ゲームエンジニア」、「デザイナー」「WEBディレクター」「営業」などを積極採用中です!
ライトコードは技術力に定評のある受託開発をメインにしているIT企業です。
有名WEBサービスやアプリの受託開発などの企画、開発案件が目白押しの状況です。
- もっと大きなことに挑戦したい!
- エンジニアとしてもっと成長したい!
- モダンな技術に触れたい!
現状に満足していない方は、まずは、エンジニアとしても第一線を走り続ける弊社代表と気軽にお話してみませんか?
ネット上では、ちょっとユルそうな会社に感じると思いますが(笑)、
実は技術力に定評があり、沢山の実績を残している会社ということをお伝えしたいと思っております。
- ライトコードの魅力を知っていただきたい!
- 社風や文化なども知っていただきたい!
- 技術に対して熱意のある方に入社していただきたい!
一度、【Wantedly内の弊社ページ】や【コーポレートサイト】をのぞいてみてください。