今開発しているrailsアプリでyaml_dbというgemを導入しています。 rake db:data:dump とやると、DBの中身をyaml形式で吐き出す、というタスクが使えるようになります。 吐き出したものをimportすることもできるので、DBのバックアップに便利かなと。

ただ、やっぱり使っていると多少こういう使い方をしたい!というのが出てきまして、 それがバージョニングとファイル共有の仕方。

rakeタスクなので、cronに登録して日次で実行しているのですが、そのファイルを日毎に保存しておきたい、 また、吐き出されたyamlを各自のローカルでimportできるようにしたいなぁと。

じゃあということで、お手軽に、data:dump後に吐かれたyamlをS3に日付付けて置いておけばといあえず要求満たせるかなぁってことで作ってみました。

使い方は、

gem install rails_dump2_s3

でインストールして、

export AWS_ACCESS_KEY={Your aws acccess key}
export AWS_SECRET_ACCESS_KEY={Your aws secret acccess key}

rake rails_dump2_s3:dump

を実行すればOKです。

ソースコードはこちら。

https://github.com/jacoyutorius/rails_dump2_s3

とは言っても、yamlにexportする部分はyaml_dbのメソッドをそのまま使わせてもらっているので、僕が書いたのはS3に保存する部分だけです。

yaml_dbには、db:data:dump_dirという別のタスクもあって、こっちはdb/以下に日付ディレクトリを作成してその中にモデル毎にyamlを出力するってやつなんですが、 後々はこっちにも対応したタスクを追加したいなぁと思っています。