Web Development 的學習之旅
顯示具有 rails 標籤的文章。 顯示所有文章
顯示具有 rails 標籤的文章。 顯示所有文章

2007/06/28

Ruby & Rails 常用的命令列

[更新中]


xx@xx.xx [~/path]# ruby -cw [filename.rb] <-- -c=check, -w=warning
xx@xx.xx [~/path]# ruby -v <-- version
xx@xx.xx [~/path]# ruby -e 'puts "Code demo!"' <-- -e=execute code
xx@xx.xx [~/path]# irb
xx@xx.xx [~/path]# ruby -r profile [filename.rb]
xx@xx.xx [~/path]# ri
xx@xx.xx [~/path]# erb
xx@xx.xx [~/path]# rails /path/to/your/app
xx@xx.xx [~/path]# ruby script/generate model [model_name]
xx@xx.xx [~/path]# ruby script/generate controller [controller_name] [method_name]
xx@xx.xx [~/path]# ruby script/server
xx@xx.xx [~/path]# ruby script/console

2007/06/16

莫名的 require 問題

為了在 rails 使用全文檢索, 因而使用了"雪貂" -> ferret & acts_as_ferret.

由於不能用 svn, 所以無法以 script/plugin 安裝 acts_as_ferret, 只好以 gem 安裝.
在 gem 安裝完畢後, 結果發生了在 environment.rb 裡 require 找不到 acts_as_ferret 的問題.

$GEM_HOME, $GEM_PATH 設定檢查過了, 連 .bashrc 檔也檢查過, Google 大神也拜了, 應該沒問題才對...但問題還是存在. 在絕望時想想乾脆重來算了, 將一些自己安裝的 gem 全部 uninstall, 重新安裝. 安裝一個就測試一次, 結果發現 require 檔案找不到的問題不見了.

問題來得莫名, 消失的也莫名, 浪費了不少時間.

2007/06/13

讀書心得: Ruby on Rails 專業網站案例實作

目前閱讀進度是完成 Ch3. 這裡的進度不是指用看的, 而是一步步完全依書裡的步驗實作出來.

書中的內容是以一個網路書店的案子來貫穿全場, 搭配 Scrum(輕量級的開發流程), 並運用 Rails 的 test framework, 實踐 TDD.

Ch1. 簡短地介紹環境及安裝, 利用 Rails 快速建立網路書店的基本框架, 介紹 Rails 的 MVC 概念, 運用 generate 指令完成一個 About 的頁面.

Ch2. 作者管理(CRUD, 單一Table). 建立 ActiveRecord 模型(Model), 及 controller&view, 搭配單元測試及功能測試, 運用 rake, migration, validation. 全場完全實踐 TDD.

Ch3. 書庫管理(CRUD, 關聯性模型). 使用 scaffold 快速產生 CRUD 程式碼, 建立 fixture 資料, 建立1對多,多對多關聯的 ActiveRecord Model, 建立整合測試, 安裝 RedCloth gem, file_column plugin. 不完全 TDD, 重點在整合測式.

目前的感覺是這本書可能不適合"完全"的初學者. 不過若是開發環境已經備妥(mysql, ruby, ror, editor...等), 可以進行 coding 的話, 遇到的狀況會較少些.

由於大部份都是自己 coding, 所以不時遇到因為疏忽而漏了字母, 或多打了字母, 造成 test 失敗, 怎麼看就是看不到那個錯誤的地方. 不過幸好使用 TDD, 加上使用了 BeyondCompare, 使整個過程尚稱順利, 許多問題都蠻快解決了.

這本書翻得還不錯, 不過目前還是發現少數地方有錯誤, 不知是原文錯還是中文版錯. 這本書確實是以實作教學為導向, 不是以概念教學為導向, 因此遇到一些不瞭解的概念, 需要自行找答案.

大體來說這本書我覺得蠻適合我的, 它可以讓我很快速地瞭解整個實作的過程...在沒用過 ruby 及 rails 的情形下, 並確實地把網站做出來.(即使很多概念還不甚瞭解)

目前為止除了在 migration 裡使用到建立 constraint(foreignkey) 的 SQL 外, 其餘完全使用 ActiveRecord, 沒有用到 SQL command, 讓我覺得輕鬆多了. 在做整合測試時建立 DSL 使用到的語法, 也令我印象深刻, 這是我目前為止見過最接近的 use case 的 code, 非常地"平易近人".

將 fixtures 資料匯入 Development database


xxx@xxx.xxx [~/path]# rake db:fixtures:load

上述語法可以將 test 裡面 fixtures 的資料匯入 Development 專用的 Database

不過由於 table 複雜之後就會有許多的 constraint 出現, 必須按照特定的順序匯入, 否則很容易出現 mysql 的 error.

要指定順序必須要在後面加上 FIXTURES=yml_file1,yml_file2 做為參數, 例子如下:

xxx@xxx.xxx [~/path]# rake db:fixtures:load FIXTURES=authors,publishers,books,authors_books

那麼就會依照指定的順序將資料匯入 Database.