Ruby on Rails入門

Download ruby-on-rails eBook

備註

商標

Ruby on Rails(RoR)或Rails是一個開源的流行Web應用程序框架。 Rails使用Ruby,HTML,CSS和JavaScript來創建在Web服務器上運行的Web應用程序。 Rails使用模型 - 視圖 - 控制器(MVC)模式,並從數據庫一直提供到視圖的完整庫。

版本

發布日期
5.1.2 2017年6月26日
5 2016年6月30日
4.2 情節中字
4.1 2014年4月8日
4 2013年6月25日
3.2 2012-01-20
3.1 2011-08-31
3.0 2010-08-29
2.3 2009-03-16
2.0 2007-12-07
1.2 2007-01-19
1.1 2006-03-28
1.0 2005-12-13

使用非標準數據庫適配器創建新的Rails應用程序

默認情況下,Rails隨ActiveRecord 一起提供, ActiveRecord 是從具有相同名稱的模式派生的ORM(對象關係映射)。

作為ORM,它構建為處理關係映射,更準確地說是為您處理SQL請求,因此僅限於SQL數據庫。

但是,您仍然可以使用其他數據庫管理系統創建Rails應用程序:

  1. 只需創建沒有活動記錄的應用程序
$ rails app new MyApp --skip-active-record
 
  1. Gemfile 添加自己的數據庫管理系統
$ rails app new MyApp --skip-active-record
 
  1. bundle install 並按照所需數據庫中的安裝步驟進行操作。

在這個例子中, mongoidMongoDB 的對象映射,以及 - 為rails構建的許多其他數據庫gem - 它也以與ActiveRecord 相同的方式從ActiveModel 繼承, ActiveRecord 為許多功能提供了通用接口,例如驗證,回調,翻譯等。 。

其他數據庫適配器包括但不限於:

  • 的DataMapper

  • 續集護欄

使用您選擇的數據庫創建一個新的Rails應用程序,包括RSpec測試工具

Rails使用sqlite3 作為默認數據庫,但您可以使用您選擇的數據庫生成新的rails應用程序。只需添加-d 選項,然後添加數據庫的名稱。

$ rails new MyApp -T -d postgresql
 

這是一個(非詳盡的)可用數據庫選項列表:

  • MySQL的
  • 神諭
  • PostgreSQL的
  • sqlite3的
  • frontbase
  • IBM_DB
  • SQLSERVER
  • jdbcmysql
  • jdbcsqlite3
  • jdbcpostgresql
  • JDBC

-T命令指示跳過minitest的安裝。要安裝RSpec等替代測試套件,請編輯Gemfile並添加

$ rails new MyApp -T -d postgresql
 

然後從控制台啟動以下命令:

$ rails new MyApp -T -d postgresql
 

創建Ruby on Rails應用程序

這個例子假設RubyRuby on Rails已經正確安裝。如果沒有,你可以在這裡找到如何做到這一點

打開命令行或終端。要生成新的rails應用程序,請使用rails new命令,後跟應用程序的名稱:

$ rails new my_app
 

如果要使用特定的Rails版本創建Rails應用程序,則可以在生成應用程序時指定它。為此,請使用rails _version_ new 後跟應用程序名稱:

$ rails new my_app
 

這將在my_app 目錄中創建一個名為MyApp 的Rails應用程序, Gemfile 使用bundle install 已在Gemfile 提到的gem依賴項。

要切換到新創建的應用程序目錄,請使用cd 命令,該命令代表change directory

$ rails new my_app
 

my_app 目錄有許多自動生成的文件和文件夾,構成了Rails應用程序的結構。以下是默認情況下創建的文件和文件夾列表:

