参考書を読んだメモ : 独習Ruby on Rails 4章
独習Ruby on Rails
- セールしていたので Kindle で買いました
- せっかく買ったので勉強のために読んだメモ取っていきます
Rails 全体の仕組み
Rails コンポーネントとMVCの基礎知識
Webアプリケーションの構造とMVC
- M: モデル
- データリソース管理
- V: ビュー
- アプリケーションを利用するユーザーとの接点
- 表現(見せ方)
- C: コントローラー
- リクエストに応じてデータベース操作や画面出力操作の指示を出す
Rails コンポーネント
- モデル: Active Record
- ビュー: Action View
- コントローラー: Action Controller
- ルーター: Action Dispatch
- Active Record
- Active Model
- Action Record の機能のうち、データベースとの連携を除くバリデーションやコールバックなどの機能を利用したいときに組み込む
- Action View
- ビューテンプレートに対し、ルックアップ(データの埋め込み)とレンダリング機能を提供
- Action Pack(Action DispatchとAction Controller)
- アクションの振り分け(ルーター)、アクションの制御(コントローラー)機能の提供
- Action Mailer
- メールの機能
- Action Cable
- リアルタイム通信機能の提供
- Active Job
- バックグラウンドで実行できる非同期なジョブの生成
- キューイング管理
- Active Support
- Ruby の拡張メソッドなどを提供
- Active Storage
- Active Record と連携した画像動画などのアップロード、参照機能を提供
- Railties
Railsがデフォルトで使用するツールとライブラリ
- Puma
- Webサーバーの一つ
- スレッドを使用した並列処理を実現できる
- Rack
- ERB
- Rake
Rails の ディレクトリ構成
- app
- アプリケーションに関する情報を管理する
- モデル、コントローラー、ビューなど
- bin
- アプリケーションの起動などに使用するスクリプトを管理する
- config
- 実行環境に関する設定情報が入っている
- db
- データベース関連の設定情報を管理する
- schema.rb も存在する
- migrate
- マイグレーションファイル
- lib
- 複数のアプリケーション間で共有するライブラリを管理する
- Rake タスクなど
- public
- 静的な公開リソースを置くためのディレクトリ
- storage
- Active Storage のローカルストレージ
- tmp
- 稼働中の一時的な情報であるキャッシュ、プロセスID、セッションなどを管理する
- vender
- サードパーティ製のコードなどを配置する
- 直下のファイル
- app 内のディレクトリとファイル
- assets
- アセットファイルを管理する
- アセットとはビューに組み込むHTML以外のCSS, JavaScriptファイルを配置する
- アセットファイルを管理する
- controllers
- コントローラークラスを管理する
- concerns は共通コードを管理する
- helpers
- ヘルパーモジュールを管理する
- jobs
- ジョブクラスを管理する
- mailers
- メーラークラスを管理
- models
- モデルクラスを管理する
- concern は共通コード
- view
- ビューテンプレートを管理
- layouts
- 共通のレイアウトを管理
- 各コントローラー名のディレクトリ
- 各コントローラーに対応するビューテンプレート
- assets
- config ディレクトリ
- 実行環境に関する設定情報が入っている
- environments
- 実行環境ごとの設定情報を管理する
- initializers
- アプリで使用する初期化情報の設定ファイル
- locales
- 各国言語別の表示文を管理する
- application.rb
- 各実行環境に共通の設定を行うファイル
- environments の設定が優先される
- initializers にある rb ファイルの初期化情報を組み込む
- boot.rb
- Gemfile の場所を管理し、起動ごとにGemfileの一覧から gem のセットアップを行う
- cable.yml
- Action Cable 用の環境別のデフォルトキーアダプターを管理する
- credentials.yml.enc
- 暗号化キーなどを管理する
- Rails が自動的に管理するもの
- database.yml
- 各実行環境において、データベースの設定を行う
- environment.rb
- Rails サーバー起動時に、application.rb の初期化を行うファイル
- master.key
- credentials.yml.enc の情報を複合するためのキーが保存されている
- routes.rb
rails コンソール
- methodsメソッド
> ActiveRecord::Base.methods => どのようなメソッド持ってるか出力
rails コンソールでルーターの状況を検証する
- Rails コンソールでは、appオブジェクトを利用してルートの実装状態を確認することができる
> app.books_path => "/books" > app.edit_book_path(1) => "/books/1/edit" > app.get "books" Started GET "books" for 127.0.0.1 at ... => 200
Rakeタスク
- 今は rails コマンドに統合されている
- マイグレーションやテストなどのタスクの実行ができる
- rails -T でタスク一覧が表示できる
- rails -T 'ro' などのように後ろに文字列パターンを指定するとパターンが絞り込める
主なコマンド
- rails routes
- ルーターの実装状況を確認できる
- config/routes.rb ファイルに設定されてるルート一覧を表示する
- rails db:migrate
- rails db:create
- Rails側から連携するデータベース領域を確保する
- SQLite3の場合はデフォルトで確保するため不要
- rails db:setup
- データベースをスキーマから再生成するコマンド
- rails db:drop
- データベースを削除する
- rails db:reset
- drop + setup を一連で行う
- rails db:seed
- データベースの存在するテーブルへあらかじめ用意した初期データを投入する際に使用する
- rails test
- アプリケーションテストをするときに使用する
- rails db:fixtures:load
- rails stats
- 現在のアプリケーションの統計情報を表示する
- コントローラーの総情報数、メソッドの数などが表示される
- rails notes
- コメントのTODO, FIXME, OPTIMIZE のキーワードを抽出し表示する
- 便利そう
- rails about
- Rails 関連ライブラリのバージョン確認する
- rails log:clear
- 現在のログファイルを空にする