如果你一直在为在Apple Silicon Mac(M1或M2)上安装therubyracer gem而碰壁,那么你就来对地方了。
通过与Rubyon Mac的客户和其他Ruby开发者交谈,一个共同的痛点是无法在M1 Mac上运行传统的Rails应用程序。这是由于项目使用了旧版本的Ruby,以及旧版本的宝石,这些宝石可能不再被维护,也不被M1/M2芯片支持。
大多数人抱怨的宝石是therubyracer 。他们花了好几天时间试图安装它,最后要么放弃,要么使用他们不满意的变通方法。你不能原生安装它的原因是,它还没有被更新以支持苹果硅芯片使用的ARM架构。如果你在rubygems.org上查找它,你会看到它自2017年1月5日以来一直没有更新。
与其浪费时间让不可能的事情发生,我建议替换掉therubyracer ,或者完全取消它。在许多情况下,这3个解决方案中的一个应该可以工作:
-
根据你使用
therubyracer的目的,你可能可以直接删除该宝石并使用Node来代替。Ruby on Mac会自动为你安装和配置Node,以及其他许多网络开发工具。 -
如果对
therubyracer的依赖来自于另一个依赖Less的 gem,可以通过sassc或sassc-railsgem 用 LibSass 替换它。 -
试着用mini_racer替换
therubyracer,它在苹果Silicon上可以正常工作。
另一个在M1 macs上给人们带来麻烦的流行宝石是ffi ,最常见的原因是使用了一个旧版本的宝石。一般的经验法则是更新堆栈跟踪中的错误来源的任何宝石。将宝石更新到最新版本可以解决苹果硅麦上的旧项目的大多数问题。
如果你仍然无法让你的老Ruby项目运行,你可以雇佣我,我很乐意帮助你。我现在接受的客户数量有限。请随时给我发电子邮件,我的名字是@ rubyonmac.dev,我们将从那里开始。