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 改了也是會重編譯。