rails_app/
├── app/ # 應用程式核心程式碼 (MVC)
│ ├── controllers/ # 控制器
│ ├── helpers/ # 視圖輔助模組
│ ├── models/ # 模型
│ └── views/ # 視圖模板
│ ├── layouts/ # 佈局模板
│ └── controller_name/# 各控制器對應視圖
├── components/ # 可重用元件 (較少使用)
├── config/ # 設定檔
│ ├── environments/ # 環境專屬設定
│ ├── database.yml # 資料庫連線
│ ├── environment.rb # 共用設定
│ └── routes.rb # 路由設定
├── db/ # 資料庫相關
│ ├── migrate/ # 遷移檔
│ └── schema.rb # 結構定義
├── doc/ # 產生的文件 (RDoc)
├── lib/ # 共用程式庫、任務
│ └── tasks/ # 自訂 Rake 任務
├── log/ # 日誌檔
│ ├── development.log
│ ├── production.log
│ ├── test.log
│ └── server.log
├── public/ # 靜態檔案與公開入口
│ ├── images/
│ ├── javascripts/
│ ├── stylesheets/
│ ├── index.html # 預設首頁
│ └── dispatch.fcgi # FastCGI 入口
├── script/ # Rails 腳本工具
│ ├── generate # 程式碼產生器
│ ├── server # 啟動開發伺服器
│ ├── console # 互動式控制台
│ ├── runner # 脫離 Web 執行程式碼
│ ├── benchmarker # 效能基準測試
│ ├── profiler # 程式碼分析
│ └── breakpointer # 斷點除錯
├── test/ # 測試程式碼
│ ├── fixtures/ # 測試資料
│ ├── functional/ # 控制器測試
│ ├── integration/ # 整合測試
│ ├── unit/ # 模型測試
│ └── mocks/ # 模擬物件
├── tmp/ # 暫存檔
│ ├── cache/ # 片段快取
│ ├── pids/ # 進程 ID
│ ├── sessions/ # 檔案型 Session
│ └── sockets/ # Unix sockets
└── vendor/ # 第三方程式碼
├── plugins/ # 插件
└── rails/ # 凍結的 Rails 框架 (可選)
包含模型、視圖、控制器三大核心,遵循嚴格命名慣例,Rails 自動載入無需 require。
database.yml:資料庫連線environment.rb:啟動初始化、共用配置environments/*.rb:環境專屬配置routes.rb:URL 路由規則boot.rb:啟動引導(Rails 2.0+)migrate/ 存放遷移檔,schema.rb 為目前結構快照,rake db:migrate 同步資料庫。
靜態資源(圖片、JS、CSS)直接由 Web 伺服器服務,不經 Rails 處理。index.html 為預設首頁,部署時通常移除或改導。
| 腳本 | 用途 |
|---|---|
| generate | 產生模型、控制器、遷移、脚手架等 |
| server | 啟動開發伺服器 (WEBrick/Mongrel/Thin) |
| console | 載入完整環境進入 IRB |
| runner | 在 Rails 環境下執行 Ruby 程式碼 |
| benchmarker | 比較多個程式碼片段效能 |
| profiler | 分析單一方法呼叫堆疊效能 |
| breakpointer | 斷點除錯伺服器 (需搭配 breakpoint()) |
| destroy | 移除 generate 產生的檔案 |
| plugin | 管理插件安裝/移除 |
unit/:模型單元測試functional/:控制器功能測試integration/:跨控制器整合測試fixtures/:YAML 格式測試資料mocks/:依環境區分的模擬物件第三方庫、插件、甚至凍結的 Rails 框架本體,確保專案可攜性與版本鎖定。