Ecco un estratto dal libro - Programmazione Phoenix:
"A volte, potrebbe essere necessario Phoenix a fare qualche sollevamento di carichi pesanti per trasformare le opzioni Questo è il lavoro della funzione init init avviene al momento della compilazione... Plug userà il risultato di init come secondo argomento da chiamare, poiché spesso viene chiamato in fase di compilazione, è il posto perfetto per convalidare le opzioni e preparare parte del lavoro, in modo che la chiamata possa essere il più veloce possibile. chiamare è il cavallo di battaglia, vogliamo che faccia il minor lavoro possibile. "
Ad esempio - Utilizzo di una spina nel file routes.ex
pipeline :api do
plug :accepts, ["json"]
plug Example.Authenticated, repo: Example.Repo
end
repo: Example.Repo
è opzioni vengono passati - alla funzione init
all'interno Example.Repo
defmodule Example.Authenticated do
import Plug.Conn
def init(opts) do
Keyword.fetch!(opts, :repo)
end
def call(conn, repo) do
...
end
end
sto assumendo nel caso di Plug.Router - a modifiche in fase di compilazione potrebbero essere - caricamento dei moduli che costruisce/modifica percorsi - possibilmente da una fonte esterna? Dipende da cosa stai cercando di ottenere.
fonte
2016-02-02 19:20:46
Questa dovrebbe essere la risposta. Sono un nuovo utente di Phoenix e Plug, e l'aspetto della compilazione non è ovvio dai documenti online. Non riuscivo a capire perché una semplice funzione di test di registrazione non venisse colpita, ma dato che è in fase di compilazione questo ha senso. – ibgib