如何在 macOS 上使用 rbenv 安裝 Ruby on Rails

導言

Ruby on Rails是開發者創建網站和網絡應用的流行應用堆棧。結合了Ruby編程語言與Rails開發框架,使得應用開發迅速且高效。

安裝Ruby和Rails的一種方式是使用命令行工具rbenv。使用rbenv將為您提供一個受控且健壯的開發環境,讓您輕鬆切換所需的Ruby工作版本。

rbenv支持指定應用特定版本的Ruby,允許您更改每個用戶的全局Ruby版本,並允許您使用環境變量覆蓋Ruby版本。

在本教程中,您將使用rbenv在您的本地macOS機器上安裝並設置Ruby on Rails。

先決條件

要跟隨本教程,您將需要:

步驟 1 — 安裝 rbenv

在此步驟中,您將安裝 rbenv 並確保它在開機時自動啟動。為此,在 macOS 上,本教程將使用軟體包管理器Homebrew

要使用 Homebrew 下載rbenv套件,請執行以下命令:

  1. brew install rbenv

這將安裝 rbenv 和[ruby-build] (https://github.com/rbenv/ruby-build)插件。此插件添加了rbenv install命令,該命令可簡化新版本 Ruby 的安裝過程。這可能會安裝其他幾個依賴項並花費一些時間。

接下來,您將在您的~/.bash_profile文件中添加命令eval "$(rbenv init -)",以便在打開 Terminal 時自動加載 rbenv。要做到這一點,打開您的.bash_profile文件,可以使用nano或您喜歡的文本編輯器:

  1. nano .bash_profile

將以下行添加到文件中:

~/.bash_profile
eval "$(rbenv init -)"

保存並退出文件。

接下來,應用您對~/.bash_profile文件所做的更改到當前的 shell 會話中:

  1. source ~/.bash_profile

要驗證 rbenv 是否設置正確,請使用type命令,該命令將顯示有關rbenv命令的更多信息:

  1. type rbenv

您的終端窗口將顯示以下內容:

Output
rbenv is a function rbenv () { local command; command="${1:-}"; if [ "$#" -gt 0 ]; then shift; fi; case "$command" in rehash | shell) eval "$(rbenv "sh-$command" "$@")" ;; *) command rbenv "$command" "$@" ;; esac }

此時,您的機器上已經安裝了 rbenv 和 ruby-build。這將使您能夠在下一步中從命令行安裝 Ruby。

步驟 2 — 安裝 Ruby

現在,安裝了 ruby-build 插件,您可以通過單個命令安裝任何版本的 Ruby。在此步驟中,您將選擇一個版本的 Ruby,在您的機器上安裝它,然後驗證安裝情況。

首先,使用-l標誌列出可用的 Ruby 版本。請注意,未列出的最近的次要版本可能也可用。例如,如果此命令的輸出列出了 Ruby 3.0.5,那麼您可能還可以安裝3.0.4

  1. rbenv install -l
Output
2.6.10 2.7.6 3.0.4 3.1.2 jruby-9.3.6.0 mruby-3.1.0 picoruby-3.0.0 rbx-5.0 truffleruby-22.1.0 truffleruby+graalvm-22.1.0

該命令的輸出將是一個長列表的版本,您可以選擇安裝。

對於本教程,我們將安裝Ruby 3.1.2:

  1. rbenv install 3.1.2

安裝Ruby可能需要一段時間,所以準備好安裝需要一些時間。

安裝完成後,使用global子命令將其設置為您的默認Ruby版本:

  1. rbenv global 3.1.2

通過檢查其版本號確認Ruby是否已正確安裝:

  1. ruby -v

您的輸出將類似於這樣:

Output
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-darwin21]

要安裝並使用不同版本的Ruby,運行帶有不同版本號的rbenv命令,例如rbenv install 2.7.6rbenv global 2.7.6

您現在已經安裝了一個Ruby版本並設置了默認的Ruby版本。接下來,您將設置自己以使用Ruby包和庫,或者gems,然後可以安裝Rails。

步驟3 — 使用Gems

Gems是Ruby庫和程序的包,可以在整個Ruby生態系統中分發。您使用gem命令來管理這些gems。在此步驟中,您將配置gem命令以準備安裝Rails。

當您安裝 gem 時,安裝過程會生成本地文檔。這可能會對每個 gem 的安裝過程增加相當多的時間,因此您可以通過創建一個名為 ~/.gemrc 的文件來關閉本地文檔生成功能:

  1. echo "gem: --no-document" > ~/.gemrc

