肉とビールとパンケーキ by @sotarok

少し大人になった「肉とご飯と甘いもの」

Capistrano + rsync で省エネデプロイ




Capistrano 
FTPUP使Capistrano  vcs  update 使 scp rsync capistrano_rsync_with_remote_cache () 使 *1



luisparravicini/capistrano_rsync_with_remote_cache · GitHub






インストール

gem で適当にインストール。

$ gem install capistrano_rsync_with_remote_cache

今だと2.4.0ってやつが入りました。

使い方


deploy_via scm  local cache deploy_via deploy  strategy 
set :scm, :git
set :deploy_via, :rsync_with_remote_cache
set :git_enable_submodules, true
set :repository, "."
set :copy_exclude, %w(
    .git
    Capfile
    config/hogeohge.ini
    cache
    app/logs
)
set :rsync_options, '-az --delete --delete-excluded --exclude=.git --exclude=' + copy_exclude.join(' --exclude=')

 :copy_exclude  Capistrano  :rsync_options 
 rsync remoterelease_path使


 deploy strategy  :remote_cache  deploy -> remote  scm remote1release_path使


仕組み






repository "."  git deploydeploy .rsync_cache  clone pull shared  cached-copy local  .rsync_cache  remote  cached-copy  rsync  cached-copy  release_path cp( rsync ) symlink 


結論




 Ruby OK Ruby  *2

*1:Gitとかだと pull とか圧縮してやってるからそこまでコストも高くないのかな?

*2:そしてなんというか、Ruby系ツールはほんとDSLだから、Rubyがわかってればそれが使えるというよりは割とそのツール特有の文法を学ばなきゃいけない所が面倒なところではあるといえばあるのだけど、でもまぁそうはいっても結局最終的にはRubyなのだ