5

最初に、Heroku で動作するようにかなりの数のグーグル検索を行いましたが、スラッグ コンパイル中に heroku にアセットをプリコンパイルさせたか、自分でプリコンパイルして送信したかに関係なく、いずれにしても、私の 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 = trueproduction.rb ファイルにあります。
  • 私はgem 'rails_12factor', group: :production自分のGemfileに持っています
  • 私はこれをしました: heroku labs:enable user-env-compile --app=YOUR_APP. これを実行する前は、手順 1 と 2 にもかかわらず、assets:precompile は実行されませんでした。常に、運用データベースを初期化しようとしていました。

私のグーグル検索のほとんどすべては、上記のことを行うように指示していますが、ここではまだ空の 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 に答える