0
0

パーフェクトRubyonRails備忘録4

Posted at

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 マイグレーションのバージョンを表示する
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0