rails 从 css.scss 调用时,资产 URL 没有摘要
rails assets urls don't have digest when calling from css.scss
我将我的项目部署到生产环境中,但我的一些资产不起作用。
我在 html.erb 和
中使用的那些资产
<%= image_tag('outstaffing/outstaff2.svg') %>
正常工作 return
<img src="/assets/outstaffing/outstaff2-eade8e303c63a428e7430e84866b732dae91cda0639d8d3d422c2ee86fb254aa.svg" alt="Outstaff2 eade8e303c63a428e7430e84866b732dae91cda0639d8d3d422c2ee86fb254aa">
但是字体和一些图像没有。
我有 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")
}
这应该可以,但是 return 是我的错误:
Failed to load resource: the server responded with a status of 500 (Internal Server Error)
服务器正在尝试加载 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, <%= asset_path() %>).
我正在使用 Rails 4.2.0 和 ruby 2.2.3。
我的production.rb
config.serve_static_files = true
config.assets.js_compressor = :uglifier
config.assets.css_compressor = :sass
config.assets.compile = false
config.assets.digest = true
我的application.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) 上,但我没有解决方案。
我将这两个 gem 添加到我的 Gemfile 中:
gem 'rails_serve_static_assets'
gem 'rails_stdout_logging'
并设置在我的production.rb
config.serve_static_files = false
现在所有字体和图像都运行良好。
我将我的项目部署到生产环境中,但我的一些资产不起作用。 我在 html.erb 和
中使用的那些资产<%= image_tag('outstaffing/outstaff2.svg') %>
正常工作 return
<img src="/assets/outstaffing/outstaff2-eade8e303c63a428e7430e84866b732dae91cda0639d8d3d422c2ee86fb254aa.svg" alt="Outstaff2 eade8e303c63a428e7430e84866b732dae91cda0639d8d3d422c2ee86fb254aa">
但是字体和一些图像没有。 我有 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")
}
这应该可以,但是 return 是我的错误:
Failed to load resource: the server responded with a status of 500 (Internal Server Error)
服务器正在尝试加载 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, <%= asset_path() %>).
我正在使用 Rails 4.2.0 和 ruby 2.2.3。
我的production.rb
config.serve_static_files = true
config.assets.js_compressor = :uglifier
config.assets.css_compressor = :sass
config.assets.compile = false
config.assets.digest = true
我的application.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) 上,但我没有解决方案。
我将这两个 gem 添加到我的 Gemfile 中:
gem 'rails_serve_static_assets'
gem 'rails_stdout_logging'
并设置在我的production.rb
config.serve_static_files = false
现在所有字体和图像都运行良好。