一度Ruby on Railsのデータベーススキーマ管理法に慣れてしまうと、普段のSQLを書いて実行するような方法がとても面倒に感じるようになります。あの部分だけ欲しいと思う人は多いのではないでしょうか。 そんな方に使ってみて欲しいのがRidgepoleです。テーブル構造の管理がとても簡単にできるようになります。

Ridgepoleの使い方

RidgepoleはShemafileを作成し、その中にテーブル構造を定義します。そしてconfig.ymlに記述された接続先情報に従ってSQLを実行します。SQL部分についてはActiveRecordが使われているので、多彩なデータベースに対応しています。

$ ridgepole -c config.yml --apply --dry-run
Apply `Schemafile` (dry-run)
create_table("articles", {}) do |t|
  t.string("title", {:limit=>255})
  t.text("text", {:limit=>65535})
  t.text("author", {:limit=>65535})
  t.datetime("created_at", {})
  t.datetime("updated_at", {})
end

# CREATE TABLE `articles` (
# `id` bigint NOT NULL AUTO_INCREMENT PRIMARY KEY,
# `title` varchar(255),
# `text` text,
# `author` text,
# `created_at` datetime,
# `updated_at` datetime)
# ENGINE=InnoDB
$ ridgepole -c config.yml --apply
Apply `Schemafile`
-- create_table("articles", {})
   -> 0.0267s

DB構造をアップデートする場合もSchemafileを更新して実行するだけです。差分をとって自動的にカラム追加や削除を行ってくれます。名前を変える場合だけ若干注意が必要ですが、一度間違える度にスキーマ用のファイルが増えていくRailsよりも手軽と言えそうです。

RidgepoleはRuby製のオープンソース・ソフトウェア(MIT License)です。

winebarrel/ridgepole: Ridgepole is a tool to manage DB schema. It defines DB schema using Rails DSL, and updates DB schema according to DSL. (like Chef/Puppet)