文件夾目的
應用程序/ 包含應用程序的控制器,模型,視圖,幫助程序,郵件程序和資產。
斌/ 包含啟動應用程序的rails腳本,可以包含用於設置,更新,部署或運行應用程序的其他腳本。
配置/ 配置應用程序的路由,數據庫等。
config.ru 用於啟動應用程序的基於機架的服務器的機架配置。
D b/ 包含當前數據庫架構以及數據庫遷移。
Gemfile Gemfile.lock 這些文件允許您指定Rails應用程序所需的gem依賴項。這些文件由Bundler gem使用。
LIB / 適合您應用的擴展模塊。
登錄/ 應用程序日誌文件
上市/ 世界上唯一看到的文件夾。包含靜態文件和編譯資產。
Rake文件此文件定位並加載可從命令行運行的任務。任務定義都是在Rails的各個組件中定義的。
README.md 這是您的應用程序的簡要說明手冊。您應該編輯此文件以告訴其他人您的應用程序的功能,如何設置等
測試/ 單元測試,固定裝置和其他測試設備。
溫度/ 臨時文件(如緩存和pid文件)。
供應商/ 所有第三方代碼的地方。在典型的Rails應用程序中,這包括銷售的寶石。

現在您需要從database.yml 文件創建一個數據庫:

5
$ rails new my_app
 
5
$ rails new my_app
 

現在我們已經創建了數據庫,我們需要運行遷移來設置表:

5
$ rails new my_app
 
5
$ rails new my_app
 

要啟動應用程序,我們需要啟動服務器:

$ rails new my_app
 

默認情況下,rails將在端口3000啟動應用程序。要使用不同的端口號啟動應用程序,我們需要啟動服務器,如,

$ rails new my_app
 

如果您在瀏覽器中導航到http:// localhost:3000 ,您將看到一個Rails歡迎頁面,顯示您的應用程序現在正在運行。

如果它拋出錯誤,可能有幾個可能的問題:

  • config/database.yml 存在問題
  • 您的Gemfile 中有尚未安裝的依賴項。
  • 您有待處理的遷移。運行rails db:migrate
  • 如果您移動到以前的遷移rails db:rollback

如果仍然拋出錯誤,那麼你應該檢查你的config/database.yml

用JSON創建Rails API

此示例假定您具有創建Rails應用程序的經驗。

要在Rails 5中創建僅限API的應用程序,請運行

rails new name-of-app --api
 

在Gemfile中添加active_model_serializers

rails new name-of-app --api
 

在終端安裝捆綁

rails new name-of-app --api
 

設置要使用的ActiveModelSerializer 適配器:json_api

rails new name-of-app --api
 

為您的資源生成一個新的腳手架

rails new name-of-app --api
 

這將生成以下文件:

控制器:app / controllers / tasks_controller.rb

rails new name-of-app --api
 

用腳手架生成資源

來自guides.rubyonrails.org:

而不是直接生成模型。 。 。讓我們建立一個腳手架。 Rails中的一個腳手架是一整套模型,該模型的數據庫遷移,操作它的控制器,查看和操作數據的視圖,以及上述每個模型的測試套件。

以下是使用字符串名稱和文本描述來構建名為Task 的資源的示例:

rails generate scaffold Task name:string description:text
 

這將生成以下文件:

rails generate scaffold Task name:string description:text
 

示例刪除由scaffold為名為Task 的資源生成的文件

rails generate scaffold Task name:string description:text
 

生成控制器

要生成控制器(例如Posts ),請從命令行或終端導航到項目目錄,然後運行:

$ rails generate controller Posts
 

您可以通過將generate 替換為g 來縮短此代碼,例如:

$ rails generate controller Posts
 

如果你打開新生成的app / controllers / posts_controller.rb,你會看到一個沒有動作的控制器:

$ rails generate controller Posts
 

可以通過傳入控制器名稱參數來為控制器創建默認方法。

$ rails generate controller Posts
 

要在模塊中創建控制器,請將控制器名稱指定為parent_module/controller_name 類的路徑。例如:

$ rails generate controller Posts
 

這將生成以下文件:

$ rails generate controller Posts
 

控制器只是一個定義為從ApplicationController 繼承的類。

