ruby on rails - portable - Rieles 4 imágenes que no se cargan en heroku
learn heroku (9)
Intenté muchas soluciones también, pero encontré una solución y una explicación invaluables 1. Heroku busca activos en la carpeta pública y eso significa que tiene que precompilar sus activos, pero si usted fuera como yo, alguien buscaría una forma de precompilar mis activos cuando mi entorno de desarrollo está configurado en gema sqlite y el conjunto de producción en pg, entonces harías esto.
en su production.rb
config.serve_static_assets = true
si no tiene gema pg instalada, necesita comentarla y cambiar su entorno de producción para usar gem sqlite y ejecutar esto
RAILS_ENV=production bundle exec rake assets:precompile
Cuando todos los recursos se hayan precompilado, vuelva a la configuración predeterminada y añada git., commit y push para heroku.
Pasé la mayor parte del día intentando cargar imágenes en mi aplicación heroku. Todo lo que intento funciona localmente, pero no después de desplegarlo en heroku.
Tengo archivos png guardados en la carpeta de imágenes debajo de mis activos. Me refiero a estas imágenes con sintaxis en mi CSS como;
#signin {
background: url(<%= asset_path ''sf.png'' %>);
background-size: 100%;
}
En heroku cuando inspecciono el fondo, el enlace assets / sf.png está ahí, pero cuando lo haces, muestra una imagen rota, lo que sugiere que no se cargó correctamente.
He intentado alternar config.serve_static_assets = false
en el archivo production.rb
entre verdadero y falso y ninguno de los dos funciona.
tambien tengo
group :production do
gem ''pg''
gem ''rails_12factor''
end
La precompilación siempre es exitosa.
Rails 4. ¿Alguna idea sobre qué más probar?
Las imágenes no se servirán como activos por defecto, solo css y js. Deberías mirar la respuesta de
Syed Ehtsham Abbas en esta pregunta Heroku NO compila archivos en las tuberías de activos en Rails 4
Necesitaba combinar varias soluciones para hacer que esto funcionara, esto es lo que hice:
Gemfile
gem ''rails_12factor'', group: :production
en mi consola 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
No necesité precompilar los activos localmente.
Necesitas hacer dos cosas para resolverlo. Primero, cambie estas dos líneas de falso a verdadero en el archivo production.rb
.
config.assets.compile = true
config.assets.digest = true
En segundo lugar, si tienes una sintaxis como esta para tus imágenes
background: url("imgo.jpg")
Cambiarlo a
background: image-url("image.jpg")
Espero que haga tu trabajo
No tengo la reputación para comentar (todavía) pero es importante tener en cuenta que la función Heroku Labs se ha eliminado, por lo que ahora obtendrá un error "No such feature: user-env-compile"
Otro problema que tenía con esto era que estaba precompilando mis activos localmente, antes de cargarlo en heroku. Esto requiere que siga un conjunto diferente de pasos, que se pueden encontrar a continuación. Si precompila sus activos localmente, debe seguir estos pasos o las actualizaciones que realice en su carpeta de activos no se reflejarán en prod.
https://devcenter.heroku.com/articles/rails-asset-pipeline
RAILS_ENV=production bundle exec rake assets:precompile
commit
y push
al servidor.
Rails (''4.1.5'') Tuve un problema similar de imágenes que no se muestran en Heroku pero que aparecen localmente. No utilizo gemas de clip o de carrierwave, precompilo localmente y también uso RAILS_ENV = producción que presiono para github y se aplica bien a Heroku.
Solucioné el problema teniendo:
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
imágenes copiadas al público / activos de la aplicación / activos. entonces:
// tests should pass
bundle exec rake assets:precompile --trace
RAILS_ENV=production bundle exec rake assets:precompile --trace
git commit
git push
Y estaba funcionando bien en Heroku.
Tuve un problema similar al mostrar solo imágenes. Siendo nuevo en los rieles que no sabía que podría usar:
<%= image_tag("fileName.png", alt: "File Name Fancy", size: "100x100")%>
En lugar de html tradicional.
La etiqueta image_tag se explica en la API de rails, pero creo que su uso se explica mejor aquí: http://apidock.com/rails/ActionView/Helpers/AssetTagHelper/image_tag
Todo lo que agregué a mi aplicación fue esta joya: gem ''rails_12factor'', group: :production
Como se describe en la documentación de heroku asset-pipeline. https://devcenter.heroku.com/articles/rails-4-asset-pipeline
Tuve un problema similar y lo resolví con la siguiente línea en custom.css.scss. Dime si esto funciona para ti.
background: image-url(''sf.png'')
Al hacer referencia al activo que se realiza de diferentes maneras dependiendo de si está utilizando ERB o Sass, consulte en la Guía de Ruby on Rails .