Skip to content

Instantly share code, notes, and snippets.

View gvaughn's full-sized avatar
:atom:
Never trust an atom. They make up everything.

Greg Vaughn gvaughn

:atom:
Never trust an atom. They make up everything.
View GitHub Profile
@gvaughn
gvaughn / nice_pattern.exs
Created July 14, 2020 04:27 — forked from costaraphael/nice_pattern.exs
Builder pattern in Elixir (don't do this!!!)
defmodule Person do
defstruct [:name, :age]
def with do
{Person.Builder, %{}}
end
defmodule Builder do
def unquote(:'$handle_undefined_function')(:and_with, [{__MODULE__, _acc} = tuple]) do
tuple
@gvaughn
gvaughn / fizzbuzz.ex
Created December 31, 2022 18:13 — forked from toranb/fizzbuzz.ex
fizzbuzz with Axon (collaboration with Ian Warshak)
defmodule Mlearning do
@moduledoc false
def mods(x) do
[rem(x, 3), rem(x, 5), rem(x, 15)]
end
def fizzbuzz(n) do
cond do
rem(n, 15) == 0 -> [0, 0, 1, 0]
@gvaughn
gvaughn / component_under_test.ex
Created January 26, 2024 17:12 — forked from mcrumm/component_under_test.ex
Testing Phoenix.LiveComponent in Isolation
# lib/party_web/components/example_component.ex
defmodule PartyWeb.ExampleComponent do
@moduledoc """
An example LiveComponent under test.
"""
use Phoenix.LiveComponent
def render(assigns) do
~H"""
<div>
@gvaughn
gvaughn / repo.ex
Created April 29, 2024 15:12 — forked from hl/repo.ex
defmodule MyApp.Repo do
use Ecto.Repo,
otp_app: :my_app,
adapter: Ecto.Adapters.Postgres
require Ecto.Query
@spec fetch_one(Ecto.Queryable.t(), Keyword.t()) ::
{:ok, struct()} | {:error, :not_found}
def fetch_one(queryable, opts \\ []) do