Skip to content

Instantly share code, notes, and snippets.

@webdeb
webdeb / gitlab-run.alias
Created April 29, 2017 14:52
gitlab-runner alias
View gitlab-run.alias
alias gitlab-run='gitlab-runner exec docker --docker-volumes "/var/run/docker.sock:/var/run/docker.sock" --docker-privileged'
@webdeb
webdeb / gitlab phoenix build & test pipeline
Created May 1, 2017 00:09
DinD pipeline to build & test phoenix applications
View gitlab phoenix build & test pipeline
image: docker:latest
variables:
PWD: $(pwd)
BUILD_BOX: webdeb/phx-dev
DATA_BOX: build_data_$CI_PROJECT_ID_$CI_BUILD_REF
stages:
- build
- test
@webdeb
webdeb / OTP - Dockerfile
Last active September 21, 2017 06:42
Dockerfile for releases
View OTP - Dockerfile
FROM alpine:3.5
ARG APP
EXPOSE 5000
EXPOSE 4369
ENV PORT=5000 \
MIX_ENV=prod
RUN apk --no-cache add ncurses openssl
View attach to elixir console
самый простой способ зайти по ssh на продакшен и у бинарника которым запускаешь проект выполнить attach_console
[12:45]
или есть сложней способ, сделать тунелирование портов с продакшена
их список можно увидеть запустив команду
`epmd -names`
`ssh -N remote_hose -L port1_from_command_above:localhost:port1_from_command_above -L port2_from_command_above:localhost:port2_from_command_above`
запустить свою локальную версию продакшен проекта с таким же значением куки как и продакшен, и вуаля ты можешь видеть все что происходит на продакшене
например запустить observer (edited)
View epmdless.ex
# Requires Erlang/OTP 19.0. Invoke as:
#
# iex --erl "-proto_dist Elixir.Epmdless -start_epmd false -epmd_module Elixir.Epmdless_epmd_client" --name frobozz3
# A module containing the function that determines the port number
# based on a node name.
defmodule Epmdless do
def dist_port(name) when is_atom(name) do
dist_port Atom.to_string name
end
@webdeb
webdeb / IndexFallbackPlug.ex
Created May 7, 2018 01:59
Simple plug to just fallback to the index.html file
View IndexFallbackPlug.ex
defmodule Karta.Web.ReactPlug do
import Plug.Conn
def init(options), do: options
def call(conn, _opts) do
conn
|> put_resp_header("content-type", "text/html; charset=utf-8")
|> Plug.Conn.send_file(200, Application.app_dir(:karta_web, "priv/static/index.html"))
end
@webdeb
webdeb / Hasura Keycloak.md
Last active October 29, 2022 19:03
Basic Keycloak Script Mapper to provide Hasura claims
View Hasura Keycloak.md

Steps to provide Hasura Claims in Keycloak generated JWT

  1. Create your realm / client
  2. Inside client configuration go to "Mappers"
  3. Click on "Create"
  4. Name it "hasura"
  5. Choose Mapper Type "Script Mapper"
  6. Add following script to demonstrate how it works
@webdeb
webdeb / Mailgun.ts
Created November 5, 2020 23:51
Simple deno mailgun client
View Mailgun.ts
export default class MailgunClient {
apiKey: string;
domain: string;
defaults?: {
from?: string;
subject?: string;
};
constructor(apiKey: string, domain: string, defaults?: Record<string, any>) {
this.apiKey = apiKey;
@webdeb
webdeb / useLazyQuery.js
Created May 31, 2022 17:36
useLazyQuery for Blitz.js
View useLazyQuery.js
import { useState } from "react"
import { useQuery } from "blitz"
const useLazyQuery = (resolver, inputArg, options = {}) => {
const [enabled, setEnabled] = useState(false)
const [result, extras] = useQuery(resolver, inputArg, {
...options,
enabled,
suspense: false,
onSettled: () => setEnabled(false),