動態

詳情 返回 返回

前端學 Ruby:安裝Ruby、Rails - 動態 詳情

Ruby 是什麼

Ruby 是一個注重均衡的語言,它的發明者松本行弘,混合了他喜歡的多門語言(Perl、Smalltalk、Eiffel、Ada 和 Lisp),創造出了一種兼具函數式編程和命令式編程特色的新語言

他“試着讓 Ruby 更自然,而不是更簡單”,讓一切符合生活常規

除此之外,他還提到:

Ruby 就像人的身體一樣,表面上看來簡單,但是內部卻相當複雜

如何安裝 ruby

筆者所用的電腦是 window,在此基礎上有多種方法安裝、使用 ruby,一是直接下載 window 版的 ruby;二是先安裝 docker,後下載 Linux 鏡像,在 Linux 環境中安裝 ruby;三是安裝 docker 後,直接下載 ruby 鏡像

如果是在 Window 中,可以在官網或者國內鏡像源處下載使用

如果是在 Linux 中,可以在官網裏下載

  1. 下載最新版的 Ruby 壓縮文件
wget https://cache.ruby-lang.org/pub/ruby/3.1/ruby-3.1.3.tar.xz
# curl https://cache.ruby-lang.org/pub/ruby/3.1/ruby-3.1.3.tar.xz
  1. 下載 Ruby 之後,使用下面的命令解壓:
tar -xvzf ruby-3.1.3.tgz    
cd ruby-3.1.3
  1. 配置並編譯源代碼
./configure
make
sudo make install
  1. 安裝後,通過在命令行中輸入以下命令來確保一切工作正常
ruby -v
ruby 3.1.3

如果用 docker

  1. 拉取 ruby 鏡像
docker pull ruby
  1. 基於 ruby 鏡像生產一個容器
docker run -it 

當然,也可以用 vscode + dev-container 來在 vscode 中生成一個 Linux,Linux 安裝 ruby 來做開發

除了直接下載 ruby 外,還可以下載 RVM,它可以管理多個版本的 Ruby,就像前端概念裏的 nvm

RVM

RVM 能在系統中安裝和管理多個 Ruby 版本。同時還能管理不同的 gem 集。支持 macOS、Linux 和其它類 UNIX 操作系統

gpg2 --keyserver keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
\curl -sSL https://get.rvm.io | sudo bash -s stable
# 當 rvm 安裝好後,看下圖的提示操作
sudo usermod -a -G rvm johan # 將當前用户添加到 rvm 組中
su root # 切換到root,相當於先註銷 johan
su johan # 切換會johan,相當於登錄 johan
source /etc/profile.d/rvm.sh # 讓命令生效

安裝完rvm後的提示

# 設置為系統默認版本
rvm use --default 2.2.3
# 在其他版本之前切換
rvm use 2.2.1
# 卸載一個指定版本
rvm uninstall 2.2.1

Gems

RubyGems 是 Ruby 項目的包管理工具。有很多有用的代碼庫(包括 Rails)都可以通過包(或叫做 gem)的形式獲取

因為下載了 ruby,自帶了 gem,就好比下載了 node,自帶了 npm

gem -v 
#3.3.26
有意思的是:ruby 的英語意思是紅寶石,gem 的意思是寶石

Ruby鏡像源替換

添加鏡像的目的是為了下載依賴包的時候速度更快,就好比 npm 的國內鏡像 cnpm

查看當前鏡像

gem source l # 或者 gem source
# 結果
# *** CURRENT SOURCES ***

# https://rubygems.org/

添加國內鏡像:

gem sources --add https://gems.ruby-china.com/

再次查看鏡像:

gem sources -l
# *** CURRENT SOURCES ***

# https://rubygems.org/
# https://gems.ruby-china.com/

用 --add 添加地址,--remove 刪除地址

gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/

國內其他鏡像源

在部署時,ruby-china 的源會抖動連接不上,可以通過換源或者在開發時將源下載下來,用本地源來代替(唐詩項目遇到的坑)

中科大:http://mirrors.ustc.edu.cn/help/rubygems.html

清華:https://mirrors.tuna.tsinghua.edu.cn/help/rubygems/

阿里:https://mirrors.aliyun.com/rubygems/

gem 命令

  • gem list:查看所有的包
  • gem install xx:下載應用包
  • gem uninstall:卸載應用包
  • gem sources:查看當前鏡像

命令行

當安裝完 ruby 後,打開命令行輸入 irb,即可進入irb 運行環境,這就像輸入 node 進入 node 運行環境,輸入 python ,進入 python 運行環境

