【问题标题】:stylesheet_link_tag(:all) generates reference to `all.css` on Herokustylesheet_link_tag(:all) 在 Heroku 上生成对 `all.css` 的引用
【发布时间】:2011-03-30 15:00:42
【问题描述】:

我的布局中有stylesheet_link_tag(:all)

它在本地机器上的行为与预期一样,即使我在生产环境中运行它 (rails s -e production)。

按照预期,我的意思是它会发出所有指向现有样式表的链接,而不会将它们连接到 all.css 中,并且它不会发出指向 all.css 的链接。

但是当我将它部署到 Heroku 时,结果是一样的,并且在开头加上了一个指向 all.css 的链接。这是我不想要也不期望的,尤其是当本地机器上的生产环境不发出它时。

所以问题是如何在不手动指定所有文件的情况下摆脱 Heroku 上的 all.css 链接?

谢谢。

【问题讨论】:

  • 你没有使用:cache => true
  • 这就是问题所在,我没有。仅限stylesheet_link_tag(:all)
  • 会不会是您在服务器上有一个名为 all.css 的文件并且它会自动链接到该文件?
  • @Dmytrii Nagirniak heroku 不允许您上传或从代码创建文件。因为他们的系统将您的应用程序存储在不同服务器的云中,而且他们不允许您创建文件的成本太高。如果你执行 stylesheet_link_tag(:all) 它会即时生成一个 all.css 并且 heroku 不支持将该文件存储在他们的文件系统上,这就是你得到错误的原因。也许您可以尝试将 all.css 添加到 repo 并上传到 heroku。如果有什么不清楚的地方请告诉我。
  • all.css 仅使用 :cach=>true 生成。我没有设置。

标签: ruby-on-rails ruby heroku stylesheet


【解决方案1】:

Heroku 正在对资产文件进行一些特殊处理,例如: http://devcenter.heroku.com/articles/rails3Why does a rails app on heroku serve assets via all.css and locally via individual files 尤其是关于 :cache => true 现在工作和 File.open 操作不工作的最终评论。

他们并不认为您的用例是最常见的,因此在他们的处理过程中可能存在一些错误。我会尝试明确设置:cache => false:config => false

【讨论】:

  • 我尝试设置:cache => false,但没有任何效果。我已经在我的问题的 cmets 中说过。您提供的链接并没有真正解释任何事情,他们没有解释为什么all.css 与所有其他文件(而不是单个文件)一起生成。在您的回答中看不到任何可以帮助我解决问题的内容:(
  • 您在评论中说您没有设置:cache => true,这与明确设置:cache => false 不同。我提供的链接解释了为什么 File.exists? 'public/stylesheets/all.css' 可能返回 false,即使 Heroku 代码中的错误错误地假设它存在于某些代码路径中。
  • Ray,我尝试明确设置:cache => false。一样。我也看不到你的链接在哪里用File.exists?解释了这种情况,你能指点我吗?
  • this page August Lilleaas 2010 年 1 月 22 日 21:07 说使用 :cache => true 会生成 all.css,但 File.open operations 被阻止。
  • 我的意思是,您在 3 月 31 日 5:00 对 File.exists 'public/stylesheets/all.css' 的评论返回 false 并不意味着 Heroku 没有不尊重您的 :cache => false 并创建了一些虚拟版本的 @ 987654342@.
猜你喜欢
  • 1970-01-01
  • 2013-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-14
  • 2020-11-13
  • 1970-01-01
  • 2011-02-21
相关资源
最近更新 更多