close

這一章我們要講的是 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。

arrow
arrow
    全站熱搜

    rails 發表在 痞客邦 留言(0) 人氣()