在這個類中,您將定義將成為此控制器的操作的方法。

安裝Rails

在Ubuntu上安裝Rails

在乾淨的ubuntu上,Rails的安裝應該是直截了當的

升級ubuntu包

sudo apt-get update
sudo apt-get upgrade
 

安裝Ruby和Rails依賴項

sudo apt-get update
sudo apt-get upgrade
 

安裝ruby版本管理器。在這種情況下,簡單的是使用rbenv

sudo apt-get update
sudo apt-get upgrade
 

安裝Ruby Build

sudo apt-get update
sudo apt-get upgrade
 

重啟Shell

sudo apt-get update
sudo apt-get upgrade
 

安裝紅寶石

sudo apt-get update
sudo apt-get upgrade
 

安裝導軌

sudo apt-get update
sudo apt-get upgrade
 

在Windows上安裝Rails

第1步: 安裝Ruby

我們需要安裝Ruby編程語言。我們可以使用Ruby的預編譯版本RubyInstaller。

  • rubyinstaller.org下載並運行Ruby Installer。
  • 運行安裝程序。選中“將Ruby可執行文件添加到PATH”,然後安裝。
  • 要訪問Ruby,請轉到Windows菜單,單擊所有程序,向下滾動到Ruby,然後單擊“使用Ruby啟動命令提示符”。命令提示符終端將打開。如果鍵入ruby -v 並按Enter鍵,則應該看到已安裝的Ruby版本號。

第2步: Ruby Development Kit

安裝Ruby之後,我們可以嘗試安裝Rails。但是一些庫Rails依賴於需要一些構建工具才能被編譯,而Windows默認缺少這些工具。如果您在嘗試安裝Rails Gem::InstallError: The '[gem name]' native gem requires installed build tools. 時看到錯誤,則可以識別此錯誤Gem::InstallError: The '[gem name]' native gem requires installed build tools. 要解決這個問題,我們需要安裝Ruby Development Kit。

  • 下載DevKit
  • 運行安裝程序。
  • 我們需要指定一個文件夾,我們將永久安裝DevKit。我建議將它安裝在硬盤的根目錄下,位於C:\RubyDevKit 。 (不要在目錄名中使用空格。)

現在我們需要為Ruby提供DevKit工具。

  • 在命令提示符下,切換到DevKit目錄。 cd C:\RubyDevKit 或您安裝它的任何目錄。
  • 我們需要運行Ruby腳本來初始化DevKit設置。輸入ruby dk.rb init 。現在我們將告訴相同的腳本將DevKit添加到我們的Ruby安裝中。輸入ruby dk.rb install

現在,DevKit應該可供您在安裝新庫時使用的Ruby工具。

第3步: Rails

現在我們可以安裝Rails了。 Rails是一個Ruby寶石。在命令提示符下,鍵入:

gem install rails

按Enter後, gem 程序將下載並安裝該版本的Rails gem,以及Rails所依賴的所有其他Gem。

第4步: Node.js

Rails所依賴的一些庫需要安裝JavaScript運行時。讓我們安裝Node.js,以便這些庫正常工作。

  • 這裡下載Node.js安裝程序。
  • 下載完成後,請訪問您的下載文件夾,然後運行node-v4.4.7.pkg 安裝程序。
  • 閱讀完整許可協議,接受條款,然後在嚮導的其餘部分單擊“下一步”,將所有內容保留為默認值。
  • 可能會彈出一個窗口,詢問您是否要允許該應用對您的計算機進行更改。單擊“是”。
  • 安裝完成後,您需要重新啟動計算機,以便Rails可以訪問Node.js.

計算機重新啟動後,不要忘記轉到Windows菜單,單擊“所有程序”,向下滾動到Ruby,然後單擊“使用Ruby啟動命令提示符”。

Stats

1637 Contributors: 38
Monday, July 31, 2017
許可下: CC-BY-SA

不隸屬於 Stack Overflow
Rip Tutorial: info@zzzprojects.com

下載電子書