【问题标题】:Rails 4: how to compile only changed assets?Rails 4:如何仅编译更改的资产?
【发布时间】:2013-10-12 17:05:51
【问题描述】:

对于 Rails 3,this questionturbo-sprockets-rails3 看起来很棒。

对于 Rails 4,似乎有 some controversy 来决定是否已修复此问题。

我目前在生产中使用 Rails 4,似乎因为 Capistrano deploy:assets:update_asset_mtimes 触及 所有 资产,deploy:assets:precompile 同样重新编译所有资产。重新编译是我 cap deploy 中最长的一步。

理想情况下,这应该被一些基于校验和的清单系统所取代,这样只有那些实际发生变化(或依赖于已更改的资产)的资产才会被重新编译。

最好的方法是什么? (假设我们仍然在服务器上做,而不是在开发机器上。)

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 asset-pipeline


    【解决方案1】:

    这家伙很适合 Capistrano 3。对我来说效果很好。 https://coderwall.com/p/aridag

    【讨论】:

    【解决方案2】:

    此问题已在https://github.com/capistrano/capistrano/issues/478 中讨论过 似乎没问题的解决方案就是禁用触摸。在上面的问题中,讨论了一个用于此的配置变量,但我找不到任何对其的代码引用。相反,我们现在只是简单地覆盖任务。

    namespace :deploy do
      namespace :assets do
        task :update_asset_mtimes, :roles => lambda { assets_role }, :except => { :no_release => true } do
        end
      end
    end
    

    注意:这仅适用于 capistrano 版本 2。我不知道版本 3 是否仍然使用相同的任务。

    【讨论】:

      【解决方案3】:

      这里是 codeclimate 的人写的一篇很棒的博客文章。我已经看过它,但没有完成生产中的步骤。

      http://blog.codeclimate.com/blog/2013/10/02/high-speed-rails-deploys-with-git/

      【讨论】:

      • 这似乎是一个相当彻底的变化(远远超出了我所说的数量)。不过绝对有趣。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-27
      • 1970-01-01
      相关资源
      最近更新 更多