首页 > 解决方案 > 如何替换rubyracer javascript运行时

问题描述

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

我们一直在therubyracer为我们的 Rails 资产管道使用 gem。但是,它使用的依赖项已经过了生命周期并且存在安全漏洞。最新版本0.12.3为 2017 年 1 月 5 日。

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

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

标签: ruby-on-railsexecjs

解决方案


Usingtherubyracer通常已被机器本身的 NodeJS 安装所取代,这意味着它不会作为 gem 安装。需要 JS 运行时来构建的 Gem 安装应该足够聪明,可以找到本地安装的 NodeJS。

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


推荐阅读