Ruby on Railsのgem ridgepoleで面倒なMigrationとさようなら

プログラミング

RailsのMigration面倒だな〜。簡単なライブラリないかな?

今回は、このような悩みに答えていきます。

結論: gem ridgepoleを使うと、スキーマの変更、追加の内容をファイルに保存しコマンドを打つだけで管理が可能です。

▼この記事では、以下の点を理解できるような内容となっています。

  1. Railsのマイグレーション
  2. Railのgem ridgepoleの使い方

自分は開発環境にDockerを利用しているため、コマンドもDockerのコマンドで紹介しています。ridgepoleで楽々データベース管理してみましょう。

Ruby on Railsが学べる高評価のプログラミングスクール

Webエンジニア輩出実績トップクラスの【ポテパンキャンプ】
Rails専門に教えているプログラミングスクール。卒業生の転職先からの評判が良いと話題に。厳しめでレベルの高い学習をするため本気で転職したい人以外は挫折します。
tech boost無料カウンセリング
オリジナルアプリの作成ができるため、応募先から高い評価をもらえる本格的なプログラミングスクール。転職サービスも展開している。



目次

  1. Railsのマイグレーションは少し面倒
    • マイグレーションファイルの例
    • マイグレーションで使えるメソッド
  2. Railのgem ridgepoleとは
    • gem ridgepoleをGemfileに追加
    • Schemafileを作成
    • データベースの作成
    • ridgepoleコマンド実行
  3. Ruby on Railsのgem ridgepoleまとめ

Railsのマイグレーションは少し面倒

railsでスキーマの変更があった時に、マイグレーションファイルを追加して管理をしていきます。

直接SQLを使わないで、データベースやテーブルの構造を管理していく仕組みになっていますが、変更や削除など面倒です。

マイグレーションファイルの例

Railsドキュメントに書いてある例です。

class AddSsl < ActiveRecord::Migration
  def up
    add_column :accounts, :ssl_enabled, :boolean, default: true
  end

  def down
    remove_column :accounts, :ssl_enabled
  end
end
class TenderloveMigration < ActiveRecord::Migration
  def change
    create_table(:horses) do |t|
      t.column :content, :text
      t.column :remind_at, :datetime
    end
  end
end

マイグレーションで使えるメソッド

データベースやテーブルに以下のメソッドで変更を加えることができます。(他にもたくさんあります。)

  • create_table
  • change_table
  • add_column
  • change_column
  • add_index

Railのgem ridgepoleとは

gem ridgepoleは冒頭で書いたように、Schemafileのみで管理できます。使い方も簡単なので紹介していきます。

環境

  • Railsは6系
  • MySQLは8.0

gem ridgepoleをGemfileに追加

Gemfileにgemを追加していきます。

gem 'ridgepole'

dockerをつかっているので、以下のコマンドでインストール。

docker-compose run api bundle install

Schemafileを作成

gemのインストールが終わったら、Schemafileを作成していきます。以下のような簡単なテーブルを作ってみます。

create_table "keywords", id: :bigint, unsigned: true, force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t|
  t.string "keyword"
  t.datetime "created_at", precision: 6, null: false
  t.datetime "updated_at", precision: 6, null: false
end

データベースの作成

dockerのdatabase.ymlにデータベースの情報を記述し以下のコマンドでデータベースを作成。

# apiは[サービス名]
docker-compose run api bundle exec rake db:create

ridgepoleコマンド実行

最後にridgepoleのコマンドを実行すると、Schemafileに書いてある通りに作成されます。

# apiは[サービス名]
docker-compose run --rm api bundle exec ridgepole -c config/database.yml -f db/Schemafile --apply

–rmは実行が終わり次第コンテナが削除されるのでdocker-compose run 〇〇の時はつけておくといいかもですね。

Ruby on Railsのgem ridgepoleまとめ

今回は、Railsのgem ridgepoleの紹介でした。Railsでテーブルの管理が面倒と感じたら入れてみてください。

Railsを業務で使っている人は、使ったことがあるかもしれませんね。初心者の方は、Railsに慣れたら使ってみてください。

当サイトで申込の多いプログラミングスクール

TechAcademyの無料体験
マンツーマンでオリジナルアプリの作成ができるテックアカデミーは人気が高いプログラミングスクール。
Webエンジニア輩出実績トップクラスの【ポテパンキャンプ】
転職に強く本気でエンジニア転職を目指す人におすすめ。難易度が高いため身につくスキルも高く企業からの評価も高いのが特徴。
CodeCamp無料体験
講師を選択できるのが特徴のコードキャンプ。チャットでの質問ができないと言われていますが、オプションでチャットサポートを選択できるのがあまり知られていない。講師の評判が高いため質問しながらどんどん進みたい人向け。