Rails 4 images not loading on heroku
我一天中大部分时间都在尝试将图片加载到我的Heroku应用程序上。我所尝试的一切都在本地工作,但在部署到Heroku之后就没有了。
我将PNG文件保存在"我的资产"下的"图像"文件夹中。我在使用CSS中的语法引用这些图像,例如:
1 2 3 4 | #signin { background: url(<%= asset_path 'sf.png' %>); background-size: 100%; } |
在Heroku中,当我检查背景时,assets/sf.png链接就在那里,但是当您单击它时,它会显示一个损坏的图像,表明它没有正确加载。
我试过将
我也有
1 2 3 4 | group :production do gem 'pg' gem 'rails_12factor' end |
预编译总是成功的。
轨道4。还有什么想法可以试试吗?
我需要结合多种解决方案来实现这一目标,我做了以下工作:
电子文件
1 | gem 'rails_12factor', group: :production |
在我的Heroku控制台里
1 | heroku labs:enable user-env-compile -a yourapp |
生产线
1 2 3 | config.serve_static_assets = true config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' config.assets.compile = true |
我不需要在本地预编译资产。
你需要做两件事来解决它。首先,在
1 2 | config.assets.compile = true config.assets.digest = true |
其次,如果您的图像有这样的语法
1 | background: url("imgo.jpg") |
把它改成
1 | background: image-url("image.jpg") |
我希望它能胜任你的工作。
另一个问题是,在加载到Heroku之前,我在本地预编译了我的资产。这需要您遵循一组不同的步骤,可以在下面找到这些步骤。如果在本地预编译资产,则必须遵循这些步骤,否则对资产文件夹所做的任何更新都不会反映在prod中。
https://devcenter.heroku.com/articles/rails-asset-pipeline
我有一个类似的问题,我用custom.css.scss中的以下行解决了它。告诉我这对你有用吗?
1 | background: image-url('sf.png') |
根据使用erb或sass的不同,引用正在以不同方式执行的资源,请参见RubyonRails指南中的。
我还没有发表评论的名声,但重要的是要注意Heroku实验室的特性已经被删除,所以现在您将得到一个"no such feature:user env compile"错误。
更多:https://github.com/crowdtilt/crowdtiltopen/issues/251
Rails(‘4.1.5’)我有一个类似的问题,图片没有显示在Heroku上,而是显示在本地。我不使用回形针或CarrierWave gems,我在本地预编译,也使用Rails_env=Production I Push to Github,它可以很好地部署到Heroku。
我通过以下方式解决了这个问题:
1 2 3 4 5 6 7 8 | 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 |
将图像从应用程序/资产复制到公共/资产。然后:
1 2 3 4 5 6 | // tests should pass bundle exec rake assets:precompile --trace RAILS_ENV=production bundle exec rake assets:precompile --trace git commit git push |
在Heroku上运行良好。
我也尝试了很多解决方案,但我找到了一个非常宝贵的解决方案和解释。1。Heroku在公共文件夹中查找资产,这意味着您必须预编译资产,但如果您像我一样,有人在我的开发环境设置为gem sqlite,而production设置为pg时,正在寻找预编译资产的方法,那么您可以这样做。
在你的作品中.rb
1 | config.serve_static_assets = true |
如果没有安装gem pg,则需要对其进行注释,并更改生产环境以使用gem sqlite并运行它。
1 | RAILS_ENV=production bundle exec rake assets:precompile |
当所有资产都预编译好后,切换回默认设置,并git添加、提交和推送到heroku。
我在只显示图像方面也有类似的问题。刚接触到Rails,我不知道我可以使用:
而不是传统的HTML。
image_标签在Rails API中进行了解释,但我发现它的使用在这里得到了更好的解释:http://apidock.com/rails/actionview/helpers/assettaghelper/image_标签
我添加到我的应用程序中的就是这个宝石:
如Heroku资产管道文件所述。https://devcenter.heroku.com/articles/rails-4-asset-pipeline
默认情况下,这些图像不会作为资产使用,只有CSS和JS。你应该研究一下
在这个问题上,Syed Ehtsham AbbasHeroku不编译Rails 4中资产管道下的文件