ruby-on-rails 生产环境未引用指纹资产

dba5bblo  于 5个月前  发布在  Ruby
关注(0)|答案(1)|浏览(76)

资产在视图中称为<%= image_tag('union_15') %>
在开发模式下,生成的HTML是正确的,并按预期呈现:
<img src="/assets/union_15-2bd9d905e662bcd012424ffda847b1125dc8637a0b8cee101a174f9db26e838d.png">
config/initializers/assets.rb的条目
Rails.application.config.assets.precompile += %w( initialise.css pdf.css )
environments/production.rbconfig.public_file_server.enabled = true设置为每导轨指南.
RAILS_ENV=production rails assets:precompile在本地和服务器上运行。
此外,.gitignore通过注解# /public/assets进行了调整,以确保预编译的资产被重新分配到服务器。
部署过程在生产环境中使用capistrano执行:

01 $HOME/.rbenv/bin/rbenv exec bundle exec rake assets:precompile
    ✔ 01 [email protected] 3.541s
00:34 deploy:assets:backup_manifest
      01 mkdir -p /home/rd/app_name/releases/20231219091853/assets_manifest_backup

字符串
在生产服务器上检查了以下文件
current/assets_manifest_backup/.sprockets-manifest-e4c8157abe8d8b5916786c943a01c388.json
以确定正在进行指纹识别。找到以下JSON条目:
[...]"union_15-2bd9d905e662bcd012424ffda847b1125dc8637a0b8cee101a174f9db26e838d.png":{"logical_path":"union_15.png","mtime":"2023-12-19T09:19:21+00:00","size":2233,"digest":"88b013210661a0b48a30e59ec033c2add1a069ccb72d1d2ce49f9f2c9531963b","integrity":"sha256-iLATIQZhoLSKMOWewDPCrdGgacy3LR0s5J+fLJUxljs="},[...]
然而,在生产中,HTML没有正确引用,呈现:
<img src="/images/union_15" />
考虑到rails的约定,这是出乎意料的。设置中有什么错误/遗漏?

k2fxgqgv

k2fxgqgv1#

结果发现有两个配置偏离了基准。下面的设置让服务回到了正轨.环境变量不存在,编译需要设置为true。

#  config.public_file_server.enabled = ENV["RAILS_SERVE_STATIC_FILES"].present?
  config.public_file_server.enabled = true
  config.assets.compile = true

字符串

相关问题