最近試著用比較新的蘋果M1晶片電腦去跑Rails專案,光是設定上就踩到不少的雷,網路上也沒有相同的設置解法分享,自己簡單的紀錄一下,不過如果是跑最新版的各種軟體,我相信應該M1都有支援不會遇到這麼多雷。
Requirement
在Mac M1 BigSur 11.2.3 上跑 Ruby on Rails 6 with Ruby version 2.6.3 and MySQL 5.7
首先,第一步絕對不能錯,這步錯了後面怎麼設定可能也設定不好;在Mac terminal上要使用 “Open Using Rosetta” 來開啟並作後續的安裝。
後續使用terminal安裝ruby-build就不會遇到問題了,不然光是安裝ruby-build我是怎麼裝都有errors…
再來是安裝Ruby,雖然系統已內建 Ruby2.6.3 ,但這個版本的Ruby跑在m1上會出現各種packages gem error,所以至少要使用2.7.2版,如果你可以用2.6.3跑,拜託拜託讓我知道怎麼設定。
安裝Rails比較不是問題,基本的gem install指令即可:
gem install rails -v 6.0.0.0
最新版的 node V16 也是會有一些packages尚未有支援m1的錯誤產生,建議使用 nvm來做安裝使用 v14 即可,詳細安裝方式網路有很多教學,這邊就不多做介紹。
最後由於專案是使用MySQL資料庫而非多數Rails開發者使用的PostgreSQL,加上Mac M1預設安裝好的MySQL版本是8,現有專案的資料庫轉移會出現一些問題,於是必須要降級 downgrade to 5.7,我嘗試了各種安裝MySQL 5.7版本的方式,不管是系統安裝、homebrew安裝全都失敗,不是裝了但無法啟動,就是裝一半會有makefile issues,最後解法是用外嵌於系統上的資料庫來解決:MAMP to the rescue!
https://www.mamp.info/en/downloads/older-versions/
剛剛好MySQL的版本是5.7,透過 mysql2 gem來做bundle後,修改database.yml裡的socket連線設置即可完成Rails的設定。
development:
-- 其餘略過
socket: /Applications/MAMP/tmp/mysql/mysql.sock
以上分享,總體來說M1跑起來的確是快非常多。