這一章我們要講的是 Rails 目錄的結構。
rails [project_name] 後會產生一個 project_name 的目錄夾
裡面包含了以下檔案
app/
Controller / Helper / Model / View 的檔案放在這裡。
以圖示簡單講解 MVC 運作的概念。
config/
放置一些 config file。
database.yml 是 db server 的設定
routes.rb 控制 path
enviroment.rb 與 enviroments/*.rb 環境設定( production / test/ development)
mongrel_cluster.yml (如果你是用 mongrel_server,設定檔也是丟這裡)
db/
schema.rb 記錄目前 database 的 schema 狀態,而 migrate 裡面放置的是 db migrate 檔,
Rails 相當方便的一點是,寫好 migrate 可以自動產生相對應的 db 欄位 / 對欄位打 index / 刪除欄位..等等。
doc/
沒啥作用,你可丟一些開發文件進去。
lib/
自己寫的一些 library。
比如說 你看到別人寫好一隻方便的 library,丟進 lib/ 下 就可以在 Rails 底下直接使用。
yahoo bbauth 我也是把該支 rb 檔,丟到 lib/ 下,在 account_controller 下 直接取用的。
log/
運行的 log 檔都在這裡
public/
一些靜態檔案。
http://localhost:3000/stylesheets/application.css
對應的位置是 public/stylesheets/applcation.css
當然使用者上傳的檔案也是建議放在這裡。上傳檔案(plugin : attachment_fu ) 的教學有空我們會在後面幾章提到。
script/
script/console :console 模式,類似 irb,相當方便。
script/generate:可以拿來生 model , controller 等等...
script/server :跑起 rails 內建的 web server,原先的 weblrick 在Rails 蠻後面的版本被取代為 mongrel。通常只拿來 development 用。
production 環境常見的作法是用 mongrel_cluster 叫起一堆 mongrel,前面用 apache 或 nginx 做 reverse proxy。
通常寫 daemon,我也會丟在 script 下。
test/
就是寫 test case 的地方。當然我很懶惰,很少寫 test case,所以這邊有空想到再補好了...。
tmp/
這些目錄名稱直觀的說明了一切,一些臨時的 pid , session , cache , sockets 都丟這裡。
vendor/
Rails 最為人稱道的就是 plugin,很多常見的功能經過這幾年發展之後,
已經有許多好心人寫好了方便的 plugin。(比如認證、上傳圖片...)
只要 script/plugin install [plugin_repositry] 照著 README 就可以輕鬆的 implement。
Ruby 其實也有類似 Perl 的 CPAN 的機制,稱之為 gem。
通常在寫 rails 時有時候也會用到這些好用的 gem。
但是,這些 gem 有時候並不是 well-work 的,有時需要針對 bug 或者是自己想要實現的一些特殊機制上 patch。
但是對 system 安裝的 gem 打 patch 實在是一件很蠢很暴力的事。
這時候也可以 gem unpack [gem_name] 到 vendor/plugin 下。
這樣 rails require 的 gem 就會去吃你 patch 過的特製版。
- rails/ (通常是沒有此目錄的)
Rails 是一個不斷發展中的 Framework。我們透過 gem 安裝的往往是穩定的版本。但是,trunk 中的 rails 有時候會有一些神秘好用的 feature。
或者是你的 application 需要運行在一個特製版本的 rails 下。
這時候可以把 trunk 版 / 特製版 的 rails 放到 vendor/rails 。
運行的就是自訂版本的 rails。
留言列表