本系列前兩部分已經介紹瞭如何配置Ruby on Rails開發環境,如今終於進入正題啦!web
Cloud 9開發平臺的實質是爲每個註冊的開發者在服務器端分配一個Linux虛擬機,所以在Cloud 9上進行開發就好像是在虛擬機上開發同樣。在Cloud 9的終端輸入命令實際上和在Linux上輸入命令如出一轍。所以,本文也一樣適用於本地開發。spring
Cloud 9使用方法:數據庫
(1)註冊一個免費帳戶並登陸瀏覽器
(2)點擊「Go to your Dashboard」ruby
(3)點擊「Create New Workspace」服務器
(4)選擇工做空間類型並命名,如圖:app
(5)點擊「Create」框架
(6)點擊「Start Editing」,進入虛擬機。工具
(7)進入開發環境之後能夠根據本身的開發習慣對開發環境進行設置(本身探索~)學習
(8)安裝Rails。Cloud 9開發環境包含了全部咱們須要的工具,可是沒有安裝Rails自己,打開終端輸入以下代碼安裝Rails。
$ gem install rails
至此,開發環境準備完畢,在終端輸入rails --version能夠檢查Rails版本驗證是否安裝成功。
開發環境配置完畢後,就能夠開發第一個應用程序啦。
(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系列]四、專題:Rails應用的國際化[I18n]