Ruby 将可启动 HD 从一台机器切换到另一台机器时无法启动

Ruby fails to start when switching bootable HD from one machine to other

一台 Macbook Pro(大约 2011 年)出现问题,我将硬盘换成了另一台 Macbook Pro(大约 2008 年)。

启动终端以启动 rails 应用程序服务器 rails s,服务器启动失败并出现错误

You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

rails s 命令之后:

/Users/maneuser/.rbenv/versions/2.3.4/lib/ruby/2.3.0/x86_64-darwin13/openssl.bundle: 
[BUG] Illegal instruction at 0x0000011069880a
ruby 2.3.4p301 (2017-03-30 revision 58214) [x86_64-darwin13]

-- Crash Report log information --------------------------------------------
   See Crash Report log file under the one of following:
     * ~/Library/Logs/CrashReporter
     * /Library/Logs/CrashReporter
     * ~/Library/Logs/DiagnosticReports
     * /Library/Logs/DiagnosticReports
   for more details.
Don't forget to include the above Crash Report log file in bug reports.

-- Control frame information -----------------------------------------------
c:0031 p:-17569493279562 s:0115 e:000114 TOP    [FINISH]
c:0030 p:---- s:0113 e:000112 CFUNC  :require
c:0029 p:0008 s:0109 e:000108 TOP    /Users/maneuser/.rbenv/versions/2.3.4/lib/ruby/2.3.0/openssl.rb:13 [FINISH]
c:0028 p:---- s:0107 e:000106 CFUNC  :require
c:0027 p:0010 s:0103 e:000102 TOP    /Users/maneuser/.rbenv/versions/2.3.4/lib/ruby/2.3.0/securerandom./Users/maneuser/.rbenv/versions/2.3.4/lib/ruby/2.3.0/x86_64-darwin13/openssl.bundle: [BUG] Illegal instruction at 0x0000010dd2480a
ruby 2.3.4p301 (2017-03-30 revision 58214) [x86_64-darwin13]

Ruby 通过 rbenv 安装。

对我来说,给定磁盘上的整个环境在另一台计算机上的行为方式不同是相当不合逻辑的。它 似乎 ruby 以某种方式与它所在的硬件版本相关联 运行。这个假设是错误的吗?

考虑到此磁盘可能还需要移动到另一台机器,因为这种情况应该是暂时的,因此继续获取 ruby 的工作版本的最佳方法是什么?

您可以在此处查看来自 openssl 的问题。

您计算机上安装的任何 OpenSSL 都会动态链接到已安装的库,通常在您安装时 Ruby。

那么旧的机器可能是 32 位而不是 64 位。

您可以在此处查看您的处理器类型:

https://support.apple.com/en-us/HT201948

精简版,Core Solo和Core Duo为32位,Core 2 Duo及之后为64位。

通过 rbenv 或 ruby-install 删除并重新安装 Ruby 应该可以解决您的问题,但如果您确实是在新硬件上启动硬盘驱动器,我有点惊讶您没有比 Ruby.

麻烦多了