【问题标题】:Better Rails 3 Asset Handling for `cap deploy``cap deploy` 的更好的 Rails 3 资产处理
【发布时间】:2012-08-02 23:34:48
【问题描述】:

我注意到默认的“部署”任务会在远程机器上进行资产预编译,这会产生以下不良影响:

  • 在预编译期间出现奇怪的故障资产(在实时站点上)
  • 配置错误导致停机,响应代码为 500
  • 需要很长时间的任务

我已经看到了这一点,它通过在您没有任何要预编译的内容时不让您进行预编译来稍微缓解问题:Speed up assets:precompile with Rails 3.1/3.2 Capistrano deployment

但必须有更好的解决方案。

有没有人试过这些:

  1. 总是部署到“暂存”位置,在那里您可以测试所有内容,然后添加某种cap enliven 任务以某种方式告诉 Web 服务器前端开始使用其他端口? (我可以通过编辑 nginx upstream 并重新启动它来手动管理它,然后我可以通过在 nginx.conf 中的包含和上限任务将其绑定在一起来自动化一点。)
  2. 在本地预编译,然后通过 rsync 将文件推送过来。我更喜欢 #1,但这将是一个较小的步骤,可能会比当前行为更好的默认设置。

我是否遗漏了一些明显的东西?我是 Rails 资产 + Capistrano 部署的新手,但似乎没有开箱即用的最佳部署实践。

【问题讨论】:

    标签: ruby-on-rails capistrano assets sprockets precompile


    【解决方案1】:

    你可以:

    • 部署前预编译资产
    • 在后台编译它的服务器端
    • 留给delayed_job 或其他队列管理系统

    【讨论】:

    • 嗨亚历山大!如果你预编译,你如何将它集成到 Capistrano deploy 以便它不在服务器上预编译?
    • 我不确定,但是如果可以在服务器上使用本地预编译的资产,您可以对其进行预编译,然后使用 Capistrano 上传方法上传到服务器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-10
    • 2013-03-15
    • 1970-01-01
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多