RackとRailsの関係
- Rackとは
- Webアプリケーションサーバ(Puma, Unicorn)とWebアプリケーションフレームワーク間のインターフェイスを共通化した仕様であり、実装となるライブラリである。
- RailsがPuma上で動作しているのもRackのおかげ
- Rackとフレームワークの間で機能するRackミドルウェアという機構を持つので、処理を挟むことができる。
- Rackに必要なインターフェイス
-
callメソッドを定義する
-
callメソッドは、envもしくはenvironmentと命名する引数を一つ受け取る
-
callメソッドは次の値を配列で返さなければならない
- HTTPステータスコードを表す数値オブジェクト
- HTTPヘッダーを表すハッシュオブジェクト
- レスポンスボディとなる文字列を含んだ配列風オブジェクト
-
例
class App def call(env) status = 200 headers = {"Content-Type" => "text/plain"} body = ["sample"] [status, headers, body] end end
-
Rackが利用するエントリーポイント用のファイルとしてconfig.ruを作成する
require "rack" require_relative "app" run App.new # 例のAppクラスのインスタンスをrunに渡す
-
rackup
でRackアプリケーションを起動する- 事前にrackをインストールしておく
-
localhost:9292へアクセスするとcallメソッドで実装した戻り値が確認できる
-
- callが受け取る引数envについて
- 引数として受け取る値は、HTTPリクエストに関する情報
- すなわち、Rackアプリケーションとは、HTTPリクエストを受け取り、HTTPレスポンスを返すアプリケーションである
- Railsとの関係
- RailsもRackアプリケーション(例で作成してAppクラスインスタンス)のため、rackupでRailsアプリケーションを起動することができる
- config.ruファイルを確認すると以下のような記述がある。
run Rails.application
- ここでRailsアプリケーションオブジェクトを渡している
DBの管理
-
RailsによるDB関連のタスク一覧
コマンド 概要 rails db:create DBを作成する rails db:drop DBを削除する rails db:migrate マイグレーションファイルの内容をDBに反映する rails db:migrate:status マイグレーションファイルの反映状況を確認する rails db:prepare DBが存在すればdb:migrateを、しなければdb:setupを実行 rails db:reset DBを削除し(db:drop)、db:setupを実行 rails db:rollback 実行したマイグレーションを取り消す rails db:schema:dump DBの構成をdb/schema.rbへ出力する rails db:schema:load db/schema.rbの内容をDBへ反映する(マイグレーションをスキップできる) rails db:seed db/seeds.rbの内容を反映する rails db:seed:replant DBの内容をTRUNCATEし、db:seedを実行する rails db:setup db:migrate、db:schema:load、db:seedを実行する rails db:version マイグレーションのバージョンを表示する