14
rails_db_patch Hamamatsu.rb #48 Yuto Ogi

DMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作った

Embed Size (px)

Citation preview

Page 1: DMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作った

rails_db_patch

Hamamatsu.rb #48 Yuto Ogi

Page 2: DMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作った

職業railsエンジニアになって約半年。

Page 3: DMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作った

課題

仕様変更や顧客要望で本番環境のDBへ insert / update sqlを実行することがある。

Page 4: DMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作った

課題

db/seed.rb とかもあるけど、 複数回実行するような用途ではない。 現在はrails console内で操作しているが、

実行履歴が残らない/別環境に同じことをする場合面倒い。

Page 5: DMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作った

欲しい機能

デプロイのたびに1回だけdbスクリプトを実行する仕組み。 migrationファイルのように管理したい。

Page 6: DMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作った

作りました

Page 7: DMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作った

作りました

Page 8: DMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作った

Install

gem install “db_patch”

Page 9: DMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作った

Commands

rake db:patch:clear # clear database rake db:patch:execute # execute patch rake db:patch:init # initialize database rake db:patch:new # create new patch file

Page 10: DMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作った
Page 11: DMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作った

コードなど• プロジェクトで使う用途で突貫で作ったので不具合あるかも。

• 実行履歴の管理は、migrationと同じようにDatabaseにテーブルを用意しています。

• ruby内で.rbを実行するのは require “rubyファイル名”で良いのか・・・

• spec書いていない。

Page 12: DMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作った
Page 13: DMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作った

rubygems.org への登録

• rake release で一撃。超簡単。

Page 14: DMLを実行するrubyスクリプトをmigrationファイルのように管理するRailsプラグインを作った

おわり