Capistrano deploy 時手動跳過 asset precompile
Rails deploy 時的 asset precompile 十分耗時,所以已經有許多方法來縮短這個時間。不過因為我有時候需要能夠強制跳過的功能,所以就寫了以下的方法:
#deploy.rb 中插入
callback = callbacks[:after].find{|c| c.source == "deploy:assets:precompile" }
callbacks[:after].delete(callback)
after 'deploy:update_code', 'deploy:assets:precompile' unless fetch(:skip_assets, false)
需要強制跳過時,下cap deploy -S skip_assets=true
即可。
題外話,目前的兩種縮短方式中:
turbo-sporocket-rails 雖然縮短了時間,但是還是有個底限。在沒有改變的時候,編譯還是得花個1分鐘。
使用 https://gist.github.com/xdite/3072362 時改了 route.rb 就會重編譯。手動指定要編譯的東西時得自己把 application.rb 加入判斷,然後 application.rb 改了也是會重編譯。