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にアクセス