1. ホーム
  2. スクリプト・コラム
  3. ルビートピックス

Ruby on Railsで構築するアプリケーションの基本的なディレクトリ構造のまとめ

2022-01-30 18:14:38

rails new appnameでRailsアプリを生成した後、ツリーでRailsアプリのディレクトリ構造を確認することができます。

ディレクトリ構造

アプリケーションディレクトリには、app, config, db, doc, lib, log, public, script, test, tmp, vendor の11個のディレクトリと、config.ru, Gemfile, Gemfile.lock, Rakefile, README.rdoc の5個のファイルが配置されます。

ディレクトリについては、appディレクトリのファイルから順に、後で一つずつ説明します。

config.ru Railsアプリケーションの起動に使用されるRackの設定ファイル

require ::File.expand_path('. /config/environment', __FILE__)
run Myapps::Application


Gemfileは、Railsアプリケーションが依存するGemsを設定します(bundle installでインストールすると、Gemfile.lockが生成されます)。

source 'https://ruby.taobao.org/'

gem 'rails', '3.2.1'
gem 'sqlite3'

# Gems used only for assets and not required
# in production environments by default.
group :assets do
 gem 'sass-rails', '~> 3.2.3'
 gem 'coffee-rails', '~> 3.2.1'
 gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'
gem ... ...



Rakefile は、ターミナルで実行可能な Rake タスクをロードするために使用されます。
<! -more-->。

treeコマンドで表示すると、次のようなディレクトリとファイル構成になります。

.
├─ app
│ ├── assets
│ │ ├── images
│ │ │ ├── rails.png
│ │ ├── javascripts
│ │ │ └─ application.js
│ │ │ └─ stylesheets
│ │ │ └─ application.css
│ ├── controllers
│ │ └── application_controller.rb
│ ├── helpers
│ │ └── application_helper.rb
│ ├── mailers
│ ├── models
│ └── views
│ └── layouts
│ └── application.html.erb
├── config
│ ├── application.rb
│ ├── boot.rb
│ ├── database.yml
│ ├── environment.rb
│ ├── environments
│ │ ├── development.rb
│ │ ├── production.rb
│ │ └── test.rb
│ ├── initializers
│ │ ├── backtrace_silencers.rb
│ │ ├── inflections.rb
│ │ ├── mime_types.rb
│ │ ├── secret_token.rb
│ │ ├── session_store.rb
│ │ ├── wrap_parameters.rb
│ ├── locales
│ │ └── en.yml
│ └── routes.rb
├── config.ru
├── db
│ └── seeds.rb
├── doc
│ └── README_FOR_APP
├── Gemfile
├─ lib
│ ├── assets
│ └── tasks
├── log
├── public
│ ├── 404.html
│ ├── 422.html
│ ├── 500.html
│ ├── favicon.ico
│ ├── index.html
│ └── robots.txt
├── Rakefile
├── README.rdoc
├─ script
│ └─ rails
├─ test
│ ├── fixtures
│ ├── functional
│ ├── integration
│ ├── performance
│ │ └── browsing_test.rb
│ ├── test_helper.rb
│ └── unit
├─ tmp
│ └── cache
│ └── assets
└─ vendor
  ├─ assets
  │ ├── javascripts
  │ └── stylesheets
  └── plugins


アプリケーションディレクトリ(app/)

appディレクトリはRailsアプリケーションのメインディレクトリで、モデルModels、コントローラControllersw、ビューViews、メーラーHelper、アセスメントなどのドキュメント用にそれぞれサブディレクトリが分かれています。

モデル-コントローラ-ビュー

モデル、コントローラ、およびビューは別々に保存されます。モデルはapp/modelsディレクトリに、コントローラはapp/controllersディレクトリに(さらにコントローラを整理するためにディレクトリを使用することができます、例えば、cpanelディレクトリはadminバックエンドに関連するコントローラを格納するために使用します)、ビューはapp/viewsディレクトリに、ビューモデルはapp/view/ layoutsディレクトリ(デフォルトはappliton.html.erb)に格納されています。

