酒と泪とRubyとRailsと

Ruby on Rails と Objective-C は酒の肴です!

Capistrano-db-tasks 超簡単にlocal/remote間のDBを同期

Railsの開発中にリモートとローカルでDBの同期を取りたい時ってありませんか?そんな時に、capistranoのタスクを使ってlocal/remote間のDBやassetsを同期することができるgem『capistrano-db-tasks』の紹介です!


Gemのインストール

Gemfileに以下を追加して、コンソールでbundleを実行してください。

1
2
# local/remote間のDB同期
gem "capistrano-db-tasks", require: false

Capistrano側の設定

config/deploy.rbに設定を追加。

1
2
3
4
5
6
7
8
9
10
require 'capistrano-db-tasks'

# ダンプデータをロード完了後に削除するか?(デフォルトは削除しない)
set :db_local_clean, true

# ローカル環境の指定がある場合(ない場合はdevelopment)
set :locals_rails_env, "production"

# mysqldumpへのパスが遠ていない場合のみ、パスを追加
set :default_environment, {PATH: "/usr/local/bin/:$PATH"}

実行可能なcapistranoタスク

コマンドラインから実行可能なcapistranoタスクは次の通り。

1
2
3
4
5
6
7
8
app:local:sync      || app:pull     # remote => localのasset/DB同期
app:remote:sync     || app:push     # local => remoteのasset/DB同期

assets:local:sync   || assets:pull  # remote => localのasset同期
assets:remote:sync  || assets:push  # local => remoteのasset同期

db:local:sync       || db:pull      # remote => localのDB同期
db:remote:sync      || db:push      # local => remoteのDB同期

実行例はこちら。

cap db:pull
cap production db:pull # capistrano-extを使っている場合

コレは捗ります!

公式サイト

capistrano-db-tasksの公式Githubです。

capistrano-db-tasks

おすすめの書籍