「Phoenix」フレームワークでプラグ(Plug)です。さあ、わからなくなってきました。こういうものがあると受け入れて、深く考えずに次に進むしかありません。
参考サイト
Plug(Phoenix)
Rails と Rack(Ruby on Rails ガイド)
プラグは、Webアプリケーションの構成モジュールの仕様です。 また、Webサーバの接続アダプタの抽象化層でもあります。 プラグの基本的な考え方は、「接続」の概念を統一することです。 これは、リクエストとレスポンスがミドルウェアに分離されるような、HTTPミドルウェア層のRackなどとは異なります。/web/router.ex
プラグには function plugs と module plugs の2種類があります。
defmodule HelloPhoenix.Plugs.Locale do
import Plug.Conn
@locales ["en", "fr", "de"]
def init(default), do: default
def call(%Plug.Conn{params: %{"locale" => loc}} = conn, _default) when loc in @locales do
assign(conn, :locale, loc)
end
def call(conn, default), do: assign(conn, :locale, default)
end
defmodule HelloPhoenix.Router do
use HelloPhoenix.Web, :router
pipeline :browser do
plug :accepts, ["html"]
plug :fetch_session
plug :fetch_flash
plug :protect_from_forgery
plug :put_secure_browser_headers
plug HelloPhoenix.Plugs.Locale, "en"
end
scope "/", HelloPhoenix do
pipe_through :browser # Use the default browser stack
get "/", PageController, :index
end
end
参考サイト
Plug(Phoenix)
Rails と Rack(Ruby on Rails ガイド)