从Ruby开发人员的角度广泛看待Apple M1

139 阅读1分钟

从Ruby开发人员的角度广泛看待Apple M1。我们看了很多不同的方面;Docker,asdf Ruby,Visual Studio Code等。

arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

Oh My ZSH

sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
compaudit | xargs chmod g-w,o-w

# Add to ~/.zshrc
alias a="arch -x86_64"
alias ibrew="arch -x86_64 brew"

其他应用

brew cask install iterm2
ibrew install node
npm -g install yarn
ibrew install postgresql
ibrew install redis

Docker

arch -x86_64 brew install docker
ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa 

asdf

ibrew install asdf
echo ". $(brew --prefix asdf)/asdf.sh" >> ~/.zshrc
source ~/.zshrc
asdf plugin-add ruby https://github.com/asdf-vm/asdf-ruby.git
a asdf install ruby 2.7.2
asdf global ruby 2.7.2

其它

echo 'gem: --no-document' >> ~/.gemrc

Rails

gem install rails
rails new template
rails db:system:change 

我一直在用另一种Homebrew安装方法进一步测试事情。这将允许软件包被安装到arm64上,而不是通过Rosetta2强迫它们。这样做的好处是,像RVM和asdf这样的库会使用Homebrew来安装依赖项。现在,随着依赖项被安装到arm64而不是Rosetta2,我们可以为arm安装和编译Ruby。

xcode-select --install
mkdir homebrew && curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew
sudo mv homebrew /opt/homebrew
cd /opt/homebrew/bin
./brew update
echo "export PATH="/opt/homebrew/bin:$PATH"" >> ~/.zshrc
source ~/.zshrc

如果你现在在brew安装方面有问题,你可以尝试添加-s标志,即使有软件包可用,也会从源代码下载。

brew install -s PROGRAM_NAME

如果你要使用Ruby on Rails,FFI库有一个问题,你需要从主库中提取。这对FFI的1.13.1版本来说是准确的。你可以把这个添加到Gemfile中

gem 'ffi', github: 'ffi/ffi'

# or 

gem 'ffi', git: 'https://github.com/ffi/ffi.git'

你需要从源代码安装node:

brew install wget
wget https://nodejs.org/download/release/latest/node-v15.3.0.tar.gz
tar zxf node-v15.3.0.tar.gz
cd node-v15.3.0
./configure; make
sudo make install

sudo npm -g install yarn
\curl -sSL https://get.rvm.io | bash -s stable
source $HOME/.rvm/scripts/rvm
rvm install 2.7.2
➜  ~ ruby -v
ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [arm64-darwin20]

结果是惊人的。但是,在事情得到解决之前,我现在不能推荐这种方法。Ruby ARM版本仍然有太多的问题和兼容性问题。我已经发现了一些崩溃的情况,它还不够稳定。目前,请继续使用Ruby x86版本。