安裝 Rails

Rails 是什麼?

Rails 是使用 Ruby 語言寫的 Web 應用框架。它有兩大指導“思想”

  • 不要自我重複(DRY)
  • 多約定,少配置(約定大於配置)

因為有包管理工具,所以下載就可以

github 源碼地址:https://github.com/rails/rails

gem install rails

安裝完畢後,執行 rails -v 檢查是否安裝成功

rails -v
# Rails 7.0.4

當然, rails 還有很多命令,如

rails new blog # 生成一個 blog 項目
rails new --api blog # 以 API 形式生成一 blog 項目
rails new --css bootstrap blog # 以 bootstrap 作為css生成一 blog 項目
rails new --database postgresql blog # 以 postgressql 作為數據庫生成項目
rails new -h # 查看所有命令行選項
rails new --api --database=postgresql --skip-test blog # 創建一個數據庫為 postgresql 的跳過測試的 api 博客(blog)項目

第一個程序

使用 rails 新建項目,它就像 express-generator 一樣,所有的配置都幫你弄好,你要寫代碼就可以

rails new first_app

目錄結構

文件/文件夾 作用
app/ 包含應用的控制器、模型、視圖、輔助方法、郵件程序、頻道、作業和靜態資源文件。這個文件夾是本文剩餘內容關注的重點。
bin/ 包含用於啓動應用的 rails 腳本,以及用於安裝、更新、部署或運行應用的其他腳本。
config/ 配置應用的路由、數據庫等。詳情請參閲配置 Rails 應用。
config.ru 基於 Rack 的服務器所需的 Rack 配置,用於啓動應用。
db/ 包含當前數據庫的模式,以及數據庫遷移文件。
Gemfile, Gemfile.lock 這兩個文件用於指定 Rails 應用所需的 gem 依賴。Bundler gem 需要用到這兩個文件。關於 Bundler 的更多介紹,請訪問 Bundler 官網。
lib/ 應用的擴展模塊。
log/ 應用日誌文件。
public/ 僅有的可以直接從外部訪問的文件夾,包含靜態文件和編譯後的靜態資源文件。
Rakefile 定位並加載可在命令行中執行的任務。這些任務在 Rails 的各個組件中定義。如果要添加自定義任務,請不要修改 Rakefile,直接把自定義任務保存在 lib/tasks 文件夾中即可。
README.md 應用的自述文件,説明應用的用途、安裝方法等。
test/ 單元測試、固件和其他測試裝置。詳情請參閲Rails 應用測試指南。
tmp/ 臨時文件(如緩存和 PID 文件)。
vendor/ 包含第三方代碼,如第三方 gem。
.gitignore 告訴 Git 要忽略的文件(或模式)。詳情參見 GitHub 幫助文檔。

其中 Gemfile 相當於前端中的 package.jsonGemfile.lock相當於package.lock

但當你使用初始化項目時,會報錯:

初始化項目報錯

其原因是在路徑中使用了中文,所以換個路徑就好

下載依賴是通過 bundle install ,相當於前端的 npm install

bundle install 
可以使用 bundle --help 查看 bundle 的其他命令行,筆者會用 bundle install --verbose 查看下載過程

如何啓動項目呢,在前端開發中,有 package.json,能在 script 中寫命令。而 rails 不同,它的 Gemfile 沒有運行文件的命令,但它自帶了很多命令行,如:

rails server # 啓動服務
rails s -p 8080 # s 為 server 縮寫,-p 8080 表示指定8080的端口

如此, rails 應用就啓動了

ruby on rails運行成功

總結

本文的主要目的是讓 Ruby on Rails 能運行,在 window 上運行確實還有坑,即使沒有幾年前那麼多,但還是有個坑讓我踩進去了,這裏作記錄

我們現在已經安裝了 ruby、rails,並且啓動項目,但到現在一行代碼都不會寫,下一篇,我們熟悉 ruby 的語法

參考資料

  • Rails 入門

系列文章

  • 前端學 Ruby:前言
user avatar tianmiaogongzuoshi_5ca47d59bef41 頭像 smalike 頭像 savokiss 頭像 leexiaohui1997 頭像 linx 頭像 huajianketang 頭像 hard_heart_603dd717240e2 頭像 zero_dev 頭像 solvep 頭像 wanshoujidezhuantou 頭像 joe235 頭像 zhaodawan 頭像
點贊 58 用戶, 點贊了這篇動態!
點贊

Add a new 評論

Some HTML is okay.