如何替换 therubyracer javascript 运行时

问题描述

如何更换 therubyracer gem?我真的被困住了。

我们一直在为我们的 Rails 资产管道使用 therubyracer gem。但是,它使用的依赖项已过期并具有安全漏洞。最新版本 0.12.3 发布于 2017 年 1 月 5 日。

我查看了 mini_racer gem,但我们部署到 FreeBSD 并且 FreeBSD 支持的最新版本是 2017 年 8 月 24 日起的 0.1.14。我们在 macOS 上开发,我编译了这个版本的mini_racer 出现错误,其中之一是因为 CreateDefaultPlatform 已从 V8 中删除

execjs 支持的运行时列表,在 https://github.com/rails/execjs 列出了 Node.jsGoogle V8链接指向的页面看起来不像我可以在我的 Gemfile 中替换的 gem,也不是这些页面是否有关于如何将其运行时用于 execjs 的文档。老实说,我不知道如何在我的 Rails 管道中使用更新的运行时。

解决方法

使用 therubyracer 通常已被使用机器本身上的 NodeJS 安装所取代,这意味着它不会作为 gem 安装。需要 JS 运行时才能构建的 Gem 安装应该足够智能,可以找到您本地安装的 NodeJS。

因此在本地,假设您没有其他依赖它的 gem,您应该能够从 Gemfile 中删除 therubyracer。如果你这样做了,那些可能已经过时或被遗弃了。在安装包之前,您需要修改构建管道以安装 NodeJS。