developer tip

Rails 4 이미지가 Heroku에로드되지 않음

copycodes 2020. 11. 19. 21:41
반응형

Rails 4 이미지가 Heroku에로드되지 않음


나는 하루 중 더 좋은 시간을 내 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파일을 토글하려고 시도했지만 둘 다 작동하지 않습니다.

나는 또한

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

사전 컴파일은 항상 성공적입니다.

Rails 4. 다른 시도에 대한 아이디어가 있습니까?


이 작업을 수행하려면 여러 솔루션을 결합해야했습니다. 여기에 제가 한 작업이 있습니다.

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

자산을 로컬에서 미리 컴파일 할 필요가 없었습니다.


이를 해결하려면 두 가지를 수행해야합니다. 먼저 production.rb파일 에서이 두 줄을 false에서 true로 변경 합니다.

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

둘째, 이미지에 대해 이와 같은 구문이 있다면

    background: url("imgo.jpg") 

다음으로 변경

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

나는 그것이 당신의 일을하기를 바랍니다.


또 다른 문제는 heroku에로드하기 전에 자산을 로컬로 미리 컴파일하고 있다는 것입니다. 이를 위해서는 아래에서 찾을 수있는 여러 단계를 따라야합니다. 자산을 로컬로 사전 컴파일하는 경우 다음 단계를 수행해야합니다. 그렇지 않으면 자산 폴더에 대한 업데이트가 prod에 반영되지 않습니다.

https://devcenter.heroku.com/articles/rails-asset-pipeline

RAILS_ENV=production bundle exec rake assets:precompile

commit그리고 push서버에.


비슷한 문제가 있었는데 custom.css.scss에서 다음 줄을 사용하여 해결했습니다.이게 당신에게 맞는지 알려주세요.

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

ERB 또는 Sass를 사용하는지 여부에 따라 다른 방식으로 수행되는 자산 참조는 Ruby on Rails 가이드를 참조하십시오 .


아직 언급 할만한 평판은 없지만 Heroku 실험실 기능이 제거되었으므로 이제 "해당 기능 없음 : user-env-compile"오류가 표시됩니다.

더보기 : https://github.com/Crowdtilt/CrowdtiltOpen/issues/251


Rails ( '4.1.5') Heroku에는 표시되지 않지만 로컬에 표시되는 비슷한 이미지 문제가있었습니다. 나는 종이 클립이나 carrierwave gem을 사용하지 않고, 로컬에서 미리 컴파일 하고 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

앱 / 자산에서 공개 / 자산으로 이미지를 복사했습니다. 그때:

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

git commit
git push

And it was running fine on Heroku.


I had a similar problem with showing just images. Being new to rails I did not know I could use:

<%= image_tag("fileName.png", alt: "File Name Fancy", size: "100x100")%>

Instead of traditional html.

The image_tag is explained in the rails api but I find its use is better explained here: http://apidock.com/rails/ActionView/Helpers/AssetTagHelper/image_tag

All I added to my app was this gem: gem 'rails_12factor', group: :production

As described in the heroku asset-pipeline documentation. https://devcenter.heroku.com/articles/rails-4-asset-pipeline


I tried many solutions too but i found an invaluable solution and explanation 1. Heroku looks for assets in the public folder and that means you have to pre-compile your assets but if you were like me someone looking for a way to precompile my assets when my development environment is set to gem sqlite and production set to pg then you would do this.

in your production.rb

config.serve_static_assets = true

if you do not have gem pg installed you need to comment it out and change your production environment to use gem sqlite and run this

RAILS_ENV=production bundle exec rake assets:precompile

when all assets have been precompiled, switch back to your default settings and git add .,commit, and push to heroku


The images won't be served as assets by default, only css and js. You should look into the answer of

Syed Ehtsham Abbas in this question Heroku does NOT compile files under assets pipelines in Rails 4

참고URL : https://stackoverflow.com/questions/18324063/rails-4-images-not-loading-on-heroku

반응형