Bes*_*sey 10 capistrano ruby-on-rails
我已经看到了在Rails中执行延迟资产预编译的各种复杂且通常无效的解决方案.作为一个后端开发人员,我并不特别想重新编译我从未在每次程序部署时触及的资产,但由于资产是Capfile通过加载load 'deploy/assets'而不是通过定义任务deploy.rb,我想不出有条件地禁用它的方法.
我所追求的行为是cap deploy用于常规的预编译部署,并cap deploy:no_assets用于跳过资产部署.
lul*_*ala 15
turbo-sporocket-rails和自动跳过脚本都有一些陷阱(我稍后会提到).所以我使用下面的hack,所以我可以传递一个参数来跳过我想要的资产预编译:
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)
Run Code Online (Sandbox Code Playgroud)
此脚本将更改内置资产预编译挂钩,因此将根据skip_assets参数挂钩.我可以调用cap deploy -S skip_assets=true跳过资产预编译作为一个整体.
对我来说,当没有任何改变时,turbo-sporocket-rails仍需要几分钟才能完成检查.当我需要尽快将修复程序推送到服务器时,这可能是至关重要的.因此我需要我的力量跳跃方法.
rails4通过预编译已更改的资产来解决此问题的新版sprockets.同时,对于您的rails3应用程序,我推荐使用turbo-sprockets-rails3 gem.
这种宝石开始了作为一个补丁集用于sprockets-rails由Nathan布罗德,这些都没有并入master因为这个问题是在rails4已经解决.来自README:
加速你的Rails 3 rake资产:只根据源文件的哈希值重新编译已更改的资产进行预编译
仅编译一次以生成指纹和非指纹资产
和:
turbo-sprockets-rails3应该可以与最新版本的Capistrano一起开箱即用.
我可以确认它适用于使用Capistrano部署的rails-3.2.x应用程序.
作为GitHubbers的旁注,原始的pull请求是如何将代码提交给开源项目的一个很好的例子,即使它没有被合并.
| 归档时间: |
|
| 查看次数: |
5727 次 |
| 最近记录: |