完成後,使用 gem 命令來安裝 Bundler,這是一個管理項目的 gem 依賴性的工具。這對於 Rails 的正常工作是必要的:

  1. gem install bundler

您將看到如下輸出:

Output
Fetching: bundler-2.3.18.gem Successfully installed bundler-2.3.18 1 gem installed

您可以使用 gem env 命令來了解更多有關 gem 的環境和配置。要查看已安裝 gem 的位置,請使用 home 參數,就像這樣:

  1. gem env home

您將看到類似於以下的輸出:

/Users/sammy/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0

現在您已經設置並探索了 gem 工作流程,您可以自由安裝 Rails。

步驟 4 — 安裝 Rails

要安裝 Rails,請使用 gem install 命令:

  1. gem install rails

gem 命令會安裝您指定的 gem,以及每個依賴項。Rails 是一個複雜的 Web 開發框架,有很多依賴項,因此該過程將需要一些時間才能完成。最終,您將看到一條消息,指出 Rails 已安裝完成,以及它的依賴項:

Output
... Successfully installed rails-7.0.3.1 35 gems installed

注意:如果您想安裝不同版本的Rails,您可以通過搜索列出有效的Rails版本,這將輸出一長串可能的版本。然後,您可以使用-v標誌安裝特定版本,例如4.2.7

  1. gem search '^rails$' --all
  2. gem install rails -v 4.2.7

rbenv通過創建一個shims目錄或庫來工作,這些庫會截取調用並更改或重定向它們。在這種情況下,shims指向當前啟用的Ruby版本使用的文件。通過rehash子命令,rbenv會維護該目錄中的shims,以匹配服務器上安裝的每個Ruby版本的每個Ruby命令。每當您安裝新版本的Ruby或提供命令的gem(例如Rails)時,應使用rehash

要重新生成shims目錄,請運行以下命令:

  1. rbenv rehash

通過執行以下命令,檢查Rails的安裝版本:

  1. rails -v

您將看到已安裝的Rails版本:

Output
Rails 7.0.3.1

安裝成功後,您可以開始測試您的Ruby on Rails安裝並開始開發Web應用程序。在下一步中,您將學習如何更新和卸載rbenv和Ruby。

步驟5 — 更新和卸載rbenv和Ruby

在維護項目時,了解如何在需要時更新和卸載是很有用的。在這一步中,您將升級 rbenv,然後從您的計算機上卸載 Ruby 和 rbenv。

您可以使用 Homebrew 命令升級 rbenv 和 ruby-build:

  1. brew upgrade rbenv ruby-build

如果需要更新 rbenv 或 ruby-build,Homebrew 將自動執行此操作。如果您的設置已經是最新的,您將獲得類似以下的輸出:

Output
Warning: rbenv 1.2.0 already installed Warning: ruby-build 20220713 already installed

這將確保我們使用的是最新版本的 rbenv。

在下載其他版本的 Ruby 時,您的 ~/.rbenv/versions 目錄中可能會累積更多版本。使用 ruby-build 插件的 uninstall 子命令,您可以刪除這些之前的版本。

例如,運行以下命令以卸載 Ruby 版本 2.1.3

  1. rbenv uninstall 2.1.3

使用 rbenv uninstall 命令,您可以清理掉您目前沒有使用的舊版 Ruby。

如果您決定不再使用 rbenv,您可以從系統中刪除它。

要做到這一點,首先在編輯器中打開您的 ~/.bash_profile 文件:

  1. nano ~/.bash_profile

從文件中找到並刪除以下行,以防止 rbenv 在打開終端時啟動:

~/.bash_profile
...
eval "$(rbenv init -)"

刪除此行後,保存文件並退出編輯器。

運行以下命令以應用對 shell 的更改:

  1. source ~/.bash_profile

然後,使用此命令刪除 rbenv 和所有已安裝的 Ruby 版本:

  1. rm -rf `rbenv root`

最終,使用Homebrew刪除rbenv套件本身:

  1. brew uninstall rbenv

檢查rbenv版本以確保已卸載:

  1. rbenv -v

您將獲得以下輸出:

Output
-bash: /usr/local/bin/rbenv: No such file or directory

這表示您已成功從機器中刪除rbenv。

結論

在這個教程中,您在macOS上使用rbenv安裝了Ruby on Rails。從這裡,您可以通過我們的如何使用Ruby編碼系列深入了解Ruby編碼。您還可以探索如何使用PostgreSQL而不是其默認的sqlite3數據庫來使用Ruby on Rails,這為您的應用程序提供了更多的擴展性、集中性和穩定性。

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-ruby-on-rails-with-rbenv-on-macos