フォルダとファイルの役割って?

GUI開発環境もようやく整った。これで心置きなく使い方の勉強に集中できる。これからは中身がどんな仕組みなのか、じっくり見て行きたい。
scaffoldを実行すると、それだけでデータベースへのデータの追加、削除、表示が出来るようになってしまった。慣れてしまえば、作業としてはとっても簡単。しかし、それを実現するためのプロジェクトフォルダの中身を見てみると、とても複雑っぽい。
まずは、何がどんな役割なのか、調べてみた。

softwarebook2、プロジェクトフォルダの中身

app/ ......webアプリケーションのコード
  • controllers/ ......コントローラ:webブラウザから入力を受付て、モデルを利用して処理し、結果を適切なビューへ渡す。
    • application.rb
    • softwares_controller.rb (scaffold生成)*1
  • helpers/ ......機能を拡張するヘルパーモジュールを入れるらしい...。
    • application_helper.rb
    • softwares_helper.rb (scaffold生成)
  • models/ ......モデル:データのチェックやデータベース等のアプリケーション外部とやり取りする。
    • software.rb (scaffold生成)
  • views/ ......ビュー:webブラウザへの描画、つまりHTMLコードを出力する。
    • layouts/ ......共通するレイアウトを記述するrhtmlファイルを入れる。
      • softwares.rhtml (scaffold生成)
    • softwares/ ......コントローラで処理された結果を受けて、ページ固有の描画を行うrhtmlファイルを入れる。
      • _form.rhtml (scaffold生成)......以下のrhtmlファイルから呼び出されて、部分的に共通の描画を行う。
      • edit.rhtml (scaffold生成)......コントローラから呼び出されて、編集画面の描画を行う。
      • list.rhtml (scaffold生成)......コントローラから呼び出されて、一覧表示の描画を行う。
      • new.rhtml (scaffold生成)......コントローラから呼び出されて、新規登録の描画を行う。
      • show.rhtml (scaffold生成)......コントローラから呼び出されて、個別表示の描画を行う。
public/ ......ルートディレクトhttp://0.0.0.0:3000/の表示や、共通のイメージ、JAVAスクリプトスタイルシートなど。
config/ ......各種設定。
  • environments/......開発環境ごとの設定らしい。
    • development.rb
    • test.rb
    • production.rb
  • boot.rb......このファイルは変更せず、environments/、environment.rbで設定するようだ。
  • database.yml......データベースとの接続設定。(ユーザ名、パスワードなど)
  • environment.rb......RubyRailsの環境設定。(文字コードの設定など)
  • routes.rb......URLとメソッド呼び出しの対応付けの設定。
db/......マイグレーションによるデータベースのテーブル、フィールドの設定。
  • migrate/
    • 001_create_softwares.rb(model生成)*2
  • schema.rb(migrate生成)*3


ここまでが、scffoldが提供する機能に関連したファイルだと思う。以下は、まだ未使用。



components/......モデル、ビュー、コントローラがまとまったミニアプリケーションを入れておくらしいが、詳細不明。
doc/......このwebアプリケーションの説明書を入れるようだ。
lib/......開発作業で使う自作のタスクを入れるようだ。
log/......開発作業の記録が残るようだ。
script/......開発作業で使うRails提供のスクリプトが入っている。
test/......テストに使うファイルを入れる。
tmp/......一時的なファイルが入っている。どんな役割のものかは不明。
vendor/......プラグインなどのRailsの機能拡張ファイルを入れる。

Rakefile......rake migrate等を実行する時に使うようだ。
README......Ruby on Railsの説明書、開発手順など。

*1:script/generate scaffoldにより作成される。

*2:script/generate modelの実行により作成される。

*3:rake migrateの実行により、現在のデータベースの定義ファイルがここに作成される。