Ruby 是什麼
Ruby 是一個注重均衡的語言,它的發明者松本行弘,混合了他喜歡的多門語言(Perl、Smalltalk、Eiffel、Ada 和 Lisp),創造出了一種兼具函數式編程和命令式編程特色的新語言
他“試着讓 Ruby 更自然,而不是更簡單”,讓一切符合生活常規
除此之外,他還提到:
Ruby 就像人的身體一樣,表面上看來簡單,但是內部卻相當複雜
如何安裝 ruby
筆者所用的電腦是 window,在此基礎上有多種方法安裝、使用 ruby,一是直接下載 window 版的 ruby;二是先安裝 docker,後下載 Linux 鏡像,在 Linux 環境中安裝 ruby;三是安裝 docker 後,直接下載 ruby 鏡像
如果是在 Window 中,可以在官網或者國內鏡像源處下載使用
如果是在 Linux 中,可以在官網裏下載
- 下載最新版的 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
- 下載 Ruby 之後,使用下面的命令解壓:
tar -xvzf ruby-3.1.3.tgz
cd ruby-3.1.3
- 配置並編譯源代碼
./configure
make
sudo make install
- 安裝後,通過在命令行中輸入以下命令來確保一切工作正常
ruby -v
ruby 3.1.3
如果用 docker
- 拉取 ruby 鏡像
docker pull ruby
- 基於 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 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.json,Gemfile.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 能運行,在 window 上運行確實還有坑,即使沒有幾年前那麼多,但還是有個坑讓我踩進去了,這裏作記錄
我們現在已經安裝了 ruby、rails,並且啓動項目,但到現在一行代碼都不會寫,下一篇,我們熟悉 ruby 的語法
參考資料
- Rails 入門
系列文章
- 前端學 Ruby:前言