0

私はすべてをやった:

Gemfile:

gem 'rails_12factor', group: :production

config/environments/production.rb

config.serve_static_assets = true

config/application.rb

config.assets.precompile += %w( *.css *.js )

vendor/assets/ の下に js ファイルと css ファイルがあります。私がherokuにデプロイすると、すべてがうまく見えます:

Running: rake assets:precompile
Asset precompilation completed (310.44s)

application-5c84e59d83c00fd13fb659edc18db24a.js と application-cb9661f49811aa5c8d103e83ee8747b2.css を見ると、それらは空です

私は何を間違っていますか?

読みました:

Heroku は Rails 4 のアセット パイプラインでファイルをコンパイルしません

いくつかの修正を試みました: Heroku/Rails 4 Assets Precompile Error

4

3 に答える 3

1

根本的な原因の問題を見つけたと思います。上記で投稿した回避策とは別のものであるため、新しい回答として投稿することにしました。

空の新しい 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

これを変更すると、すべてが期待どおりに機能しました。

于 2013-09-01T20:11:49.270 に答える
0

以下を application.rb に明示的に追加することで、これを解決できます。

# config/application.rb

config.assets.paths << Rails.root.join('vendor', 'assets')

Rails は必要なものを正確に認識しているようですが、Heroku はアセット フォルダーをアセット パスの一部として含めるように注意する必要があります。

于 2014-11-11T00:47:37.990 に答える
0

これは「本当の」解決策ではありませんが、Heroku は実行時にアセットをコンパイルします。このガイドを参照してください。

もちろん、本番環境ではデフォルトで、ビューはヘルパー (たとえば、image_tag() や styleheet_link_tag()、または SASS 内の asset_path() など) によって生成されたすべての asset_path を、通常は適切なプリコンパイル済みファイルを取得するダイジェストでレンダリングします。

しかし、これは壊れているので、これをオフにして、Rails が実行時にアセットをコンパイルできるようにすることができます。これは明らかにパフォーマンスが大幅に低下しますが、サイトをすぐに機能させることが唯一の目標である場合は、これで機能するはずです。

production.rb

  config.assets.digest = false

次に、スタイルシートのリンクが /assets/application.css のようなものに解決され、機能するはずです (私のアプリでは機能しました)。しかし、繰り返しますが、これは本当の解決策ではなく、回避策です。実際の根本原因について何らかの牽引力がある場合は、お知らせください。

于 2013-09-01T19:35:54.697 に答える