«前の日記(2017-07-10) 最新 次の日記(2017-07-15)» 編集

いがいが日記


2017-07-11 [長年日記]

_ capistrano3でrollback時にソースを消さなくする対応

server_starterを利用して新旧unicornプロセスを継ぎ目なく切り替えているのだが、cap deploy:rollback時にうまく動作しないことがあることが分かった。rollback時にcapistranoが対象のソースを消してしまうので、旧unicornプロセスは存在するのだけどソースがない、という状態になって、白い画面になったりCSSなどassetsが取れなかったり。

そこでrollback時にはソースを削除しないようにしようと思ったのだけど、capistrano3でそのやり方が分からない。rakeタスクで登録するスタイルなので、Rubyのソースコードで上書きもできない。うーん、と思ってオプションで削除ON/OFFできる機能のPRを送ったけど、複雑性が増すからいれたくなさそうな空気。その代わりにタスクの削除の仕方を教えてくれた。あー、タスクの削除できたのか!

namespace :deploy do
  Rake::Task[:cleanup_rollback].clear_actions
  # capistrano内部で定義されてるrollback後のソース削除タスクをクリア
end

消す対象のタスクはこの辺
https://github.com/capistrano/capistrano/blob/master/lib/capistrano/tasks/deploy.rake#L170

参考ページ
http://capistranorb.com/documentation/advanced-features/overriding-capistrano-tasks/


«前の日記(2017-07-10) 最新 次の日記(2017-07-15)» 編集