【问题标题】:Heroku doesnt precompile assets for rails4Heroku 不会为 rails4 预编译资产
【发布时间】:2014-01-04 18:00:15
【问题描述】:

这里的文档说 Heroku 在 Rails4 中部署期间具有预编译资产。

然而, 我没有看到预编译资产消息。

     Using thin (1.6.1)
       Using twitter-bootstrap-rails (2.2.8)
       Using uglifier (2.3.1)
       Using will_paginate (3.0.4)
       Your bundle is complete! It was installed into ./vendor/bundle
       Bundle completed (1.37s)
       Cleaning up the bundler cache.
-----> Writing config/database.yml to read from DATABASE_URL
       Detected manifest file, assuming assets were compiled locally
-----> Discovering process types
       Procfile declares types -> (none)
       Default types for Ruby  -> console, rake, web, worker

我在我的应用程序中遇到了引导程序问题,导航栏无法正确加载+其他一些细微差别,我认为这是资产预编译问题。

我正在使用 Rails4、Ruby2.0

我在 application.rb 中启用了资产

config.assets.enabled = true

手动预编译没有帮助

heroku run rake assets:precompile

【问题讨论】:

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


    【解决方案1】:

    删除 public/assets 文件夹有帮助。我还运行了 heroku run rake assets:clean。

    After that I could see:
    ----> Writing config/database.yml to read from DATABASE_URL
    -----> Preparing app for Rails asset pipeline
           Running: rake assets:precompile
    

    导航栏现在可以正常加载了!

    【讨论】:

      【解决方案2】:

      我在资产管道上苦苦挣扎了一段时间。对于资产管道在新 Rubyists 中的工作方式似乎有些混乱。根据我的经验,这是我在 Heroku 资产管道中的工作流程。

      • 确保资产在本地主机上工作(Heroku 需要)
      • 使用rm -rf ./public/assets 删除 Rails 目录中的 public/assets 文件夹
      • 使用mkdir public/assets 创建一个新的资产目录
      • 运行rake assets:precompile 命令
      • 您应该会在命令行中看到正在预编译的资产列表
      • 一旦资产被预编译,您应该通过以下命令提交更改:git add -A 然后git commit -am "commit message goes here"
      • 最后,通过git push heroku master推送到heroku

      注意:这值得重复——在推送到 Heroku 之前,确保您的资产在 localhost 上正常工作。

      【讨论】:

        【解决方案3】:

        遇到了同样的问题。我出于某种原因在本地预编译,然后推送到 Heroku。

        看到 Heroku 给出“检测到的清单文件,假设资产是在本地编译的”这一行,这让我意识到它并没有预编译所有的东西。

        当我执行“git add”时。并承诺,我看到它正在添加一堆公共文件。把它推给 Heroku 让它工作。所以我每次都必须预编译和 git add ,基本上是为它做 Heroku 的工作,并在我的公共文件夹中弄得一团糟。它完成了工作,但修复效果不佳。

        我查找了 heroku 提到的“清单”,最终在公共目录中找到了一个“.sprockets-manifest...”文件。

        删除了那个,Heroku 再次成为我的朋友。

        发现这个问题是我研究的一部分,所以我想我会分享我的发现,以防其他人看到这个,或者有任何详细的想法。

        现在我必须去看看 .sprockets-manifest 是否对其他任何事情都很重要......

        【讨论】:

        • 在这里救了我的命。没有意识到这甚至被推到了回购。谢谢!
        【解决方案4】:

        如果公共资产中有.sprockets-manifest-*.jsonmanifest-*.json,则会显示消息Detected manifest file, assuming assets were compiled locally。因此,删除单个文件或整个 public/assets 都可以。

        buildpack 的源代码是here

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-08-28
          • 1970-01-01
          • 1970-01-01
          • 2023-04-09
          • 2012-06-26
          • 2012-11-29
          • 1970-01-01
          相关资源
          最近更新 更多