1日の大半は、Herokuアプリで画像を読み込むために費やしました。私が試みるすべてはローカルで動作しますが、herokuにデプロイされた後は動作しません。
Pngファイルをアセットの下の画像フォルダーに保存しています。次のようなCSSの構文でこれらの画像を参照しています。
#signin {
background: url(<%= asset_path 'sf.png' %>);
background-size: 100%;
}
Herokuで背景を調べると、assets/sf.pngリンクがありますが、クリックすると壊れた画像が表示され、正しく読み込まれなかったことが示されます。
config.serve_static_assets = false
ファイル内のproduction.rb
をtrueとfalseの間で切り替えてみましたが、どちらも機能しません。
私も持っています
group :production do
gem 'pg'
gem 'Rails_12factor'
end
プリコンパイルは常に成功します。
Rails 4.他に何を試してみるべきか?
別の問題として、これを抱えていたのは、アセットをherokuに読み込む前にローカルでプリコンパイルしていたことです。これには、以下にある別の一連の手順に従う必要があります。アセットをローカルでプリコンパイルする場合は、次の手順に従う必要があります。そうしないと、アセットフォルダーに加えた更新がprodに反映されません。
https://devcenter.heroku.com/articles/Rails-asset-pipeline
Rails_ENV=production bundle exec rake assets:precompile
commit
およびPush
からサーバーへ。
この機能を実現するには、いくつかのソリューションを組み合わせる必要がありました。これが私がしたことです。
宝石ファイル
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
アセットをローカルでプリコンパイルする必要はありませんでした。
解決するには2つのことを行う必要があります。最初に、production.rb
ファイルでこれらの2行をfalseからtrueに変更します。
config.assets.compile = true
config.assets.digest = true
次に、画像に対してこのような構文を使用している場合
background: url("imgo.jpg")
に変更する
background: image-url("image.jpg")
私はそれがあなたの仕事をすることを願っています。
同様の問題がありましたが、custom.css.scssの次の行で解決しました。これがうまくいくかどうか教えてください。
background: image-url('sf.png')
ERBまたはSassを使用しているかどうかに応じて、さまざまな方法で行われているアセットを参照します Ruby on Rails Guide .
コメントする評判はありませんが(まだ)、Heroku labs機能が削除されていることに注意することが重要です。そのため、「No such feature:user-env-compile」エラーが表示されます。
Rails( '4.1.5')Herokuでは表示されないが、ローカルで表示される画像について同様の問題がありました。 Paperclipまたはcarrierwave gemを使用していません。locallyをプリコンパイルし、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で問題なく動作していました。
私も多くのソリューションを試しましたが、非常に貴重なソリューションと説明を見つけました。Herokuはパブリックフォルダー内のアセットを探します。つまり、アセットをプリコンパイルする必要があります。私の開発環境はgem sqliteに設定され、productionはpgに設定されているので、これを実行します。
production.rbで
config.serve_static_assets = true
gem pgがインストールされていない場合は、コメントアウトし、gem sqliteを使用するように運用環境を変更して実行する必要があります。
Rails_ENV=production bundle exec rake assets:precompile
すべてのアセットがプリコンパイルされたら、デフォルト設定に戻り、git add。、commit、Push to heroku
画像だけを表示するのと同様の問題がありました。 Railsが初めての場合、使用できるかどうかわかりませんでした:
<%= image_tag("fileName.png", alt: "File Name Fancy", size: "100x100")%>
従来のhtmlの代わりに。
Image_tagについては、Rails apiで説明していますが、その使用方法についてはこちらをご覧ください。 http://apidock.com/Rails/ActionView/Helpers/AssetTagHelper/image_tag =
アプリに追加したのは、次のgemのみでした:gem 'Rails_12factor', group: :production
Heroku asset-pipelineドキュメントで説明されているとおり。 https://devcenter.heroku.com/articles/Rails-4-asset-pipeline