我已经为Heroku部署了一个Rails 4应用程序,它可以很好地为我的CSS和JS资源提供服务但是找不到图像(404)。
我已添加gem 'rails_12factor'
并试图切换config.serve_static_assets = true
但无效(但rails_12factor
还没有为您做到这一点?)。
最奇怪的是它与我最近部署的另一个Rails 4应用程序几乎相同,它与资产没有任何问题。这两个应用程序之间只有一些差异(从配置的角度来看):
破碎的部署被部署到Heroku的“暖室”,而那个服务图像的部署则被部署到“宁静地球”。
没有提供图片的那个也有生产中的Sendgrid的一些设置.rb:
config.action_mailer.smtp_settings = {
:address => 'smtp.sendgrid.net',
:port => '587',
:authentication => :plain,
:user_name => ENV['SENDGRID_USERNAME'],
:password => ENV['SENDGRID_PASSWORD'],
:domain => 'heroku.com'
}
config.action_mailer.delivery_method ||= :smtp
我无法想象这会对任何有意义的事情产生什么影响。
破碎的宝石安装了newrelic的newrelic_rpm
宝石,工作宝石没有。它还使用了ENV变量管理gem figaro
和MailChimp的gibbon
gem,而工作应用程序却没有。不确定这会对事情产生什么影响,但你比我更清楚。
最后的注意事项:在我将自定义CSS和图像文件添加到repo后,我的第一次部署,即使我安装了rails_12factor
,也显示了一些与奇怪错误相同的错误。在this SO post中有详细说明,尽管它们在我的下次部署中消失了,尽管没有任何有意义的更改(这看起来很奇怪):
Running: rake assets:precompile
I, [2013-10-05T04:25:02.831526 #626] INFO -- : Writing /tmp/build_0eea2e50-5876-4521-b7f6-7ca902cb129b/public/assets/bg-c63ed011f04c5167903c6d603521adfb.jpg
I, [2013-10-05T04:25:02.836773 #626] INFO -- : Writing /tmp/build_0eea2e50-5876-4521-b7f6-7ca902cb129b/public/assets/coding_school-3bcbdaea6f8c23b774d27df4b608647a.jpg
I, [2013-10-05T04:25:02.840352 #626] INFO -- : Writing /tmp/build_0eea2e50-5876-4521-b7f6-7ca902cb129b/public/assets/down_arrow_select-0b10b4ac52a74389bbc3abbb3a8cde7a.jpg
I, [2013-10-05T04:25:03.013966 #626] INFO -- : Writing /tmp/build_0eea2e50-5876-4521-b7f6-7ca902cb129b/public/assets/application-0c6f0f27ac77563741a04576653d7c0e.css
Asset precompilation completed (3.22s)
什么可能导致应用程序服务CSS和JS罚款,但不是图像?
为什么我的两个几乎相同的应用程序之间会有所不同?
答案 0 :(得分:4)
在config.assets.compile=true
中设置config/environments/production.rb
解决了这个问题,但我仍然不太明白问题发生的原因。
答案 1 :(得分:0)
调试此方案的方法:
在浏览器中打开制作应用(例如Chrome),打开开发者工具,重新加载页面,检查图像请求:
<img src='/images/image.png'></img>
时,可能已经以<%= image_tag('image.png')
样式插入了图像。谷歌的助手。404
,请确保您已正确指定了image_tag
帮助程序中的路径(如果有的话,可能不需要预先添加/images
之类的内容。尝试一下,直到找到答案。