本系列前兩部分已經介紹了如何配置Ruby on Rails開發環境,現在終於進入正題啦!
Part1.開發前的准備
本次的主要任務是開發第一個Rails程序。需要特別指出的是,本次我選用了一個(PaaS開發平台),也就是Rails教程中介紹的Cloud 9平台,該平台已經自動為我們作好了環境配置的工作;只要你有一個瀏覽器就可以使用該雲端開發環境。非常的方便快捷!簡直贊!平台網址如下:https://c9.io/
Cloud 9開發平台的實質是為每一個注冊的開發者在服務器端分配一個Linux虛擬機,因此在Cloud 9上進行開發就好像是在虛擬機上開發一樣。在Cloud 9的終端輸入命令實際上和在Linux上輸入命令一模一樣。因此,本文也同樣適用於本地開發。
Cloud 9使用方法:
(1)注冊一個免費賬戶並登錄
(2)點擊“Go to your Dashboard”
(3)點擊“Create New Workspace”
(4)選擇工作空間類型並命名,如圖:
(5)點擊“Create”
(6)點擊“Start Editing”,進入虛擬機。
(7)進入開發環境以后可以根據自己的開發習慣對開發環境進行設置(自己探索~)
(8)安裝Rails。Cloud 9開發環境包含了所有我們需要的工具,但是沒有安裝Rails本身,打開終端輸入如下代碼安裝Rails。
$ gem install rails
至此,開發環境准備完畢,在終端輸入rails --version可以檢查Rails版本驗證是否安裝成功。
Part2.第一個應用程序
開發環境配置完畢后,就可以開發第一個應用程序啦。
(1)創建工程,在終端輸入:rails new (project name)
rails new firstDemo
等待幾秒鍾后,如果創建成功會顯示如下代碼:
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed. run bundle exec spring binstub --all * bin/rake: spring inserted * bin/rails: spring inserted
此時,Rails會自動創建文件結構,並按照MVC模型初始化模版。創建好之后的文件結構如下:
注:如果你沒有創建成功,請不要着急,那可能是有些依賴文件虛擬機沒有默認按照,這時你需要根據失敗時的提示信息,安裝相應的依賴包。安裝完成后重新構建即可。
(2)修改Gemfile文件,並重新構建
如圖,打開Gemfile,去掉#gem 'therubyracer', platforms: :ruby該行注釋(去掉#即可),以保證我們的工程支持JavaScript。如果不取消此行注釋,之后的構建會報錯:缺少JavaScript平台。
取消注釋完成后,在終端輸入以下代碼,重新構建:(先切換到項目文件夾,再構建)
cd firstDemo bundle install
(3)使用Rails提供的自動化框架Scaffold指令
在終端輸入如下指令:
rails g scaffold memo content:text
此時,Rails會建立一個memo的表,該Table具有一個Text類型的字段content。同時Rails還為我們構建好了相關的表現層,控制層,數據層代碼。具體語法細節,我會在之后學習,現在不必在意。
我們可以打開app/views/memos文件夾查看生成的具體代碼,如圖。
(4)建立數據庫
在終端輸入如下指令建立數據庫:
rake db:migrate
SqlLite3會根據數據模型自動創建好數據庫。
(5)開啟服務器,運行Web程序
注意:采用Cloud 9創建的程序與本機創建的項目在此步會有所不同。
如果采用本地服務器。在終端輸入:
rails server
然后打開瀏覽器,輸入:http://127.0.0.1:3000/memos,測試是否運行成功。
如果采用Cloud 9,需要在終端輸入:
rails server -b $IP -p $PORT
然后根據Cloud 9提示,打開相應頁面即可。如圖:
(6)查看結果
需要注意的是,直接點擊上述連接進入的不是我們生成的頁面,請在生成的鏈接后加上/memos(原因請仔細研究config文件夾下的route.rb)
運行結果如下圖:
至此,我們的第一個基於Rails的Web程序就完成啦。完全沒有寫代碼呢!Rails框架的開發效率完全體現了出來。
后記
由於是第一個Rails程序,我們並不需要深究Ruby on Rails的語法細節,我們使用了Rails提供的生成工具Scaffold快速生成了含有數據庫的應用程序,這的確比其他開發框架要快很多,我學了2個月JSP才會寫基於數據庫的web程序。。。
采用自動生成框架忽略了許多細節,在之后的學習中,我會深入研究Rails框架的語法和設計,而不是像現在這樣迅速的生成一個應用程序。
在下一篇文章,我將探討一個特殊的問題:Rails應用的國際化,敬請期待。
[Ruby on Rails系列]4、專題:Rails應用的國際化[I18n]