Ruby on Railsとは
layout: page
説明
Rubyにより構築されたWEBアプリケーションフレームワーク
設計哲学
- 設定より規約(CoC)
- 同じ作業を繰り返さない(DRY)
特徴
- MVCモデルを採用
- ジェネレータ(scaffold)
- アジャイルな開発に適している
- ルーティング
- テンプレート
- データベースの管理方法
規約
layout: page
ファイル名の規約
ディレクトリ | ファイル | クラス名 | 親クラス |
---|---|---|---|
app/controllers/ | xxxs_controller.rb | XxxController | ApplicationController |
app/models/ | xxx.rb | Xxx | ActiveRecord::Base |
app/views/xxxs/ | yyy.html.erb | ||
app/views/layouts/ | xxx.html.erb | ||
app/helpers/ | xxxs_helper.rb | ||
db/migrate/ | YYYYMMDDhhmiss_mmm_xxxs.rb | MmmXxxs | ActiveRecord::Migration |
test/fixtures/ | xxx.yml |
- xxx : コントローラ名、モデル名
- yyy : アクション名
- mmm: マイグレーション名
- YYYYMMDDhhmiss は作成日時が入る
テーブル定義についての規約
テーブル名とクラス名
- テーブル名は複数形
- 単語の区切りはアンダーバー(_)
- 対応するクラス名は単語の先頭を大文字にして _ を取り除いたもの
キーのカラム名
- 主キーのカラム名は「id」
- 外部キーのカラム名は「テーブル名の単数_id」
日付関連のカラム名
- DATE型のカラムには名前を「受動態_on」
- TIMESTAMP型のカラムには名前を「受動態_at」
- 更新日時、作成日時は「updated_at」「created_at」
結合テーブル
- 関連させたいテーブル名をくっつけた名前
- カラム「id」を作らずに、関連させる2つのキーのセットを主キー
Railsの実行環境
layout: page
概要
実行するときの3つの実行環境
- development
- test
- production
development
概要
開発中に使用する環境
特徴
- 実行環境の指定がなければこの環境で起動
- ログレベルはdebug
- 書き換えた内容がすぐに反映
- キャッシュが無効
test
概要
自動テストで使用する環境
特徴
- ログレベルはdebug
- キャッシュが有効
production
概要
本番稼働で使用する環境
特徴
- ログレベルはinfo
- キャッシュが有効
- 書き換えた内容の反映には、再起動が必要
フォルダ構造
layout: page
フォルダ一覧
ファイル名 | 説明 | |
---|---|---|
Gemfile | gemの依存関係を指定できるファイル | |
README.rdoc | 説明書 | |
Rakefile | ターミナルから実行可能なタスク | |
config.ru | Rackの設定 | |
app/ | アプリケーションを格納するディレクトリ。主要なプログラムはこの配下に格納 | |
assets/ | スタイルシートや画像などを格納するディレクトリ | |
assets/images/ | スタイルシートや画像などを格納するディレクトリ | |
assets/javascript/ | 公開するJavaScriptのスクリプトを格納するディレクトリ | |
assets/stylesheets/ | 公開するスタイルシートを格納するディレクトリ | |
controllers/ | コントローラを格納するディレクトリ | |
controllers/application_controller.rb | アプリケーションで共通のコントローラ | |
helpers/ | ヘルパーを格納するディレクトリ | |
helpers/application_controller.rb | アプリケーションで共通のヘルパー | |
models/ | モデルを格納するディレクトリ | |
viewa/ | ビューを格納するディレクトリ | |
views/layouts/ | ビューのレイアウトとして使用するRHTMLテンプレートを格納するディレクトリ | |
views/layouts/application.html.erb | アプリケーションで共通のレイアウト | |
config/ | プロジェクトの設定ファイルを格納するディレクトリ | |
config/environments/ | 環境単位の設定ファイルを格納するディレクトリ | |
config/initializers/ | 初期化ファイルを格納するディレクトリ | |
config/locales/ | 辞書ファイルを格納するディレクトリ | |
db/ | データベースの設定ファイルを格納するディレクトリ | |
migrate/ | マイグレーションファイルを格納するディレクトリ | |
doc/ | ドキュメントを格納するディレクトリ | |
lib/ | 複数のアプリケーション間で共有するライブラリを格納するディレクトリ | |
assets/ | 自分で生成したライブラリを格納するディレクトリ | |
tasks/ | 自分で生成したRakefileを格納するディレクトリ | |
log/ | ログファイルが格納されるディレクトリ。ログファイルはアプリケーションと環境ごとに作成される | |
public/ | Web上に公開するファイルを格納するディレクトリ | |
script/ | 開発に役立つプログラムを格納されるディレクトリ | |
about | Rubyのバージョン情報、アプリケーションで仕様されているRailsのコンポーネント、およびその他の設定。情報を表示するスクリプト | |
breakpointer | ブレークポイントが設定されたアプリケーションと通信しながら、アプリケーションの動作状況を対話的に調査するクライアントスクリプト | |
consoil | irbを使ってアプリケーションのメソッドを対話的に実行できるスクリプト | |
destroy | generateによって生成されたファイルを削除するスクリプト | |
generate | コードジェネレータ | |
plugin | pluginスクリプトにより、Railsの機能を拡張するプラグインのインストールと管理するスクリプト | |
runner | アプリケーション内のメソッドをWebコンテント外で実行するスクリプト | |
server | Webサーバ上でアプリケーションを実行するスクリプト | |
benchmarker | アプリケーション内の1つまたは複数のメソッドのパフォーマンス値を算出するスクリプト | |
profiler | アプリケーション内のコードを対象に、実行時にプロファイルの要約を生成するスクリプト | |
tmp/ | キャッシュなど、一時的なファイルを格納されるディレクトリ | |
test/ | アプリケーションのテストに使うファイルを格納するディレクトリ | |
vendor/ | ライブラリや他のアプリケーションで共有するような外部ライブラリを格納するディレクトリ | |
rails/ | rails:freeze:gemsタスクでバージョンを固定したRailsを格納するディレクトリ | |
plugins/ | プラグインを格納するディレクトリ |
アプリケーション作成の流れ
layout: page
-
作業ディレクトリの作成
$ mkdir rails $ cd rails
-
アプリケーション作成
$ rails new demo
-
ディレクトリ移動
$ cd demo
-
ジェネレータ
$ rails generate controller Welcome index
-
ルーティング
$ vim config/routes.rb Rails.application.routes.draw do get 'welcome/index' root 'welcome#index' end
-
サーバ起動
$ rails server # http://localhost:3000にアクセス