Ruby on Railsで構築するアプリケーションの基本的なディレクトリ構造のまとめ
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 のようにします。
関連
-
PythonのFlaskフレームワークでSERVER_NAMEドメイン名を設定するためのチュートリアル
-
挿入ソートアルゴリズムのRuby実装と高度な双方向挿入ソートコード例
-
Rubyのブロック機能をより深く理解するために
-
Rubyのgemパッケージ管理およびgemソース構築のチュートリアル
-
Rubyのinstance_evalメソッドとclass_evalとの比較
-
Rubyのデザインパターン開発におけるobserverパターンの一例
-
Rubyのデザインパターン。アダプタパターン実践ガイド
-
Rubyのコードコメントを書く際に気をつけるべき事項
-
Rubyの基本構文
-
Rubyのメソッドを検索して実行する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン