5

首先,我做了很多谷歌搜索,甚至让事情在 Heroku 上运行,但似乎不管我是让 heroku 在 slug 编译期间预编译我的资产,还是我自己预编译并提交它们,无论哪种方式,我的 Rails 4 应用程序的 application.css 始终为空:

$ curl -i http://www.boxscoregeeks.com/assets/application-c712146df692b0fca6c21c0bf1dddcd5.css
HTTP/1.1 200 OK
Content-Type: text/css
Date: Sun, 01 Sep 2013 00:50:10 GMT
Last-Modified: Sun, 01 Sep 2013 00:46:54 GMT
Status: 200 OK
X-Sendfile: /app/public/assets/application-c712146df692b0fca6c21c0bf1dddcd5.css
Content-Length: 0
Connection: keep-alive

为了验证,在本地没问题:

$ curl -I http://localhost:3001/assets/application-c712146df692b0fca6c21c0bf1dddcd5.css
HTTP/1.1 200 OK
Last-Modified: Sat, 31 Aug 2013 03:46:55 GMT
Content-Type: text/css
Content-Length: 106237
Connection: keep-alive
Server: thin 1.5.1 codename Straight Razor

我的清单:

  • config.serve_static_assets = true的 production.rb 文件中有。
  • gem 'rails_12factor', group: :production的 Gemfile 中有
  • 我这样做了:heroku labs:enable user-env-compile --app=YOUR_APP。在我运行之前,assets:precompile 不会运行,尽管有步骤 1 和 2。它总是会尝试初始化生产数据库。

几乎我所有的谷歌搜索都告诉我在上面做这些事情,但在这里我仍然有一个空的 applicaiton.css 文件。任何帮助都会很棒。

谢谢!

4

1 回答 1

6

我找到了自己对这个问题的答案。

有问题的应用程序是我从 rails 3 升级的。所以我构建并部署了一个空的新 rails 4 应用程序(这有效)。通过比较production.rb文件,我注意到非工作应用程序中有这样一行:

# Specifies the header that your server uses for sending files
# (comment out if your front-end server doesn't support this)
config.action_dispatch.x_sendfile_header = "X-Sendfile" # Use 'X-Accel-Redirect' for nginx

此配置行在新的 rails 4 应用程序中被注释掉。Heroku 文档建议这样做:

config.action_dispatch.x_sendfile_header = nil # For Heroku

当我改变它时,一切都按预期工作。当应用程序在 Rails 3 中的 Cedar 上运行时,这似乎无关紧要。

于 2013-09-01T20:17:30.233 回答