Rails Tree Cheat Sheet


[Ruby on Rails](http://rubyonrails.org/)はWebアプリケーションのフレームワークです。
レイヤー化アーキテクチャが優れており、ファイルの構造が厳密に規約があります。

ファイルの構造は、自己で追加したり[Gem](https://rubygems.org/)で機能を拡張して増えます。
プロジェクトにより違いがありますが、よく使う構造をチートシートにまとめました。

## Application Directory

* 開発の主となるエリア

```bash
├ app/                                  # アプリケーション
    ├ assets/                           # フロントエンドで利用するファイル
        ├ images/                       # gif, jpeg, png ...
        ├ javascripts/                  # js, coffee
            ├ application.js            # Rails:Application
            └ users.js.coffee           # Rails:Scaffold (User)
        ├ stylesheets/                  # css, scss
            ├ application.css           # Rails:Application
            ├ scaffold.css              # Rails:Scaffold
            └ users.css.scss            # Rails:Scaffold (User)
    ├ controllers/                      # リクエストとレスポンスの制御
        ├ concerns/                     # Rails:Aspect Oriented Programming
        ├ application_controller.rb     # Rails:Application
        └ users_controller.rb           # Rails:Scaffold (User)
    ├ decorators/                       # viewsの補助          [ gem `draper` ]
        └ user_decorator.rb             # Rails:Scaffold (User)
    ├ helpers/                          # viewsの補助
        ├ application_helper.rb         # Rails:Application
        └ users_helper.rb               # Rails:Scaffold (User)
    ├ models/                           # ビジネスロジック (エンティティ)
        ├ concerns/                     # Rails:Aspect Oriented Programming
        ├ support/                      # モデルの支援
            └ settings.rb               # configの支援         [ gem `settingslogic` ]
        └ user.rb                       # Rails:Scaffold (User)
    ├ policies/                         # 認可の補助           [ gem `pundit` ]
        ├ application_policy.rb         # Rails:Application
        └ user_policy.rb                # Rails:Scaffold (User)
    ├ services/                         # ビジネスロジック (エンティティ以外)
    ├ views/                            # 出力インターフェイスのデザイン
        ├ layouts/                      # 基本レイアウト
            └ application.html.erb      # Rails:Application
        ├ users/                        # Rails:Scaffold (User)
            ├ edit.html.erb             # 編集 Rails:Scaffold (User)
            ├ index.html.erb            # 一覧 Rails:Scaffold (User)
            ├ new.html.erb              # 追加 Rails:Scaffold (User)
            ├ show.html.erb             # 表示 Rails:Scaffold (User)
            └ _form.html.erb            # 編集,追加の部品 Rails:Scaffold (User)
    └ workers/                          # 遅延処理             [ gem `sidekiq` ]
```

## Other Directory

* 開発の補助となるエリア

```bash
├ config/                               # 設定情報
    ├ locales/                          # 言語
        ├ defaults                      # 基本の言語
            ├ en.yml                    # 基本の言語 (英語)
            └ ja.yml                    # 基本の言語 (日本語)
        ├ models                        # モデルの言語
            ├ user                      # Userの言語
                ├ en.yml                # Userの言語 (英語)
                └ ja.yml                # Userの言語 (日本語)
    ├ database.yml                      # データベース
    └ routes.rb                         # ルーティング
├ db/                                   # データベース
    ├ migrate/                          # マイグレーション
    ├ development.sqlite3               # データベース本体
    └ schema.rb                         # データベース構造
├ doc/                                  # ドキュメント
├ lib/                                  # ライブラリ
    └ tasks                             # rake task
├ log/                                  # ログの出力先
├ public/                               # フロントで利用するファイル
├ test/                                 # テストファイル
├ spec/                                 # テストファイル      [ gem `rspec-rails` ]
    ├ cassettes/                        # HTTP テストデータ   [ gem `vcr` ]
    ├ factories/                        # Model テストデータ  [ gem `factory_girl` ]
    ├ features/                         # シナリオテスト      [ gem `capybara` ]
    ├ support/                          # テストの支援        [ gem `rspec-rails` ]
    ├ rails_helper.rb                   # テストの補助        [ gem `rspec-rails` ]
    └ spec_helper.rb                    # テストの補助        [ gem `rspec-rails` ]
├ tmp/                                  # テンポラリファイル
└ vendor/                               # 外部ライブラリ
```

## Root Files

* 開発の`README`や定義ファイル等

```bash
├ .bundle                               # Gemの補助         [ gem `bundler` ]
├ .env                                  # 設定の補助        [ gem `dotenv-rails` ]
├ .git                                  # `Git`のリポジトリ
├ .gitignore                            # `Git`から除外
├ .pryrc                                # REPL環境          [ gem `pry-rails` ]
├ .rspec                                # rspecオプション   [ gem `rspec` ]
├ config.ru                             # Rackup            [ gem `rack` ]
├ Gemfile                               # `Gem`の一覧
├ Gemfile.lock                          # `Gem`の依存関係
├ Guardfile                             # テストの自動化    [ gem `guard-rspec` ]
├ Procfile                              # `Run`の補助       [ gem `foreman` ]
├ Rakefile                              # Rake Task         [ gem `rake` ]
└ README.md                             # 最初に読むドキュメント
```