目前日期文章:201003 (13)

瀏覽方式: 標題列表 簡短摘要

通常問題是發生在本機端有做更動,遠端的 repository 也有其他人更動過,但是 code 的變動是屬於對立情形,git 無法自動 merge 成功,導致做 git pull 會出現 conflict。

依序指令下 git stash (會先將本機更動的檔案暫存)

git pull (會將 repo 程式碼拉回來並做 merge,其實 pull 指令本來就是 fetch + merge)

git stash apply (將暫存的 code 與現在 pull 後的 code 做 merge)

 

到此會分兩種情形,一種是 apply 成功,那就直接推上去

git commit

git push

另一種是 apply 後會發生 conflict ,這時候就要開啟編輯器,去看有 conflict 的程式碼,手動解決衝突(你會發現程式碼內有標明衝突區段),解完推上去,然後繼續拉 repo 程式碼

git commit

git push

git pull

如果 pull 之後又有 conflict ,就繼續手動解決衝突,然後 push ,反覆此行為直到你 pull 為 up-to-date 的狀態。

笨笨小蟹 發表在 痞客邦 PIXNET 留言(1) 人氣()

如果在 commit 時,指令只有下 git commit ,那後果就是無法清楚的知道本次 commit 的目的,是修正錯誤呢?新增功能呢?還是想完成什麼事情。

這對開發來說是種大忌,因為會造成維護以及交接上的災難,因此每次 commit 時,指令建議下 git commit -m ,這樣就會自動跳到預設編輯器,讓你可以輸入 commit tilte 。

我個人則是習慣直接下 git commit -m "本次 commit 的目的",這樣就會直接出去並填好 commit title ,不會跳編輯器出來。

笨笨小蟹 發表在 痞客邦 PIXNET 留言(0) 人氣()

一開始都是很習慣下 git add . 這個指令,會把大部分的更動檔案都加入;

如果有遺漏的(像是 untracked ),就再用 git add -u 加入。

不過實際上在寫 rails 專案時,這種習慣並不好,每次的 git commit -m 應該都有明確的一項任務,比方說某個page、某張ticket、某個任務需求。

推薦在加入檔案時,指令下 git add -i ,也就是互動模式,進入後選2可以選擇哪些檔案要加入,3是移除已加入的檔案,4是加入untracked的檔案。

完成後選1可以確認狀態,然後再下 git commit -m 。

 

附註:git add -i 也可以用來移除不小心加入不該加入檔案的狀況,進去選3就可以移除本次 commit 不想上去的檔案。

笨笨小蟹 發表在 痞客邦 PIXNET 留言(0) 人氣()

git add 前,要記得先看一下 git status ,不需要 commit 的就不要加入。

git commit 之前,要確認一下 .gitignore ,以免把 test 或是 database 的資料也丟上去了。

工作平台上的 rails 指令,要記得加上 RAILS_ENV=production 。

太多判斷式的 code ,就丟到 helper 裡面包起來,程式也會比較易讀。

helper 裡面的 method ,一定要寫 return ,避免呼叫後不曉得是哪段程式 return 結果。

笨笨小蟹 發表在 痞客邦 PIXNET 留言(0) 人氣()

rails 在執行動作時,預設都是跑 development 環境,利用這一點可以避免下錯指令而把機器弄掛。

在 production 實際運作的平台上,指令一律必須加上 RAILS_ENV=production 才會跑出你想要的結果。

例如 rake db:migrate RAILS_ENV=production

笨笨小蟹 發表在 痞客邦 PIXNET 留言(0) 人氣()

雖然常常在用rake,但是運作方式跟寫法卻常搞不清楚。

railsenvy的這篇教學看完就可以大致了解rake。

rake教程英文版

rake教程中文版

笨笨小蟹 發表在 痞客邦 PIXNET 留言(0) 人氣()

指令 annotate

下了之後,會自動幫你塞 data schema 到 model 的 .rb 檔案中!

超好用!

笨笨小蟹 發表在 痞客邦 PIXNET 留言(0) 人氣()

Rails 寫好之後,常常需要去查看狀態,最原始的方法就是到 sql 裡面去觀察,不過 Rails 本身也有提供指令可用,就是下 script/console 。

進入console後,可以使用 model 的物件來查看狀態,比方說有個model是 Post ,就可以下 post.last 或是 post.all 等查看狀態。

笨笨小蟹 發表在 痞客邦 PIXNET 留言(0) 人氣()

Rails有很方便的helper可以使用,這是基於 RESTful 而產生的便利物。

但我在初接觸時,常常被名稱中的 s 搞亂,這部份詳細可以參考這篇文章裡的表格。

