StevenXL

StevenXL

Hello,

I was reading the Phoenix Guides on module plugs here and was confused as to how the module plug example was working. I was going to ask here for help, but in the process I believe I figured it out. (Happy to be corrected if that’s not the case).

I’ll just leave this here in case someone else is confused.

Line -3 (plug HelloPhoenix.Plugs.Locale, "en") is indicating that, when this plug is executed, we will invoke the HelloPhoenix.Plugs.Locale.init/1 function, passing in the argument "en".

The init/1 function will return a value, which will be used as the second argument to HelloPhoenix.Plugs.Locale.call/2.

If the first clause of call/2 matches, then we know that:

  1. There was a locale URL parameter
  2. The value of that parameter was in @locale

We are happy with this so we assign the locale value to the connection.

If the second-clause of call/2 matches, then we know that we need to provide a default, because there was either no locale URL parameter, or the value of it was not in @locale. The default, again, came from whatever init/1 returned, which in the example is "en".

Showing Posts 1 to 2

benwilson512

benwilson512

Author of Craft GraphQL APIs in Elixir with Absinthe

This is basically correct, with one minor adjustment.

In most scenarios where plug is implemented, the init function is actually called exactly once at compile time to setup the options for the plug. Then at runtime when an actual connection is being processed the call function is called on the conn with the opts derived at compile time.

StevenXL

StevenXL OP

@benwilson512 thank you for the clarification!

— All posts loaded —

Where Next? Top

Trending in Questions Top

stjefim
Hello! Suppose you are building workflow (order / task / payment) processing system with the following requirements: Each workflow con...
New
Blokh
Hey guys, I’ve got a huge CSV ( around 10 GB ) that needs to be processed hourly Do you guys have any suggestions what is the best prac...
New
roeland
Kia ora, We have been using elixir-google-api to connect to Google Drive. However, with the updates to Tesla due to CVEs this is now bro...
New
kszambelanczyk
Hello! Could someone please give me a help/sample code, how to delete a file from s3 using waffle/waffle_ecto from Phoenix app. I creat...
New
Onor.io
I have what I’ve heard referred to as a “lookup table” in my database. This is a way of assigning codes to common values. One common lo...
New
jaybe78
Hello, I’m developing a online persistent chat system (what’s app) like using elixir/dynamodb/aws for a mobile app(flutter). The diffic...
New
Trolleger
What approach to take when sending live updates to “random” users Hi! I have a question, I have a little chat app, and when I create a DM...
New

Other Trending Topics Top

garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
mcass19
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve. They are GUI (Emerge) and State management (S...
New
wintermeyer
There are three potential reasons for members of this forum to have a look at https://vutuv.de You are tired or annoyed of LinkedIn. Yo...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews