【问题标题】:Asset Precompile on the development machine before capistrano deployment在 capistrano 部署之前在开发机器上进行资产预编译
【发布时间】:2011-11-24 14:06:42
【问题描述】:

我希望在 capistrano 打包(tar 压缩)代码之前,在我的开发机器上进行资产预编译,并且预编译资产已经包含在最终部署包中。

当我尝试内置的 capistrano 食谱时 load 'deploy/assets' 它运行 rake RAILS_GROUPS=assets assets:precompile 在服务器上。

我正在寻找这个的原因是因为目前预编译在我的 EC2 微实例上花费的时间太长(而且有时只是挂起), 如果可以在部署开始之前完成资​​产编译,那就太好了,这样我就可以将服务器从繁重的工作负载中解救出来 - 直到至少我有更好的配置服务器可用。

【问题讨论】:

    标签: ruby-on-rails-3.1 capistrano asset-pipeline


    【解决方案1】:

    目前的工作流程仍然有些坎坷,但使用Guard-Rails-Assets 可能会取得一些成功。它有点慢,尤其是在您进行大量资产更改时,但它会在资产发生更改时编译它们,您只需将它们签入您的存储库以便稍后部署。

    【讨论】:

    • 这听起来是一个合理的方法:)
    【解决方案2】:

    我刚刚在 Rails 中编写了一个 gem 来解决这个问题,名为 turbo-sprockets-rails3。它通过仅重新编译更改的文件并且仅编译一次以生成所有资产来加速您的assets:precompile。 Capistrano 开箱即用,因为您的资产目录在版本之间共享。

    如果您能帮我测试一下turbo-sprockets-rails3 gem,那就太好了,如果您有任何问题,请告诉我。

    【讨论】:

    • +1 Nathan,这确实是一件很棒的工作。肯定会将此添加到我的项目中并让您知道。然后可以考虑切换接受的答案:)
    • 内森,这对我不起作用。我不断收到“nil:NilClass 的未定义方法‘摘要’”,您希望我提供任何细节以便我们解决这个问题吗?我也会在 github 上提出问题
    • 嗨@thanikkal,感谢您的反馈!请将 gem 更新到最新版本,然后重试,我认为应该已修复。
    • 谢谢内森!那很快!真快!!!我能够在没有错误的情况下预编译资产。将在下一次部署期间进行验证。如果您仍然在这里只是想确认(可能是一个愚蠢的问题),这将处理引擎内部的资产以及 .erb 资产模板,对吗?
    • @nathan.f77 你的宝石太棒了。此外,感谢您为 Capistrano 部署资产的方式所做的更改。
    【解决方案3】:

    Capfileconfig/deploy.rb 中删除load 'deploy/assets',并将以下行添加到config/deploy.rb

    设置 :assets_role, [ :web, :app ] 设置:normalize_asset_timestamps,假 设置:assets_tar_path,“#{release_name}-assets.tar.gz” 在“部署:更新”之前做 run_locally “耙资产:预编译” run_locally "cd public; tar czf #{Dir.tmpdir}/#{assets_tar_path} 资产" 结尾 在 "deploy:finalize_update", :roles => assets_role, :except => { :no_release => true } 之前 上传“#{Dir.tmpdir}/#{assets_tar_path}”、“#{shared_pa​​th}/#{assets_tar_path}” 运行“cd #{shared_pa​​th};/bin/tar xzf #{assets_tar_path}” 运行“/bin/ln -s #{shared_pa​​th}/assets #{release_path}/public” 运行“/bin/rm #{shared_pa​​th}/#{assets_tar_path}” 结尾

    如果您使用turbo-sprockets-rails3,请将其添加到最后一个块:

    运行“cd #{release_path};#{rake} assets:clean_expired 2> /dev/null”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-05
      • 2013-11-04
      • 1970-01-01
      • 2015-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多