アセット静的ファイル

Assets の静的ファイルは、app/assets ディレクトリの app/assets/images, app/assets/stylesheets, app/assets/javascripts ディレクトリに格納されます。

ヘルパー

ヘルパーは、より複雑な HTML を作成するためにビューで使用できる小さなメソッドです。あらかじめ定義されたヘルパーファイル名はコントローラに対応しますが、必須ではありません。

設定ファイルディレクトリ (config/)

Railsは"convention over configuration"の原則に従っていますが、それでも設定しなければならない部分があります。設定ファイルディレクトリには、アプリケーション設定ファイルapplication.rb、データベース設定ファイルdatabase.yml、ルート設定ファイルroutes.rb、複数の環境設定config/environmentsディレクトリ、その他の初期設定ファイルconfig/initializersがあります。

Rails起動時のアプリケーション設定

Railsアプリケーション(rails consoleやrails serverなど)を起動すると、以下の3つのドキュメントが実行されます。

boot.rbはBundler環境をロードします。このファイルはRailsによって自動的に生成されるので、修正する必要はありません。

require 'rubygems'

# Set up gems listed in the Gemfile.
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('... /... /Gemfile', __FILE__)

require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])



application.rbはRailsのgemsとそれに依存する他のgemsをロードし、続いてRailsアプリケーションをセットアップします。
require ファイル.expand_path('. /boot', __FILE__)

require 'rails/all'

if defined?(Bundler)
 # If you precompile assets before deploying to production, use this line
 Bundler.require(*Rails.groups(:assets => %w(development test)))
 # If you want your assets lazily compiled in production, use this line
 # Bundler.require(:default, :assets, Rails.env)
end

module Myapps
 class Application < Rails::Application
  # Settings in config/environments/* take precedence over those specified here.
  # Application configuration should go into files in config/initializers
  # ... ...

  # Configure the default encoding used in templates for Ruby 1.9.
  config.encoding = "utf-8"

  # Configure sensitive parameters which will be filtered from the log file.
  config.filter_parameters += [:password]

  # ... ...

  # Enable the asset pipeline
  config.assets.enabled = true

  # Version of your assets, change this if you want to expire all your assets
  config.assets.version = '1.0'
 end
end
environment.rb executes all the initializers, which are also generated by Rails and do not need to be modified.
# Load the rails application
require File.expand_path('... /application', __FILE__)

# Initialize the rails application
Myapps::Application.initialize!



イニシャライザー
environment.rbから呼び出される、デフォルトのシステム初期化子は、backtrace_silencers.rb, inflections.rb, mime_types.rb, secret_token.rb, session_store.rb, wrap_parameters.rb とその他6つ。選択的モバイル例外追跡、単一-複数変換、 mime_types, クッキー情報暗号化のトークン、デフォルトセッション保存、パラメータラップなどの使用目的に対応しています。

### データベース格納ディレクトリ(db/)

### プログラムのヘルプドキュメント (doc/)

### 共有クラスやモジュールファイル(lib/)。

いくつかの共有クラスやモジュールは、このディレクトリに格納することができます。また、Rakeのタスクは、lib/tasksディレクトリに格納することができます。

### ログディレクトリ (log/)

### Public files ディレクトリ (public/)

Webサーバーの場合、直接アクセス可能なファイルディレクトリです。一般的な画像、スタイルシート、JavaScriptを格納するために使用できます (Rails 2.x)。

###Railsのスクリプトファイル(script/)

### テストファイルディレクトリ (test/)

ユニットテスト、機能テスト、および統合テストのファイルを格納するために使用します。

### 一時ファイルディレクトリ(tmp/)

### サードパーティープラグインのディレクトリ(vendor/)を指定します。

bundler を使って gems プラグインをインストールする場合、そのディレクトリにインストールするように選択することもできます。例えば bundle install --path vendor/bundle のようにします。