从 css.scss 调用时,rails 资产 url 没有摘要
Posted
技术标签:
【中文标题】从 css.scss 调用时,rails 资产 url 没有摘要【英文标题】:rails assets urls don't have digest when calling from css.scss 【发布时间】:2016-04-13 15:45:01 【问题描述】:我将我的项目部署到生产环境中,但我的一些资产不起作用。 我在 html.erb 中使用的那些资产
<%= image_tag('outstaffing/outstaff2.svg') %>
正常工作并返回
<img src="/assets/outstaffing/outstaff2-eade8e303c63a428e7430e84866b732dae91cda0639d8d3d422c2ee86fb254aa.svg" >
但是字体和一些图像没有。 我有 app/assets/fonts/RobotoCondensedRegular.ttf 和 app/assets/images/common/footer.svg 我尝试从 css 文件中调用它们。
style.css.scss
@font-face
font-family: 'RobotoRegular';
src: url(font-path('RobotoCondensedRegular.ttf')) format('truetype');
#some_div
background: asset-url('common/footer.svg');
预编译后,我有 public/assets/styles-h5digest.css 和
@font-face
font-family:'RobotoRegular';
src:url("/assets/RobotoCondensedRegular-4a7c36df4318fee50a8159c3a0ebde4572abab65447ae4a651c2fe87212302b5.ttf") format("truetype")
这应该可以,但会返回错误:
加载资源失败:服务器响应状态为 500(内部服务器错误)
服务器正在尝试加载 assets/fonts/RobotoCondensedRegular.ttf,但文件名应带有摘要。页脚图片也是如此。
我已经尝试以多种方式更改 assets.rb、production.rb 和 application.rb。此外,我尝试了我的 css 文件(css、css.scss、scss、css.erb)和助手(asset-url、image-url、asset-data-url、asset_data_path、 的不同扩展名)。
我正在使用 Rails 4.2.0 和 ruby 2.2.3。
我的生产.rb
config.serve_static_files = true
config.assets.js_compressor = :uglifier
config.assets.css_compressor = :sass
config.assets.compile = false
config.assets.digest = true
我的应用程序.rb
config.assets.enabled = true
config.assets.paths << Rails.root.join('app', 'assets', 'fonts')
config.assets.paths << Rails.root.join('app', 'assets', 'images', 'img', 'main')
我的 assets.rb
Rails.application.config.assets.precompile << /\.(?:svg|eot|woff|ttf|jpg|png)\z/
Rails.application.config.assets.precompile += ['styles.css', 'careers.css', 'team.css', 'home.css', 'services.css', 'contacts.css']
来自日志的错误:
"GET /assets/fonts/RobotoCondensedBold.ttf HTTP/1.1" 500 1812 "http://...ip..../assets/application-6b568a81a81290ff96d145fa1f76bbf33919b85dad0f4235d8bf8759787a5076.css"
我认为问题出在我的服务器 (apache) 上,但我没有解决方案。
【问题讨论】:
你能在本地运行RAILS_ENV=production bundle exec rake assets:precompile
吗?
在本地主机上运行它,在生产模式下运行服务器,一切都很好。推送到apache并得到同样的错误
您没有在浏览器中缓存任何内容?只有字体和图片没有摘要?
只有 css 文件中的图像和字体没有摘要)它们在文件夹中有,但在调用中没有
【参考方案1】:
我将这两个 gem 添加到我的 Gemfile 中:
gem 'rails_serve_static_assets'
gem 'rails_stdout_logging'
并设置在我的 production.rb
config.serve_static_files = false
现在所有字体和图像都运行良好。
【讨论】:
以上是关于从 css.scss 调用时,rails 资产 url 没有摘要的主要内容,如果未能解决你的问题,请参考以下文章