65

私は、heroku アプリに画像をロードするために 1 日の大半を費やしました。私が試したことはすべてローカルで機能しますが、heroku にデプロイされた後では機能しません。

アセットの下の images フォルダーに png ファイルが保存されています。これらの画像を css の次のような構文で参照しています。

#signin {
  background: url(<%= asset_path 'sf.png' %>);
  background-size: 100%;
}

heroku で背景を調べると、assets/sf.png リンクがありますが、クリックすると壊れた画像が表示され、正しく読み込まれなかったことを示しています。

true と false の間 config.serve_static_assets = falseでファイルを切り替えようとしましたが、どちらも機能しません。production.rb

私も持っています

group :production do
  gem 'pg'
  gem 'rails_12factor'
end

プリコンパイルは常に成功します。

Rails 4. 他に試し​​てみるべきアイデアはありますか?

4

9 に答える 9

93

これを機能させるには、いくつかのソリューションを組み合わせる必要がありました。

Gemfile

gem 'rails_12factor', group: :production

Heroku コンソール

heroku labs:enable user-env-compile -a yourapp

production.rb

config.serve_static_assets = true
config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect'
config.assets.compile = true

アセットをローカルでプリコンパイルする必要はありませんでした。

于 2013-08-25T11:15:47.597 に答える
57

それを解決するには、2 つのことを行う必要があります。まず、ファイルでこれらの 2 行を false から true に変更しproduction.rbます。

      config.assets.compile = true
      config.assets.digest = true

第二に、画像にこのような構文がある場合

    background: url("imgo.jpg") 

に変更します

     background: image-url("image.jpg")

それがあなたの仕事をすることを願っています。

于 2015-02-03T11:09:48.787 に答える
13

同様の問題があり、custom.css.scss ..の次の行で解決しました。これがうまくいくかどうか教えてください。

background: image-url('sf.png')

ERB を使用しているか Sass を使用しているかに応じて、さまざまな方法でアセットを参照します。 Ruby on Rails ガイド を参照してください

于 2014-02-01T17:14:50.550 に答える
3

(まだ) コメントするほどの評判はありませんが、Heroku ラボ機能が削除されたことに注意することが重要です。そのため、「そのような機能はありません: user-env-compile」というエラーが表示されます。

詳細: https://github.com/Crowdtilt/CrowdtiltOpen/issues/251

于 2014-11-07T17:25:48.347 に答える
2

Rails ('4.1.5') Heroku では表示されず、ローカルでは表示されるという同様の問題がありました。私はペーパークリップやキャリアウェーブの宝石を使用していません。ローカルでプリコンパイルし、 RAILS_ENV=productionを使用して github にプッシュすると、Heroku に正常にデプロイされます。

私は次のことで問題を解決しました:

config.serve_static_assets = true
config.assets.compile = true
config.assets.js_compressor = :uglifier
config.assets.digest = true

// delete precompiled assets
bundle exec rake assets:clobber --trace
RAIL_ENV=production bundle exec rake assets:clobber --trace

app/assets から public/assets にイメージをコピーしました。それから:

// tests should pass
bundle exec rake assets:precompile --trace
RAILS_ENV=production bundle exec rake assets:precompile --trace

git commit
git push

そして、Herokuで問題なく動作していました。

于 2015-11-02T13:38:31.860 に答える
1

私も多くの解決策を試しましたが、非常に貴重な解決策と説明を見つけました私の開発環境はgem sqliteに設定され、本番環境はpgに設定されている場合、これを行います.

あなたの production.rb で

config.serve_static_assets = true

gem pg がインストールされていない場合は、コメントアウトし、運用環境を変更して gem sqlite を使用し、これを実行する必要があります。

RAILS_ENV=production bundle exec rake assets:precompile

すべてのアセットがプリコンパイルされたら、デフォルト設定に戻し、git add .,commit して heroku にプッシュします。

于 2016-05-09T22:03:04.447 に答える
-1

デフォルトでは、画像はアセットとして提供されず、css と js のみが提供されます。あなたはの答えを調べる必要があります

この質問の Syed Ehtsham Abbas Heroku は、Rails 4 のアセット パイプラインでファイルをコンパイルしません

于 2013-08-19T22:28:35.737 に答える