Rails 4 imagens não carregando no heroku

Passei a maior parte do dia tentando obter imagens para carregar no meu aplicativo heroku. Tudo que eu tento funciona localmente, mas não depois de ser implantado no heroku.

Eu tenho arquivos png salvos na pasta de imagens sob meus ativos. Eu estou referenciando essas imagens com syntax no meu css como;

#signin { background: url(); background-size: 100%; } 

No heroku quando eu inspeciono o background, o link assets / sf.png está lá, mas quando você clica nele, mostra uma imagem quebrada, sugerindo que ele não foi carregado corretamente.

Eu tentei alternar config.serve_static_assets = false no arquivo production.rb entre true e false e nenhum dos dois funciona.

eu também tenho

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

A pré-compilation é sempre bem-sucedida.

Rails 4. Alguma idéia sobre o que mais tentar?

Eu precisava combinar várias soluções para fazer este trabalho, aqui está o que eu fiz:

Gemfile

 gem 'rails_12factor', group: :production 

no meu console Heroku

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

produção.rb

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

Não precisei pré-compilar os resources localmente.

Você precisa fazer duas coisas para resolvê-lo. Primeiro, altere essas duas linhas de false para true no arquivo production.rb .

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

Segundo, se você tiver uma syntax como essa para suas imagens

  background: url("imgo.jpg") 

Mude para

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

Espero que faça o seu trabalho.

Outro problema, eu estava tendo com isso é que eu estava pré-compilando meus ativos localmente, antes de carregá-lo para heroku. Isso requer que você siga um conjunto diferente de etapas, que pode ser encontrado abaixo. Se você pré-compilar seus resources localmente, deverá seguir estas etapas ou quaisquer atualizações feitas em sua pasta de resources não serão refletidas em prod.

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

RAILS_ENV=production bundle exec rake assets:precompile

commit e push to server.

Eu tive um problema semelhante e resolvi com a seguinte linha no custom.css.scss .. Diga-me se isso funciona para você.

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

Referenciando o ativo sendo feito de maneiras diferentes, dependendo se você estiver usando o ERB ou o Sass, consulte o Ruby on Rails Guide .

Eu não tenho a reputação de comentar (ainda), mas é importante notar que o recurso de laboratórios Heroku foi removido, então agora você receberá um erro “Nenhum recurso: user-env-compile”

Mais: https://github.com/Crowdtilt/CrowdtiltOpen/issues/251

Rails (‘4.1.5’) Eu tive um problema semelhante de imagens não aparecendo no Heroku, mas aparecendo localmente. Eu não estou usando paperclip ou gems carrierwave, eu pré-compilar localmente e também usando RAILS_ENV = produção eu empurro para o github e implanta bem para Heroku.

Eu resolvi o problema tendo:

 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 

copiou imagens para o público / ativos de aplicativos / ativos. então:

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

E estava correndo bem em Heroku.

Eu tive um problema semelhante ao mostrar apenas imagens. Sendo novo nos rails, eu não sabia que poderia usar:

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

Em vez de html tradicional.

O image_tag é explicado na API rails, mas acho que seu uso é melhor explicado aqui: http://apidock.com/rails/ActionView/Helpers/AssetTagHelper/image_tag

Tudo o que eu adicionei ao meu aplicativo foi esta gem: gem 'rails_12factor', group: :production

Conforme descrito na documentação do stream de resources do heroku. https://devcenter.heroku.com/articles/rails-4-asset-pipeline

Eu tentei muitas soluções também, mas eu encontrei uma solução inestimável e explicação 1. Heroku procura por ativos na pasta pública e isso significa que você tem que pré-compilar seus ativos, mas se você fosse como eu alguém procurando uma maneira de pré-compilar meus ativos quando meu ambiente de desenvolvimento está definido para gem sqlite e produção definida para pg, então você faria isso.

na sua produção.rb

 config.serve_static_assets = true 

se você não tem gem pg instalado você precisa comentar e mudar seu ambiente de produção para usar gem sqlite e rodar este

 RAILS_ENV=production bundle exec rake assets:precompile 

Quando todos os resources tiverem sido pré-compilados, volte para as configurações padrão e git add., commit e push para heroku

As imagens não serão exibidas como resources por padrão, apenas css e js. Você deve olhar para a resposta de

Syed Ehtsham Abbas nesta pergunta Heroku NÃO compila arquivos em pipelines de ativos no Rails 4