導言
Ruby on Rails是開發者創建網站和網絡應用的流行應用堆棧。結合了Ruby編程語言與Rails開發框架,使得應用開發迅速且高效。
安裝Ruby和Rails的一種方式是使用命令行工具rbenv。使用rbenv將為您提供一個受控且健壯的開發環境,讓您輕鬆切換所需的Ruby工作版本。
rbenv支持指定應用特定版本的Ruby,允許您更改每個用戶的全局Ruby版本,並允許您使用環境變量覆蓋Ruby版本。
在本教程中,您將使用rbenv在您的本地macOS機器上安裝並設置Ruby on Rails。
先決條件
要跟隨本教程,您將需要:
- 一台安裝了macOS的計算機或虛擬機器,該機器具有管理訪問權限和網絡連接。本教程已在macOS 12.4 Monterey上進行了測試。
- Node.js 在您的 macOS 機器上安裝,如在如何在 macOS 上安裝 Node.js 並建立本機開發環境中所述。一些 Rails 功能,如Asset Pipeline,取決於 JavaScript Runtime。Node.js 提供了此功能。
- 您的 macOS 機器上安裝了Homebrew 軟體包管理器。
步驟 1 — 安裝 rbenv
在此步驟中,您將安裝 rbenv 並確保它在開機時自動啟動。為此,在 macOS 上,本教程將使用軟體包管理器Homebrew。
要使用 Homebrew 下載rbenv
套件,請執行以下命令:
- 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
或您喜歡的文本編輯器:
- nano .bash_profile
將以下行添加到文件中:
eval "$(rbenv init -)"
保存並退出文件。
接下來,應用您對~/.bash_profile
文件所做的更改到當前的 shell 會話中:
- source ~/.bash_profile
要驗證 rbenv 是否設置正確,請使用type
命令,該命令將顯示有關rbenv
命令的更多信息:
- type rbenv
您的終端窗口將顯示以下內容:
Outputrbenv 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
。
- rbenv install -l
Output2.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:
- rbenv install 3.1.2
安裝Ruby可能需要一段時間,所以準備好安裝需要一些時間。
安裝完成後,使用global
子命令將其設置為您的默認Ruby版本:
- rbenv global 3.1.2
通過檢查其版本號確認Ruby是否已正確安裝:
- ruby -v
您的輸出將類似於這樣:
Outputruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-darwin21]
要安裝並使用不同版本的Ruby,運行帶有不同版本號的rbenv
命令,例如rbenv install 2.7.6
和rbenv global 2.7.6
。
您現在已經安裝了一個Ruby版本並設置了默認的Ruby版本。接下來,您將設置自己以使用Ruby包和庫,或者gems,然後可以安裝Rails。
步驟3 — 使用Gems
Gems是Ruby庫和程序的包,可以在整個Ruby生態系統中分發。您使用gem
命令來管理這些gems。在此步驟中,您將配置gem
命令以準備安裝Rails。
當您安裝 gem 時,安裝過程會生成本地文檔。這可能會對每個 gem 的安裝過程增加相當多的時間,因此您可以通過創建一個名為 ~/.gemrc
的文件來關閉本地文檔生成功能:
- echo "gem: --no-document" > ~/.gemrc
完成後,使用 gem
命令來安裝 Bundler,這是一個管理項目的 gem 依賴性的工具。這對於 Rails 的正常工作是必要的:
- gem install bundler
您將看到如下輸出:
OutputFetching: bundler-2.3.18.gem
Successfully installed bundler-2.3.18
1 gem installed
您可以使用 gem env
命令來了解更多有關 gem 的環境和配置。要查看已安裝 gem 的位置,請使用 home
參數,就像這樣:
- gem env home
您將看到類似於以下的輸出:
/Users/sammy/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0
現在您已經設置並探索了 gem 工作流程,您可以自由安裝 Rails。
步驟 4 — 安裝 Rails
要安裝 Rails,請使用 gem install
命令:
- 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:
- gem search '^rails$' --all
- gem install rails -v 4.2.7
rbenv通過創建一個shims目錄或庫來工作,這些庫會截取調用並更改或重定向它們。在這種情況下,shims指向當前啟用的Ruby版本使用的文件。通過rehash
子命令,rbenv會維護該目錄中的shims,以匹配服務器上安裝的每個Ruby版本的每個Ruby命令。每當您安裝新版本的Ruby或提供命令的gem(例如Rails)時,應使用rehash
。
要重新生成shims目錄,請運行以下命令:
- rbenv rehash
通過執行以下命令,檢查Rails的安裝版本:
- rails -v
您將看到已安裝的Rails版本:
OutputRails 7.0.3.1
安裝成功後,您可以開始測試您的Ruby on Rails安裝並開始開發Web應用程序。在下一步中,您將學習如何更新和卸載rbenv和Ruby。
步驟5 — 更新和卸載rbenv和Ruby
在維護項目時,了解如何在需要時更新和卸載是很有用的。在這一步中,您將升級 rbenv,然後從您的計算機上卸載 Ruby 和 rbenv。
您可以使用 Homebrew 命令升級 rbenv 和 ruby-build:
- brew upgrade rbenv ruby-build
如果需要更新 rbenv 或 ruby-build,Homebrew 將自動執行此操作。如果您的設置已經是最新的,您將獲得類似以下的輸出:
OutputWarning: rbenv 1.2.0 already installed
Warning: ruby-build 20220713 already installed
這將確保我們使用的是最新版本的 rbenv。
在下載其他版本的 Ruby 時,您的 ~/.rbenv/versions
目錄中可能會累積更多版本。使用 ruby-build 插件的 uninstall
子命令,您可以刪除這些之前的版本。
例如,運行以下命令以卸載 Ruby 版本 2.1.3:
- rbenv uninstall 2.1.3
使用 rbenv uninstall
命令,您可以清理掉您目前沒有使用的舊版 Ruby。
如果您決定不再使用 rbenv,您可以從系統中刪除它。
要做到這一點,首先在編輯器中打開您的 ~/.bash_profile
文件:
- nano ~/.bash_profile
從文件中找到並刪除以下行,以防止 rbenv 在打開終端時啟動:
...
eval "$(rbenv init -)"
刪除此行後,保存文件並退出編輯器。
運行以下命令以應用對 shell 的更改:
- source ~/.bash_profile
然後,使用此命令刪除 rbenv 和所有已安裝的 Ruby 版本:
- rm -rf `rbenv root`
最終,使用Homebrew刪除rbenv套件本身:
- brew uninstall rbenv
檢查rbenv版本以確保已卸載:
- 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