Rails 4 资产管道:来自 js 的 asset_path 中资产缺少指纹

2023-12-07

我正在部署一个 Rails 4.0 应用程序,其中包含 HTML 部分模板作为我们前端 JavaScript 框架的资产。尽管这些模板是资产管道的一部分并且已正确预编译,但当我调用asset_path从我们的 js 文件中嵌入的 ruby​​,它返回我们模板的路径without指纹。

我非常确定这纯粹是一个资产管道问题,但为了让您全面了解我们的技术堆栈:我们使用 Rails 4.0、Ruby 2.1、AngularJS 作为我们的前端 MVC 框架,并且资产同步在 Rails 和 CDN 之间同步我们的资产。

发生这种情况的示例(在包含在app/assets/application.js.erb:

$routeProvider
    .when('/', {
      templateUrl: "<%= asset_path 'home.html' %>",
      controller: "HomeController"
    });

这在本地效果很好,但是一旦config.assets.digest = true在生产中,调用asset_path没有正确考虑指纹。模板位于app/assets新子目录中的目录templates。因此,在上面的示例中,home.html 资源位于app/assets/templates/home.html。我们的 javascript 本身已经在那时进行了预编译,所以我认为这可能是资产预编译顺序的问题。

我注意到 Rails Github 上的一些问题(1, 2, 3)和一些关于指纹设置不正确的 SO 帖子(1, 2),但找不到任何关于它们根本不被包含在内的信息......

如果您能提供任何帮助或想法,我们将不胜感激。

编辑 4/15:忘记包括我的应用程序 javascript 文件的扩展名确实包括.erb (app/assets/application.js.erb)。感谢亚历克斯抓住了这一点。我已经在上面更新了。 另外,按照中的说明这篇关于 Heroku 的文章,我确认运行puts helper.asset_path("home.html")从生产中运行的 Rails 控制台打印该资产的正确指纹 URL。


这似乎是一个问题资产同步宝石。我删除了它,重新配置了应用程序,以便 Rails 提供资产,并且指纹识别工作正常。

如果其他人发现这个问题并且遇到同样的问题,我建议不要使用 AssetSync。根据Heroku:

Many developers make use of Amazon’s S3 service for serving static assets that 
have been uploaded previously, either manually or by some form of build process.
Whilst this works, this is not recommended as S3 was designed as a file storage 
service and not for optimal delivery of files under load. Therefore, serving 
static assets from S3 is not recommended.

亚马逊云前是通过 CDN 提供资产的首选方法,并且很容易使用提供其自己的静态资产的 Rails 应用程序进行配置,从而实现与 AssetSync 相同的目标。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails 4 资产管道:来自 js 的 asset_path 中资产缺少指纹 的相关文章

随机推荐

  • 将 Img 源与 php 变量一起使用

    我想在 WP 循环内使用一些缩略图生成的图像 代码如下所示 if thumbnail wpbdp get option use default picture thumbnail http images thumbshots com ima
  • 如何在java中使用^DG命令将图像发送到斑马打印机?

    有谁知道如何在java中将图像 例如 bmp文件 转换为十六进制字符串 以便十六进制字符串可以在 DG命令 zpl中的命令之一 中使用 谢谢 我写了一个java例子可以做到这一点 您还可以创建 ascii 十六进制代码或压缩的 ZPL 代码
  • 构建 WSO2 4.1.x 是否需要 Sun/Oracle JDK?

    Is Sun Oracle JDK构建 WSO2 4 1 x 需要吗 我尝试用OpenJDK 但遇到了以下问题 ERROR Failed to execute goal org apache maven plugins maven comp
  • jQuery if has() 选择器执行操作

    ul li text li ul http jsfiddle net wZ8MC 2 jQuery document ready function if jQuery bad drifting has em jQuery bad drift
  • 如何在正则表达式中使用变量(TCL/Expect)

    我试图弄清楚如何在正则表达式匹配中使用字符串 我在谷歌上搜索了一个小时 想我应该问问专家 这有效 usr bin expect set MYSTR value if regexp nocase MYSTR outcome matchresu
  • 过滤/消除噪音

    问题很简单 如何去除数据中的噪音 我已经制作了一些 x 和 y 值以及一些噪声 这些噪声是我正在处理的数据的总体简化 除了随机噪声之外 我无法使其与我必须处理的噪声相同 我真的不知道我是否需要过滤或平滑 我的文件包含两组需要绘制的数据 并且
  • std::vector 的 MPI_Gatherv 问题

    我无法获取MPI Gatherv使用 std vector 我编写了一个小程序 应该用rank 1的整数填充向量 以避免0 因为向量初始化为0 这只是一个使用 2 个 MPI 进程运行的示例程序 我意识到它的可扩展性不太好 include
  • 作业中存储过程的并行执行 (SQL Server)

    简短的 我有五个存储过程 每个存储过程都没有依赖项 相同的事情是它从五个不同的服务器提取数据 我们只是将其整理并提供给我们的服务器 问题 我们已将这五项任务安排在一个作业中 分为 5 个不同的步骤 我想并行执行它而不是顺序执行 额外的 如果
  • 将 double 转换为 int 的结果是错误的

    当我运行以下代码时 似乎存在某种模糊的舍入错误 int roundedTotal int PriorityJob 100 0 最初PriorityJob 1 4 and roundedTotal未定义 评估PriorityJob 100 0
  • 升级到Spring Boot 1.4.0后,AbstractPlatformTransactionManager中出现NullPointerException

    我已从 Spring Boot 1 3 2 升级到 1 4 0 现在无法启动我的应用程序 我的BeanPostProcessor调用 3d party 开源 Lazy Chopper 当尝试getTransaction 这里失败 publi
  • 如何根据 Javascript 中的属性组合两个不同大小的对象数组?

    我有两个长度不同但共享相似信息的对象数组 qrySearchLocID LocalLabID 123f SystemID 5000152 AppLabID 3 LocalLabID 12BC SystemID 5000384 AppLabI
  • 在 Docker 容器内使用 ldap

    我有 2 个 docker 容器 第一个 docker container 内部是我的 lamp 应用程序 其中包含 php 7 3 4 apache2 第二个里面是mysql数据库 我尝试连接第一个容器内的 LDAP 服务器 我继续进入
  • 复合 JTree 节点允许事件传递到下面的对象

    我正在尝试创建一个 JTree 其中一些节点是包含 JLabel 和 JButton 的复合对象 Node 代表 JLabel 显示的服务器和端口 JButton 将使用 Desktop API 打开默认浏览器并转到 URL 我已经阅读了以
  • 如何在 PHP 中减小图像大小而不损失质量 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我正在尝试开发一个基于图像的网站 我真的对更快的页面加载速度和最佳压缩实践的最佳图像类型感到困惑 请告诉我压缩图像大小的最佳方法 如果您希望使用编码本身来减少大小 您可以在 ph
  • 取消 UILocalNotification

    我的 UILocalNotification 有问题 我正在用我的方法安排通知 void sendNewNoteLocalReminder NSDate date alrt NSString title some code UILocalN
  • 在 JavaScript 中使用标签

    你能向我解释一下如何在与break交互的语句上使用标签 switch while do和for 请举例说明 通常 我看到它在突破到外循环 var i j dance for i 0 i lt 20 i for j 0 j lt 20 j c
  • 在 Pandas 中使用 read_csv 处理不需要的换行符

    我对从 SAP 导出的数据有疑问 有时您可以在发布文本中找到换行符 本来应该在一行中的内容却变成了两行 这会导致一个非常糟糕的数据框 最烦人的是 我无法让 pandas 意识到这个问题 它只是读取那些错误的行 即使列数小于标题 错误 dat
  • RAILS,捆绑安装返回 - 未定义符号:SSLv2_method [重复]

    这个问题在这里已经有答案了 可能的重复 未定义的符号 运行捆绑安装时的 SSLv2 method 我尝试 捆绑安装 我的 Rails 项目 但出现此错误 Fetching gem metadata from https rubygems o
  • 通用链接不适用于 WKWebView

    I have web view基于应用程序和公司中的其他本机应用程序 我们正在使用universal links在需要时将用户重定向到其他应用程序 其他应用程序仍然支持universal links 我可以通过按链接来运行它们Apple N
  • Rails 4 资产管道:来自 js 的 asset_path 中资产缺少指纹

    我正在部署一个 Rails 4 0 应用程序 其中包含 HTML 部分模板作为我们前端 JavaScript 框架的资产 尽管这些模板是资产管道的一部分并且已正确预编译 但当我调用asset path从我们的 js 文件中嵌入的 ruby