【问题标题】:Heroku is not pre-compiling my assets to prepare my app for asset pipelineHeroku 没有预编译我的资产来为我的应用程序准备资产管道
【发布时间】:2011-12-10 08:51:52
【问题描述】:

我在使用 Rails 3.1.1 让我的资产管道设置与 Heroku/Cedar 一起工作时遇到了一些麻烦

我已推送我的应用程序并成功启动,但没有显示“正在准备资产管道”的消息,并且没有提供静态资产。找不到任何 JS、CSS 或图像,因为没有进行 slug 编译时间或运行时资产编译。

任何帮助将不胜感激。

他们在link 描述了部署期间应该发生的事情,我将在下面总结:

使用 Heroku Cedar 上的 Rails 3.1 应用程序,当您 git push heroku 时,您的所有资产都将通过使用 rake task bundle exec rake assets:precompile 作为部署过程的一部分进行预编译。

【问题讨论】:

  • 只是一个小问题——如果你已经在本地预编译了你的资产,提交到 git 并推送到 Heroku,并且清单文件存在于 public/assets 中,那么 Heroku 将不会尝试预编译你的资产。
  • 没错,但这不是我要寻找的预编译选项。该解决方案专门用于希望在 slug 编译时编译资产。

标签: mongodb ruby-on-rails-3.1 heroku mongoid asset-pipeline


【解决方案1】:

好的,所以解决方案是这样的:

我正在使用 mongoid,您可以在配置中删除“rails/all”行。结果没有加载链轮。

您还需要在 rails 3.1+ 中添加 require "sprockets/railtie" 在 application.rb 中,以便启用 sprockets。繁荣,工作。

此信息可以在 mongoid 网站here 上找到。对于可能没有在 application.rb 中加载完整“rails/all”的任何人来说,了解这一点很有用,资产管道显然需要链轮才能工作。

【讨论】:

  • 很高兴知道 - 你会认为这会显示在生产模式下本地运行应用程序。
  • 你是对的!在做任何事情之前请仔细阅读文档乔瓦尼。感谢您的提示。
  • 哇,在寻找了几个小时的问题后,我终于偶然发现了这个。你是救世主。
  • 在标签中添加了 mongoid + mongodb 以便更容易找到,干杯。
  • 天哪。谢谢!我感觉自己像个白痴。我一遍又一遍地阅读该文档,但仍然拥有。呃。
【解决方案2】:

您是否在 Heroku 上看到过有关 Rails 3.1 资产管道的这篇文章 - http://devcenter.heroku.com/articles/rails31_heroku_cedar。我昨天查看了它并从中获得了一些很好的提示,并且我已经在 Heroku 上运行 Rails 3.1 站点已经有一段时间了。

这是一个新的 Rails 3.1 站点还是升级到 Rails 3.1 的站点,需要检查的是资产管道是否已启用生产 - 默认情况下 Rails 3.1 使用

config.assets.enabled = false

在 application.rb 中。您是否将应用程序/资产用于您的资产而不是公开/

【讨论】:

  • 您好,感谢您回答我的问题。我认为我没有接触过该文件,正在用信息更新问题。
  • 澄清一下,这是 rails 3.1.1,管道在本地运行良好,但在部署到 Heroku 时无法编译。
  • 我刚刚创建了一个新应用来验证该设置是否存在。
  • 您是否尝试在本地生产环境中运行它,看看是否能获得更多洞察力?
  • 是的,一切正常,但只是 heroku 没有触发必要的部署阶段。我还看到资产 rake 任务似乎没有执行 heroku run rake -T 但它们在本地执行,非常奇怪。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-19
  • 1970-01-01
  • 2013-05-08
  • 1970-01-01
  • 2013-01-20
  • 1970-01-01
相关资源
最近更新 更多