Index
A
- action
- creating, in controller / Creating the new action in the controller
- alias statement / Your objects have no power here
- API
- building / Building our API
- building, in code / Building an API in Code
- restrictions / Authenticating Against our API
- flow / Authenticating Against our API
- user, allowing to navigate to profile page / Allowing a user to navigate to their profile page
- error, handling / Dealing with Error Handling in APIs
- resource show, implementing / Implementing an API Resource Show
- error handler, adding for JSON errors / Adding an Error Handler for 404s for JSON
- API keys
- introducing, to database / Introducing API keys to the database
- validating / Validating API Keys
- API Request
- expanding / Expanding Our API Request
- application structure, Phoenix
- configuration files / Configuration files
- assets files / Assets files
- private files / Private files
- test directory / Tests
- directories / Other directories
- lib / The most important directory: lib
- assets files / Assets files
- associations
- gotchas / Understanding the gotchas of associations
B
- broken tests
- fixing / Fixing the broken tests
C
- call function
- implementing / Implementing the cast and call logic
- cast function
- implementing / Implementing the cast and call logic
- channel functionality
- moving / Moving the channel functionality to show
- channels
- building, in Phoenix / Building channels and topics in Phoenix
- about / Understanding channels
- messages, sending / Sending and receiving messages with channels
- messages, receiving / Sending and receiving messages with channels
- channel tests
- starting / Starting our channel tests
- chat channel
- creating / Creating our chat channel
- chat messages
- sending / Sending chat messages
- chat schema
- working with / Working with the chat schema
- building / Building the chat schema
- message functionality, designing / Designing our message functionality
- message functions, implementing in context / Implementing message functions in our context
- unit tests, writing / Writing our unit tests
- chat UI
- creating / Creating the chat UI
- building / Building the UI Itself
- code
- API, building / Building an API in Code
- concurrency model, Elixir
- about / Introduction to Elixir's concurrency model
- versus, parallelism / The difference between concurrency and parallelism
- process execution scenarios / Run process 1, Run process 1 and process 2 at the same time
- OTP / Talking about OTP/understanding the model
- example, working with / Working with an example
- exploring / Diving deeper into the concurrency model
- process scenario / The model - what is a process?
- process crash scenario / The model - what if our process crashes?
- task scenario / The model - what is a task?
- test scenario / The model - what is a task?
- agent / The model - what is an agent?
- supervisor / The model - what is a supervisor?
- application / The model - what is an application?
- configuration files / Configuration files
- conflict-free replicated data types (CRDTs) / What is Presence?
- contexts
- about / Understanding the role of contexts
- Votes context, creating / Creating a Votes context
- data list, grabbing / Grabbing a list of data
- Ecto query, writing / Understanding Ecto query writing
- hooking up, to controller / Hooking up the context to our controller
- controller
- tests, writing / Writing controller tests
- code behind tests / Understanding the code behind tests
- action, creating / Creating the new action in the controller
- create function
- creating / Creating our create function
- CRUD / Designing our message functionality
D
- data
- passing, to templates / Passing data to our templates
- database
- file uploads, hooking up / Hooking up the uploads to our database
- API keys, introducing / Introducing API keys to the database
- development seeds file
- building / Building a good development seeds file
- directories / Other directories
E
- Ecto query
- writing / Understanding Ecto query writing
- Elixir
- about / Introducing IEx and Elixir
- variables / Variables in Elixir
- immutability / Immutability in Elixir
- types / Understanding the different types in Elixir
- ES2015 syntax
- working / Working with ES2015 syntax
- imports / Imports and exports
- exports / Imports and exports
- let variable / let and const
- const variable / let and const
- fat-arrow functions / Fat-arrow functions
- variable destructuring / Variable and argument destructuring
- argument destructuring / Variable and argument destructuring
- ETS
- utilizing, for app enhancement / Utilizing Presence and ETS to make our app more robust
- using / Using ETS
- need for / Why use ETS?
- experimenting, with in IEX window / Experimenting with ETS in an IEx window
- table, creating / Creating our Presence ETS table and GenServer
- Presence data, storing / Storing Presence data in ETS
- Presence data, retrieving / Retrieving Presence data in ETS
F
- features
- designing / Designing and implementing our new features
- implementing / Designing and implementing our new features
- file uploads
- implementing, in Phoenix / Implementing file uploads in Phoenix
- working with, in Phoenix / Working with uploads in Phoenix
- adding, to poll UI / Adding file uploads to our new poll UI
- hooking up, to database / Hooking up the uploads to our database
- migration file, writing / Writing the migration file
- schema, modifying / Modifying the schema and the context code
- context code, modifying / Modifying the schema and the context code
G
- GenServer
- creating / Creating our Presence ETS table and GenServer
- setting up / Setting up the GenServer
- public interface, creating for / Creating the public interface for the GenServer
- cast function, implementing / Implementing the cast and call logic
- call function, implementing / Implementing the cast and call logic
- hooking up, to application / Hooking up the GenServer to our application
- using / Using GenServers
- Google
- OAuth login support, adding with Ueberauth / Adding OAuth login support for Google with Ueberauth
- configuring, for OAuth / Configuring Google to allow OAuth
- Ueberauth, configuring / Configuring Ueberauth in Google
- Google OAuth
- implementing, for Ueberauth / Implementing Google OAuth for Ueberauth and Phoenix
- implementing, for Phoenix / Implementing Google OAuth for Ueberauth and Phoenix
H
- helpers
- using / Using IEx and helpers to understand types
- h helper function / Getting more information with the h helper
I
- IEx
- about / Introducing IEx and Elixir, What is IEx?
- i helper function / Getting more information with the i helper
- h helper function / Getting more information with the h helper
- using / Using IEx and helpers to understand types
- ETS, experimenting with / Experimenting with ETS in an IEx window
- i helper function / Getting more information with the i helper
- image uploads
- votes context, completing / Completing the votes context for the image uploads
- import statement / Your objects have no power here
- index poll
- hooking up / Hooking up our polls index
J
- JavaScript code
- hooking up, to Phoenix / Hooking up the new JavaScript code to Phoenix
- JSON
- error handler, adding for 404s / Adding an Error Handler for 404s for JSON
L
- lib / The most important directory: lib
M
- migration
- creating / Creating a new migration
- modules / Your objects have no power here
N
- named import / Imports and exports
O
- OAuth
- user experience, securing / Solidifying the new user experience
- OAuth login support
- adding, for Twitter with Ueberauth / Adding OAuth login support for Twitter with Ueberauth
- adding, for Google with Ueberauth / Adding OAuth login support for Google with Ueberauth
- Options
- table migration, creating / Creating our Options table migration
- schema, creating / Creating our Option schema
- associations, gotchas / Understanding the gotchas of associations
P
- Phoenix
- about / Introduction to Phoenix
- reference link / Introduction to Phoenix
- mix task, executing / Running the Phoenix Mix Task
- application structure / Phoenix's default application structure
- data flow / A note about how data flows in Phoenix
- channels, building / Building channels and topics in Phoenix
- topics, building / Building channels and topics in Phoenix
- users, voting / Allowing users to vote on polls
- file uploads, implementing / Implementing file uploads in Phoenix
- file uploads, working with / Working with uploads in Phoenix
- chat, adding / Adding chat to a Phoenix application
- navigation, fixing / Fixing navigation in our application
- JavaScript code, hooking up / Hooking up the new JavaScript code to Phoenix
- Twitter login, configuring / Configuring the Twitter login process in Phoenix
- Twitter login, implementing / Implementing the Twitter login in Phoenix
- Google OAuth, implementing / Implementing Google OAuth for Ueberauth and Phoenix
- applications, deploying to production / Deploying Phoenix applications to production
- Phoenix 1.3
- installing / Installing Phoenix 1.3
- Phoenix connections
- flow / Understanding the flow of Phoenix connections
- Phoenix project
- creating / Creating a new Phoenix project
- Phoenix server
- executing / Running the Phoenix server for the first time
- poll
- table migration, creating / Creating the Polls table migration
- schema, creating / Creating our Poll schema
- schema, testing / Testing our Poll schema
- creating / Creating a new poll
- create function, creating / Creating our create function
- connecting, to users / Connecting polls to users
- migration, creating / Creating the migration
- schemas, modifying / Modifying the schemas
- broken poll tests, fixing / Fixing broken poll tests
- user ID, sending through controller / Sending a user ID through the controller
- access, restricting via sessions / Restricting access via sessions
- validations / Working with validations and errors
- errors, handling / Working with validations and errors
- poll chats
- refactoring / Refactoring for poll chats
- poll controller
- creating / Creating a poll controller
- structure / Understanding the controller's structure
- building / Building the poll controller
- templates / Understanding templates
- test, writing / Writing the poll controller test
- poll UI
- file uploads, adding / Adding file uploads to our new poll UI
- Presence
- utilizing, for app enhancement / Utilizing Presence and ETS to make our app more robust
- about / What is Presence?
- chat UI, updating / Updating our chat UI
- Elixir implementation / Elixir implementation
- JavaScript implementation / JavaScript implementation
- ETS table, creating / Creating our Presence ETS table and GenServer
- GenServer, creating / Creating our Presence ETS table and GenServer
- data, storing in ETS / Storing Presence data in ETS, Retrieving Presence data in ETS
- data, retrieving in ETS / Retrieving Presence data in ETS
- private files / Private files
- production
- Phoenix, applications deploying / Deploying Phoenix applications to production
- deployment, requisites / Initial requirements for deployment into production
- deployment, strategies / Alternative Deployment Strategies
- Psequel / Creating our user schema
- public interface
- creating, for GenServer / Creating the public interface for the GenServer
R
- Read-Evaluate-Print-Loop (REPL) / What is IEx?
S
- schema / Understanding the role of schemas
- Social Voting project
- creating / Creating our Social Voting project
- socket
- about / Understanding sockets
- loading / Conditionally loading our socket
- messages, sending / Sending messages on the socket
T
- templates
- about / Understanding templates
- data, passing / Passing data to our templates
- test directory / Tests
- tests
- fixing / Fixing up our tests
- suite, fixing / Returning to a passing test suite
- shoring / Shoring up our tests
- topics
- building, in Phoenix / Building channels and topics in Phoenix
- Twitter
- OAuth login support, adding with Ueberauth / Adding OAuth login support for Twitter with Ueberauth
- application, setting up / Setting up our application with Twitter
- reference link / Setting up our application with Twitter
- login process, configuring in Phoenix / Configuring the Twitter login process in Phoenix
- users schema, modifying / Modifying the users schema
- login, implementing in Phoenix / Implementing the Twitter login in Phoenix
U
- Ueberauth
- login support, adding / Adding Ueberauth support
- used, for adding OAuth login support to Twitter / Adding OAuth login support for Twitter with Ueberauth
- used, for adding OAuth login support to Google / Adding OAuth login support for Google with Ueberauth
- configuring, in Google / Configuring Ueberauth in Google
- Google OAuth, implementing / Implementing Google OAuth for Ueberauth and Phoenix
- unit tests
- writing / Writing our unit tests
- user accounts
- adding / Adding user accounts
- user schema, designing / Designing our user schema
- user schema, creating / Creating our user schema
- account context, creating / Creating our accounts context
- user unit tests, writing / Writing our user unit tests
- user signup page, creating / Creating a user signup page
- routes, creating / Creating the routes
- controller code, creating / Creating the controller code (with tests)
- password functionality, setting up / Setting up the password functionality
- Comeonin, installing / Installing Comeonin
- Comeonin, adding to user schema file / Adding Comeonin to the user schema file
- tests, updating / Updating our tests
- UI, updating to include password fields / Updating the UI to include password fields
- user login page, creating / Creating a user login page
- create session function, building / Building our create session function
- session controller tests, writing / Writing session controller tests
- user experience
- securing / Solidifying the new user experience
- tests, shoring / Shoring up our tests
- development seeds file, building / Building a good development seeds file
- securing, with development seeds file / Building a good development seeds file
- index poll, hooking up / Hooking up our polls index
- user ID, poll
- sending, through controller / Sending a user ID through the controller
- data, retrieving from sessions / Retrieving data from sessions
- tests, writing for Poll Controller / Writing our Poll Controller's tests
V
- validations
- validate_change / Working with validations and errors
- validate_confirmation / Working with validations and errors
- validate_format / Working with validations and errors
- validate_length / Working with validations and errors
- validate_number / Working with validations and errors
- validate_required / Working with validations and errors
- unique_constraint / Working with validations and errors
- validations, polls
- unique usernames, creating / Making usernames unique
- custom validations, writing / Writing custom validations
- validation errors, displaying in forms / Displaying validation errors in our forms
- variables, Elixir / Variables in Elixir
- virtual fields / Designing our user schema
- vote record migration
- creating / Creating the vote record migration
- vote record schema
- creating / Creating the vote record schema
- votes context
- creating / Creating a Votes context
- completing, for image uploads / Completing the votes context for the image uploads
- voting
- manual methods, creating / Making voting real-time
- dummy functionality, building / Building our dummy functionality
- dummy code, changing to server / Changing our dummy code to push to the server
- server channel code, writing / Writing our server channel code for live voting
- channels, refactoring from index / Refactoring our channels away from the index
- channel functionality, moving / Moving the channel functionality to show
- voting restrictions
- implementing / Implementing voting restrictions
- vote record migration, creating / Creating the vote record migration
- vote record schema, creating / Creating the vote record schema
- hooking up / Hooking up restrictions