Rails 4图像未加载到heroku上

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链接就在那里,但是当您单击它时,它会显示一个损坏的图像,表明它没有正确加载。

我试过将production.rb文件中的config.serve_static_assets = false在true和false之间切换,但都不起作用。

我也有

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

我不需要在本地预编译资产。


你需要做两件事来解决它。首先,在production.rb文件中将这两行从false改为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

RAILS_ENV=production bundle exec rake assets:precompile

commitpush到服务器。


我有一个类似的问题,我用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,我不知道我可以使用:

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

而不是传统的HTML。

image_标签在Rails API中进行了解释,但我发现它的使用在这里得到了更好的解释:http://apidock.com/rails/actionview/helpers/assettaghelper/image_标签

我添加到我的应用程序中的就是这个宝石:gem 'rails_12factor', group: :production

如Heroku资产管道文件所述。https://devcenter.heroku.com/articles/rails-4-asset-pipeline


默认情况下,这些图像不会作为资产使用,只有CSS和JS。你应该研究一下

在这个问题上,Syed Ehtsham AbbasHeroku不编译Rails 4中资产管道下的文件