forked from xdite/rails-101
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
8 changed files
with
175 additions
and
140 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -8,6 +8,3 @@ | |
* 學會 resources 的設定 ( 雙層 resources ) | ||
* 使用 before_action 整理程式碼 | ||
|
||
|
||
|
||
## |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
{::pagebreak :/} | ||
|
||
## Ch 3.1.0 安裝 devise | ||
|
||
### 安裝 gem | ||
|
||
Rails 內,安裝 gem 的方式是透過 Bundler 這個工具。具體方式是修改 `Gemfile` 這個檔案,加入所需要安裝的 gem,再執行 `bundle install`,即能安裝完畢。 | ||
|
||
### 安裝 devise | ||
|
||
|
||
[devise](https://github.com/plataformatec/devise) 是目前 Rails 界最被廣為使用的認證系統。其彈性的設計支援很多實務上的需求,如:鎖定賬號(Lockable)、需要認證(Confirmable)、取回帳號(Recoverable)、與第三方認證如 Facebook 整合( OmniAuthable)。 | ||
|
||
在本書裡面我們使用的 Boostrappers 內建即幫我們安裝好 `devise` 這個 gem。 | ||
|
||
不過你還是可以開一個空專案,實際裝一下練習看看。 | ||
|
||
|
||
修改 `Gemfile` | ||
|
||
~~~~~~~~~ | ||
gem 'devise' | ||
~~~~~~~~~ | ||
|
||
使用 bundle 安裝 | ||
|
||
`bundle install` | ||
|
||
產生必要檔案 | ||
|
||
`rails g devise:install` | ||
|
||
產生 user model 檔案 | ||
|
||
`rails generate devise user` | ||
|
||
|
||
#### devise 相關連結 | ||
|
||
~~~~~~~~~ | ||
<li> <%= link_to( "Sign Up" ,new_user_registration_path) %> </li> | ||
<li> <%= link_to( "Login", new_user_session_path ) %> </li> | ||
<li> <%= link_to("Logout",destroy_user_session_path, :method => :delete ) %> </li> | ||
~~~~~~~~~ |
Empty file.
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,147 +1,19 @@ | ||
# 練習作業 3 - 為 Group 加入使用者機制 | ||
|
||
## 作業目標 | ||
|
||
為討論區加入使用者機制,使用者必須能夠 註冊 / 登入,登入後才可以發表 Post,不然只能瀏覽。只有自己的 Post 才能進行修改與刪除。 | ||
在上一章我們完成了在 Group 裡面發表文章的功能。但是通常一個討論區的機制,必須是先加入會員才能進行相關動作。所以我們必須為討論區加入使用者機制: | ||
|
||
使用者必須能夠 註冊 / 登入,登入後才可以發表 Post,不然只能瀏覽。只有自己的 Post 才能進行修改與刪除。 | ||
|
||
## 練習主題 | ||
|
||
* gem / plugin 安裝與使用 | ||
* routes 優先權與 route alias | ||
* [before_filter](http://apidock.com/rails/v2.3.8/ActionController/Filters/ClassMethods/before_filter) 的使用及其效果 | ||
* 利用 before_filter : login_required 加入登入判斷 | ||
* 為 controller 中部分 action 加上 login_required | ||
* 安裝 gem | ||
* 設定 devise | ||
* 撰寫全域的 method `login_required` | ||
* 利用 before_action 結合 login_required 加入登入判斷 | ||
* session 的使用:current_user | ||
|
||
|
||
|
||
## 參考資料 | ||
|
||
* [devise](https://github.com/plataformatec/devise/wiki) | ||
|
||
|
||
## 作業解答 | ||
|
||
TODO | ||
|
||
# 練習作業 4 - 為 Group 加入管理者機制以及管理者後台 | ||
|
||
## 作業目標 | ||
|
||
|
||
實作簡單的 admin 機制: | ||
|
||
* admin 擁有一個後台,可以刪改所有文章。 | ||
* admin 可以新增文章 / 刪除文章 | ||
* 網址是 http://groupme.dev/admin/posts | ||
* 有身分是 admin 的人可以進後台。 | ||
* admin 的判別方是 column 裡加一個 boolean,判斷是否 admin。 | ||
* 這個 attribute 必須用 attr_accessible / attr_protected 保護。 | ||
|
||
## 練習主題 | ||
|
||
* 學習如何實作 admin 身分 | ||
* 利用 [attr_accessible](http://apidock.com/rails/v3.0.7/ActiveModel/MassAssignmentSecurity/ClassMethods/attr_accessible) / [attr_protected](http://apidock.com/rails/v3.0.7/ActiveModel/MassAssignmentSecurity/ClassMethods/attr_protected) 保護重要欄位不被竄改 | ||
* 實作 namespace routing | ||
* 利用 before_filter : require_is_admin 檢查 admin 權限 | ||
|
||
## 作業解答 | ||
|
||
TODO | ||
|
||
# 練習作業 5 - 為文章列表加入分頁機制 | ||
|
||
## 作業目標 | ||
|
||
* 文章列表要能夠分頁 | ||
* 每一頁 5 筆 | ||
* 每篇文章要秀出現在有多少 comment 數量 | ||
* 文章列表的排序要以發表時間以 DESC 排序。 | ||
|
||
## 練習主題 | ||
|
||
* 使用 [counter_cache](http://railscasts.com/episodes/23-counter-cache-column) 取代直接對資料庫的 count | ||
* 實作看板分頁(pagination)機制 | ||
* 練習使用 scope 機制包裝不同 condition 的 SQL query | ||
|
||
|
||
## 作業解答 | ||
|
||
TODO | ||
|
||
|
||
# 練習作業 6 - 每一篇文章可以上傳附件(圖片) | ||
|
||
|
||
## 作業目標 | ||
|
||
發表文章時可以順便夾帶一張附件。 | ||
|
||
|
||
## 練習主題 | ||
|
||
* 使用 [form_for](http://apidock.com/rails/ActionView/Helpers/FormHelper/form_for) :multipart => true 上傳 | ||
多媒體 | ||
* 學習使用 paperclip 縮圖 | ||
|
||
## 參考資料 | ||
|
||
[paperclip](https://github.com/thoughtbot/paperclip/wiki) | ||
|
||
## 作業解答 | ||
|
||
TODO | ||
|
||
# 練習作業 7 - 撰寫自動化 Rake 以及 db:seed | ||
|
||
|
||
## 作業目標 | ||
|
||
用 Rake 撰寫自動化步驟,生假資料。 | ||
|
||
寫一個 rake 可以達成以下步驟:「砍 db => 建 db => 跑 migration => 生種子資料」,另一個 rake 是生假文章與假留言。 | ||
|
||
## 練習主題 | ||
|
||
* 操作 rake -T | ||
* 撰寫一個 task 可以自動連續執行 rake db:drop ; rake db:create ; rake db:migrate ; rake db:seed | ||
* 撰寫一個 task 可以執行 rake dev:fake 生假資料 ( 自己寫 namespace : dev, 裡面放一個 task 叫做 fake,fake 資料用 Populator 生) # 請自行練習 | ||
|
||
|
||
## 參考資料 | ||
|
||
* [Ruby on Rails Rake Tutorial](http://jasonseifer.com/2010/04/06/rake-tutorial) | ||
* [What’s New in Edge Rails: Database Seeding](http://ryandaigle.com/articles/2009/5/13/what-s-new-in-edge-rails-database-seeding) | ||
|
||
## 作業解答 | ||
|
||
TODO | ||
|
||
|
||
# 練習作業 8 - 將 Groupme deploy 到租來的 VPS | ||
|
||
|
||
## 作業目標 | ||
|
||
在租來的 VPS 上面建置 Ruby on Rails production 環境,使用 Ruby Enterprise Edition 與 mod_rails。使用 [Capistrano](https://github.com/capistrano/capistrano/wiki) 佈署 application。 | ||
|
||
## 練習主題 | ||
|
||
* 學會如何自動部署專案 | ||
* 使用 capistrano 自動部署專案 | ||
* 操作 cap deploy:setup | ||
* 操作 cap deploy | ||
* 操作 cap deploy:rollback | ||
* 操作 cap deploy:restart | ||
|
||
|
||
## 參考資料 | ||
|
||
* [rails-nginx-passenger-ubuntu](https://github.com/jnstq/rails-nginx-passenger-ubuntu) | ||
* [AWDR4](http://pragprog.com/titles/rails4/agile-web-development-with-rails) deploy 章節 | ||
|
||
|
||
## 作業解答 | ||
|
||
TODO |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,120 @@ | ||
# 練習作業 4 - 為 Group 加入管理者機制以及管理者後台 | ||
|
||
## 作業目標 | ||
|
||
|
||
實作簡單的 admin 機制: | ||
|
||
* admin 擁有一個後台,可以刪改所有文章。 | ||
* admin 可以新增文章 / 刪除文章 | ||
* 網址是 http://groupme.dev/admin/posts | ||
* 有身分是 admin 的人可以進後台。 | ||
* admin 的判別方是 column 裡加一個 boolean,判斷是否 admin。 | ||
* 這個 attribute 必須用 attr_accessible / attr_protected 保護。 | ||
|
||
## 練習主題 | ||
|
||
* 學習如何實作 admin 身分 | ||
* 利用 [attr_accessible](http://apidock.com/rails/v3.0.7/ActiveModel/MassAssignmentSecurity/ClassMethods/attr_accessible) / [attr_protected](http://apidock.com/rails/v3.0.7/ActiveModel/MassAssignmentSecurity/ClassMethods/attr_protected) 保護重要欄位不被竄改 | ||
* 實作 namespace routing | ||
* 利用 before_filter : require_is_admin 檢查 admin 權限 | ||
|
||
## 作業解答 | ||
|
||
TODO | ||
|
||
# 練習作業 5 - 為文章列表加入分頁機制 | ||
|
||
## 作業目標 | ||
|
||
* 文章列表要能夠分頁 | ||
* 每一頁 5 筆 | ||
* 每篇文章要秀出現在有多少 comment 數量 | ||
* 文章列表的排序要以發表時間以 DESC 排序。 | ||
|
||
## 練習主題 | ||
|
||
* 使用 [counter_cache](http://railscasts.com/episodes/23-counter-cache-column) 取代直接對資料庫的 count | ||
* 實作看板分頁(pagination)機制 | ||
* 練習使用 scope 機制包裝不同 condition 的 SQL query | ||
|
||
|
||
## 作業解答 | ||
|
||
TODO | ||
|
||
|
||
# 練習作業 6 - 每一篇文章可以上傳附件(圖片) | ||
|
||
|
||
## 作業目標 | ||
|
||
發表文章時可以順便夾帶一張附件。 | ||
|
||
|
||
## 練習主題 | ||
|
||
* 使用 [form_for](http://apidock.com/rails/ActionView/Helpers/FormHelper/form_for) :multipart => true 上傳 | ||
多媒體 | ||
* 學習使用 paperclip 縮圖 | ||
|
||
## 參考資料 | ||
|
||
[paperclip](https://github.com/thoughtbot/paperclip/wiki) | ||
|
||
## 作業解答 | ||
|
||
TODO | ||
|
||
# 練習作業 7 - 撰寫自動化 Rake 以及 db:seed | ||
|
||
|
||
## 作業目標 | ||
|
||
用 Rake 撰寫自動化步驟,生假資料。 | ||
|
||
寫一個 rake 可以達成以下步驟:「砍 db => 建 db => 跑 migration => 生種子資料」,另一個 rake 是生假文章與假留言。 | ||
|
||
## 練習主題 | ||
|
||
* 操作 rake -T | ||
* 撰寫一個 task 可以自動連續執行 rake db:drop ; rake db:create ; rake db:migrate ; rake db:seed | ||
* 撰寫一個 task 可以執行 rake dev:fake 生假資料 ( 自己寫 namespace : dev, 裡面放一個 task 叫做 fake,fake 資料用 Populator 生) # 請自行練習 | ||
|
||
|
||
## 參考資料 | ||
|
||
* [Ruby on Rails Rake Tutorial](http://jasonseifer.com/2010/04/06/rake-tutorial) | ||
* [What’s New in Edge Rails: Database Seeding](http://ryandaigle.com/articles/2009/5/13/what-s-new-in-edge-rails-database-seeding) | ||
|
||
## 作業解答 | ||
|
||
TODO | ||
|
||
|
||
# 練習作業 8 - 將 Groupme deploy 到租來的 VPS | ||
|
||
|
||
## 作業目標 | ||
|
||
在租來的 VPS 上面建置 Ruby on Rails production 環境,使用 Ruby Enterprise Edition 與 mod_rails。使用 [Capistrano](https://github.com/capistrano/capistrano/wiki) 佈署 application。 | ||
|
||
## 練習主題 | ||
|
||
* 學會如何自動部署專案 | ||
* 使用 capistrano 自動部署專案 | ||
* 操作 cap deploy:setup | ||
* 操作 cap deploy | ||
* 操作 cap deploy:rollback | ||
* 操作 cap deploy:restart | ||
|
||
|
||
## 參考資料 | ||
|
||
* [rails-nginx-passenger-ubuntu](https://github.com/jnstq/rails-nginx-passenger-ubuntu) | ||
* [AWDR4](http://pragprog.com/titles/rails4/agile-web-development-with-rails) deploy 章節 | ||
|
||
|
||
## 作業解答 | ||
|
||
TODO |