http://rails.pixnet.net/blog/post/22956704

helper 怎麼產生出來的原理我還沒學到,但是可以注意到,在 config/routes.rb 中加入的名稱,就是 controller 的名稱。

例如:map.resources :blogs

但是如果我的名稱命名時結尾沒有 s 要怎麼辦?這樣 routes 所產生的 helper 就會和常用的規則不一樣.......

所以命名時請養成加 s 的習慣,真的不想加也有解決辦法,就是寫成這樣

map.resources :blogs, :controller => "blog"

笨笨小蟹 發表在 痞客邦 PIXNET 留言(0) 人氣()

簡單總結,就是實作一個 blog

1. 開設 Rails 專案,設定好 Post model 的 CRUD(禁用 scaffold 寫)。

這部份有需要請參考深入淺出 RoR 系列的 4-1 ~ 4-3,當然前面要先看完。

http://rails.pixnet.net/blog/category/list/1603567

2. 附件功能,可使用 plugin 為 paperclip ,下指令 script/plugin install 安裝

http://github.com/thoughtbot/paperclip

裝好之後要按照 plugin 的 READ 做設定,請參考 Qucik Start 的部份

3. 建立 git 管理。先到 github 開新個的 repository ,然後按照 NEXT STEP 的步驟,把 origin master 推上去。

4. 權限控管功能,可使用 plugin 為 restful-authentication ,下指令 script/plugin install 安裝

http://github.com/technoweenie/restful-authentication

裝好之後要按照 plugin 的 READ 做設定,指令為 script/generate authenticated user sessions ,然後要 rake db:migrate

這樣網頁就會多出 login、logout、signup 等頁面

備註:這個 plugin 的功能是放在 lib/authenticated_system.rb

5. 使用者帳號功能裝好後,替各篇文章加上 user_id 的關聯,以及修改、刪除等功能得對應上 user_id 才有執行權限

6. 實作 comment 功能,用 script/generate 新增 comment 用的 controller。這部份直接參考 CRUD 的寫法。

7. 分頁功能,可使用 plugin 為 will_paginate ,下指令 script/plugin install 安裝

http://github.com/mislav/will_paginate

裝好之後不需要設定,直接參考README的範例去寫就可以

笨笨小蟹 發表在 痞客邦 PIXNET 留言(0) 人氣()

要寫 Rails 專案,而且想要一次到位,我覺得 git 必學,而且最好跟Rails同時練。

我師父教學時,先從 git 開始教,自己開一個 project 亂搞;github 就去註冊一個帳號,同樣也開 project,想辦法做 push/pull 的動作。

git add, git push, git pull, git commit, git branch, git checkout, git merge, git clone, git stash, git grep

這些都是之後寫 RoR 會常用的指令,先熟悉一下,然後再開始建立 Rails 專案,邊做邊學。

gitx 或 gitk 都是很不錯的圖形化介面,可以看到目前專案的主線、支線、commit 狀況等等;文字介面則有 tig 可以使用。

 

以下是學習可用的相關連結:

git Manual Page

Git 初學文件整理

Git 初學筆記 - 指令操作教學

Git 初學筆記 - 實作測試

Git 原始碼管理 (invalid link)

笨笨小蟹 發表在 痞客邦 PIXNET 留言(0) 人氣()

http://rails.pixnet.net/blog

想接觸Rails的新手必看必練!

http://blog.xdite.net/

不定期有文章,就算看不懂也要看過。

http://ihower.tw/training/

RoR教育訓練課程網站,一樣必看。

笨笨小蟹 發表在 痞客邦 PIXNET 留言(0) 人氣()

rake db:create

這是根據config/database.yml內容,直接到資料庫(看你.yml是設定哪種sql)產生database。

但是這樣直接下指令只會對development:之後有反應,如果也想讓test:或是production:的內容產生database,指令範例:

rake db:create RAILS_ENV=production (test自己比照辦理)


==============================

寫RoR的好處是,網路上有許多現成的plugin可以使用,不過要怎麼用呢?

一般而言,建議大家寫RoR搭配git使用(我師父也是這麼教),google之後你會發現很多資源都在github就有

plugin安裝的指令範例:

script/plugin install git://github.com/technoweenie/paperclip.git

切記不要直接下git clone git://github.com/technoweenie/paperclip.git,然後再安裝


==============================

script/destroy可以把script/generate手殘打錯生成的東西清掉。


==============================

有哪些目錄更動後,要重新跑script/server呢?

1. vendor/plugin/

2. lib/(但是裡面的tasks/不用)

3. config

笨笨小蟹 發表在 痞客邦 PIXNET 留言(0) 人氣()