【问题标题】:Is it possible to skip the asset precompile step for a single git push on Heroku?是否可以跳过 Heroku 上的单个 git push 的资产预编译步骤?
【发布时间】:2012-07-22 00:35:03
【问题描述】:

每次我将 Rails 3.2 项目部署到 Heroku 时,rake assets:precompile 都会运行:

$ git push heroku master  
...
----> Preparing app for Rails asset pipeline
      Running: rake assets:precompile
      Asset precompilation completed (189.17s)
...

有时我想做一个我知道不会改变任何资产的推送,例如对控制器的快速修补程序。是否可以跳过 assets:precompile 步骤以将单个 git push 到 Heroku?

谢谢。

【问题讨论】:

    标签: ruby-on-rails heroku ruby-on-rails-3.2


    【解决方案1】:

    当然!您需要在your_app/pubilc/assets 目录中创建一个manifest.yml

    文件可以是空白的。但理想情况下,您在本地预编译所有内容,因此部署到 Heroku 会更快。

    确保您在推送到 Heroku 时也提交了 manifest.yml 文件。 git add -f your_app/pubilc/assets/manifest.ymlgit push heroku master 之类的就足够了。

    【讨论】:

    • 如果我大多数时候仍然希望资产在 Heroku 上编译,这个解决方案意味着我必须对 manifest.yml 文件进行一次签入,推送到 heroku,然后绝对确保删除该文件。对?有没有什么方法不涉及这个额外的步骤?
    • 如果您在部署到 Heroku 时仔细观察,会发现一行代码类似于 detected manifest.yml. Assuming assets compiled locally。所以本质上,清单文件是一个信号,告诉 Heroku 不要执行资产编译。我认为您始终可以在控制台上手动运行heroku run rake assets:precompile
    • 从控制台运行 heroku run rake assets:precompile不会为正在运行的 Heroku dyno 预编译资产。 Heroku 上运行的每个进程都运行在不同的虚拟环境中。
    • 嗨@BenjaminManns,这是 Heroku 必须说的:devcenter.heroku.com/articles/rails-asset-pipeline。特别是,“您可以通过两种方式在 Heroku 上使用资产管道。在本地编译资产。在 slug 编译期间编译资产。”
    • @BenjaminTan,对,但是运行 CLI 命令不会做任何事情,因为它不在 slug 编译期间,并且它没有添加到 git 索引中。
    【解决方案2】:

    这对我有用。 manifest.yml 在我的 rails 4 项目中对我没有任何帮助。

    https://gist.github.com/Geesu/d0b58488cfae51f361c6

    【讨论】:

    • 但这不会导致无法进行预编译吗?
    【解决方案3】:

    只需使用rake assets: precompile 在本地预编译,签入public/assets 中的结果资产,然后推送到heroku。

    这将自动在您的public/assets 目录中创建manifest-.yml 或json 文件;然后 heroku 将检测到并报告Detected manifest file, assuming assets were compiled locally

    注 1:有些人在development.rb 中有一行,这使得这些转到public/dev-assets instead;如果是这样,您需要将 dev-assets 重命名为 assets)

    注意 2:确保您的 .gitignore 文件不排除 public/assets 目录。

    【讨论】:

      【解决方案4】:

      在 rails 4 中,创建文件 manifest-<md5 hash>.json 而不是 manifest.yml

      【讨论】:

        猜你喜欢
        • 2016-04-18
        • 2015-08-12
        • 2014-01-09
        • 1970-01-01
        • 2012-06-26
        • 2014-09-05
        • 1970-01-01
        • 2015-08-28
        • 1970-01-01
        相关资源
        最近更新 更多