Rails Web應用開發實戰-學生選課系統基礎版(一)

Rails Web應用開發實戰-學生選課系統基礎版(一)

本教程基於中國科學院大學研究生課程(高級軟件工程)。此教程做出的基礎版Demo,代碼位於Github。 教程適合新入門的Ruby on Rails開發者,入門者可以在基礎版上增加新的功能:

  • 處理選課衝突、控制選課人數
  • 統計學分,學位課等
  • 增加選課的開放、關閉功能
  • 自定義管理員後臺
  • 基於OAuth的授權登陸
  • Excel格式的數據導入
  • 綁定用戶郵箱(實現註冊激活,忘記密碼等)
  • 站內查找檢索 (課程按分類查找,過濾等)

1.安裝環境

Rails在衆多Web開發語言中還是屬於門檻比較高的,因爲其本地的環境搭建比較麻煩,特別在是windows系統下。而在Mac OS、Linux等系統中卻得到較好的支持。所以此教程基於Linux或者Mac系統。

本地

  • Ubantu 14.04
    通過rbenv安裝-教程
    通過RVM安裝-教程
  • Mac OS
    與Ubantu類似-教程

雲IDE(集成開發環境)

除了本地搭建環境,還可以選擇例如Cloud9類似的雲IDE,使用這些雲IDE可以免除在本地搭建環境的煩惱,只要能上網電腦,都能通過網頁訪問雲IDE,在線編輯代碼並運行。

但是在雲端編輯代碼的IDE一般沒有本地下載的IDE強,比如Jetbeans公司的產品RubyMine神器,就是目前Ruby最智能的IDE,能與Java語言的Eclipse、Netbeans相媲美。Jetbeans公司除了Ruby語言的IDE,還有Python語言的PyCharm和PHP語言的PHPStorm等,都是極好的集成開發環境,支持斷點調試Debug,自動代碼糾錯、排版等功能。可惜軟件收費,但是學生和老師通過學校的郵箱申請還是可以獲得一年的免費使用。

2.運行實例

1.下面以Cloud9開發爲例子,首先註冊然後登陸,會看到以下界面:

登錄界面

2.點擊創建新的工作空間,跳轉如下界面:

編輯界面

注意:在Clone from Git的網址那裏的url請填寫fork後的分支url,例如https://github.com/你的github賬號名字/CourseSelect。填好項目名字,然後將項目語言選爲Ruby就可以點擊創建了。

3.進入IDE編輯頁面:

IDE編輯界面

左邊爲項目的目錄,右上爲文件的編輯窗口,右下爲終端(輸入命令行的地方)。

4.在終端中輸入bundle install,安裝項目需要的外部庫(Rails中把這些庫稱爲Gems),看到以下的結果表示所有依賴的庫都安裝完畢:

pengzhaoqing:~/workspace (master) $ bundle install
Fetching gem metadata from https://gems.ruby-china.org/...........
Fetching version metadata from https://gems.ruby-china.org/..
Using rake 11.2.2
Using i18n 0.7.0
Using json 1.8.3
Using minitest 5.9.0
Using thread_safe 0.3.5
Using builder 3.2.2
Using erubis 2.7.0
Using mini_portile2 2.1.0
Using pkg-config 1.1.7
Using rack 1.6.4
Using mime-types-data 3.2016.0521
Using arel 6.0.3
Using execjs 2.7.0
Installing bcrypt 3.1.11 with native extensions
Using debug_inspector 0.0.2
Using sass 3.4.22
Using byebug 9.0.5
Using coffee-script-source 1.10.0
Using thor 0.19.1
Using concurrent-ruby 1.0.2
Using tilt 2.0.5
Using multi_json 1.12.1
Installing nested_form 0.3.2
Installing pg 0.18.4 with native extensions
Using bundler 1.12.5
Installing rails_serve_static_assets 0.0.5
Installing rails_stdout_logging 0.0.5
Installing remotipart 1.2.1
Installing safe_yaml 1.0.4
Using spring 1.7.2
Using turbolinks-source 5.0.0
Installing faker 1.6.3
Using rdoc 4.2.2
Using tzinfo 1.2.2
Using nokogiri 1.6.8
Using rack-test 0.6.3
Using mime-types 3.1
Installing autoprefixer-rails 6.4.0.2
Installing uglifier 3.0.1
Using binding_of_caller 0.7.2
Using coffee-script 2.4.1
Using sprockets 3.7.0
Installing haml 4.0.7
Installing rails_12factor 0.0.3
Using turbolinks 5.0.1
Using sdoc 0.4.1
Installing activesupport 4.2.5.2
Using loofah 2.0.3
Installing rack-pjax 0.8.0
Using mail 2.6.4
Installing bootstrap-sass 3.3.7
Using rails-deprecated_sanitizer 1.0.3
Using globalid 0.3.7
Installing activemodel 4.2.5.2
Using jbuilder 2.6.0
Using rails-html-sanitizer 1.0.3
Using rails-dom-testing 1.0.7
Installing activejob 4.2.5.2
Installing activerecord 4.2.5.2
Installing actionview 4.2.5.2
Installing actionpack 4.2.5.2
Installing actionmailer 4.2.5.2
Installing railties 4.2.5.2
Installing kaminari 0.16.3
Using sprockets-rails 3.1.1
Using coffee-rails 4.1.1
Installing font-awesome-rails 4.5.0.1
Installing jquery-rails 4.1.1
Installing jquery-ui-rails 5.0.5
Installing rails 4.2.5.2
Using sass-rails 5.0.6
Using web-console 2.3.0
Installing rails_admin 0.8.1
Bundle complete! 17 Gemfile dependencies, 73 gems now installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.
Post-install message from haml:

HEADS UP! Haml 4.0 has many improvements, but also has changes that may break
your application:

* Support for Ruby 1.8.6 dropped
* Support for Rails 2 dropped
* Sass filter now always outputs <style> tags
* Data attributes are now hyphenated, not underscored
* html2haml utility moved to the html2haml gem
* Textile and Maruku filters moved to the haml-contrib gem

For more info see:

http://rubydoc.info/github/haml/haml/file/CHANGELOG.md

5.本來Rails默認支持的是內置的Sqlite3數據庫,無需安裝,但是這個項目爲了後期與Heroku更好接軌,使用的是postgresql這個數據庫。幸運的是,Cloud9爲我們預裝好了Postgresql數據庫,我們只需要在終端中輸入sudo service postgresql start,就能啓動postgresql數據庫。

此時我們如果直接建表的話,會報關於編碼的錯誤:PG::Error: ERROR: new encoding (UTF8) is incompatible,根據這裏,我們在終端中逐行運行下面代碼來解決上面的問題:

//進入postgresql數據庫
pengzhaoqing:~/workspace (master) $ psql
psql (9.3.14)
Type "help" for help.

ubuntu=# UPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template1';
UPDATE 1
ubuntu=# DROP DATABASE template1;
DROP DATABASE
ubuntu=# CREATE DATABASE template1 WITH TEMPLATE = template0 ENCODING = 'UNICODE';
CREATE DATABASE
ubuntu=# UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template1';
UPDATE 1
ubuntu=# \c template1
You are now connected to database "template1" as user "ubuntu".
template1=# VACUUM FREEZE;
VACUUM
template1-# \q

6.準備好數據庫後,我們用下列指令建立表:

pengzhaoqing:~/workspace (master) $ rake db:create:all

然後運行數據遷移:

pengzhaoqing:~/workspace (master) $ rake db:migrate
== 20160818081955 CreateUsers: migrating ======================================
-- create_table(:users)
   -> 0.0328s
-- add_index(:users, :email, {:unique=>true})
   -> 0.0081s
== 20160818081955 CreateUsers: migrated (0.0412s) =============================

== 20160907152104 CreateCourses: migrating ====================================
-- create_table(:courses)
   -> 0.0117s
== 20160907152104 CreateCourses: migrated (0.0118s) ===========================

== 20160909105514 CreateGrades: migrating =====================================
-- create_table(:grades)
   -> 0.0192s
== 20160909105514 CreateGrades: migrated (0.0194s) ============================

最後寫入種子數據:

pengzhaoqing:~/workspace (master) $ rake db:seed

7.點擊IDE上面的Run Project按鈕,在log裏會顯示網站的地址,點擊這個網址就能進入項目的演示頁面:

運行項目

演示頁面

結束語

到這裏,這個項目就算是跑通了,關於項目更多詳細請看這裏,下面將會分解這個項目,從零開始寫起。

覺得項目好的話,在Github右上角給項目點顆星吧~


Updated

爲方便大家安裝環境,我們提供本地虛擬機安裝的鏡像, 在這裏下載鏡像的壓縮包, 需要VMware Workstation 12 Pro 12.50版本, 軟件收費,破解大家自己想辦法,下載完後解壓到一個文件內,然後打開Vmware,選擇[文件]->[打開]選項,找到解壓的文件,選擇後綴名.vmk的文件即可,如下圖:

這裏寫圖片描述

導入後選擇開機,就能進入虛擬機了,用戶名和密碼都是peng, 虛擬機已經安裝並配置好了ruby 2.2.4和rails 4.2.5.2, postgresql數據庫, git和Rubymine代碼IDE工具, 注意Rubymine目前是三十天免費,Rubymine官網可以對學生和老師免費,具體請看這裏, 使用者只需要在開機後,用rubymine打開桌面上下載好的Courseselect文件,點擊運行即可,注意桌面上項目的只是供Demo,還需git clone自己fork後的項目。

發佈了46 篇原創文章 · 獲贊 132 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章