【问题标题】:Why do I have to deploy twice for changes in asset pipeline to be picked up?为什么我必须部署两次才能获取资产管道中的更改?
【发布时间】:2012-02-26 00:47:19
【问题描述】:

这是我的(经过审查的)配置/deploy.rb: https://gist.github.com/eedf6c976f632c1242cf

由于某种原因,对我的资产所做的任何更改,无论是 CoffeeScript 还是 SASS/SCSS 文件,都不会在我首次部署时出现在生产环境中。当我第二次部署时,资产更改生效。这很浪费时间,我不知道为什么会这样。有什么想法吗?

【问题讨论】:

  • 有点不相关,但看起来您将独角兽任务混合到部署命名空间中。当您应该进行重新加载时,您还将在每次部署时进行完整的独角兽停止和启动。运行部署时可以粘贴终端输出吗?
  • 这里(已审查):gist.github.com/cfb8312db767806fe7a4
  • “规范中的无效日期格式”也很烦人,但无关紧要。
  • 另一个有点不相关的评论,但您应该将set :normalize_asset_timestamps, false 添加到您的部署文件中,以摆脱公共目录上的触摸命令。 (“没有这样的文件或目录”消息)因此,当您进行部署时,是否实际编译了新的 js/css 文件,但您的应用程序引用了旧的?还是根本没有编译新的js/css文件?
  • 好的,我刚刚更改了我的样式表并运行了两次部署。每次我检查 shared/assets 目录的更改时。第一次,带有新 MD5 哈希的新样式表不存在。它也没有出现在manifest.yml 或呈现的页面中。然后我第二次部署,没有任何更改。这一次,shared/assets 目录中有一个带有新 MD5 哈希的新样式表,它同时出现在 manifest.yml 和呈现的页面中。

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


【解决方案1】:

我假设你的 Capfile 看起来像这样:

load 'deploy'
load 'deploy/assets'
load 'config/deploy'

只需交换deploy/assetsconfig/deploy 的位置。所以:

load 'deploy'
load 'config/deploy'
load 'deploy/assets'

【讨论】:

    【解决方案2】:

    好的,我想出了如何让它工作,但它并不干净。出于某种原因,deploy:assets:precompiledeploy:create_symlink 之前运行,而不是之后。结果是,在编译资产时,服务器上的current 目录尚未指向新代码,因此它们只是为之前的部署进行编译。这就是为什么除非我部署两次,否则我的资产不会更新。

    我通过添加以下内容应用了快速修复:

    before "deploy:assets:precompile", "deploy:create_symlink"

    这会在预编译之前触发创建符号链接,以便获取资产更改。结果是符号链接被创建了两次,因为现有的行为也在运行。它有效,但感觉很脏。

    我真的不知道为什么这是一个问题,我不明白为什么其他人似乎没有这个问题;我的deploy.rb 非常简洁,没有什么太花哨的事情。我唯一能想到的是load "deploy/assets" 不在文件中的正确位置。我只是假设它在顶部,我不知道它是否会影响执行顺序。

    任何建议作为解决此问题的正确方法将不胜感激!

    【讨论】:

      【解决方案3】:

      我在使用这个 gem 时遇到了同样的错误。

      require "bundler/capistrano"
      

      当我使用下面的 gem 时一切正常~~

      require 'capistrano/ext/multistage'
      

      注意:不要同时使用这两个 gem,否则您可能会遇到每个 gem 覆盖的部署步骤。

      根据我的经验,你应该部署,在你的控制台中查看过程和输出,检测出什么问题。

      也许你的 before... and after... 命令不起作用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多