Skip to content

Instantly share code, notes, and snippets.

@rzane
rzane / tsconfig.json
Created February 26, 2019 16:27
Typescript config for a client side app
{
"compilerOptions": {
"target": "esnext",
"module": "esnext",
"strict": true,
"jsx": "preserve",
"importHelpers": true,
"moduleResolution": "node",
"experimentalDecorators": true,
"esModuleInterop": true,
@rzane
rzane / polymorphic_has_one_primary_key.rb
Created June 23, 2023 15:23
ActiveRecord polymorphic associations don't accept a custom primary key?
require 'bundler/inline'
require 'minitest/autorun'
gemfile true do
source 'https://rubygems.org'
gem 'activerecord', require: 'active_record'
gem 'sqlite3'
end
ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:')
@rzane
rzane / deprecations.rb
Created October 31, 2022 20:46
Deprecate Rails path helpers
deprecator = ActiveSupport::Deprecation.new('in the future', 'B4B')
deprecator.behavior = ActiveSupport::Deprecation.behavior
ActiveSupport::Deprecation.deprecate_methods(
Rails.application.routes.named_routes.path_helpers_module,
:foo_path,
:bar_path,
deprecator: deprecator
)
@rzane
rzane / controller_spec.rb
Created June 16, 2022 20:31
Writing a controller spec outside of a Rails application
require 'spec_helper'
require 'rails'
require 'action_view'
require 'action_controller'
require 'rspec/rails'
class TestApplication < Rails::Application
end
RSpec.describe 'example', type: :controller do
@rzane
rzane / gem.md
Last active May 4, 2022 20:49
Actions

Gem

Build

name: Build
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
@rzane
rzane / print-fields.rb
Last active December 14, 2021 17:02
Print fields used by GraphQL query
require "set"
require "graphql"
require "json"
SCHEMA_PATH = ENV.fetch("SCHEMA") do
abort "Run with SCHEMA=<path-to-schema.json> and try again."
end
SCHEMA = JSON.parse(File.read(SCHEMA_PATH))
REFERENCES = Hash.new do |h, t|
@rzane
rzane / wait.sh
Created April 4, 2017 17:54
Wait for a port to become available (useful for docker-compose)
#!/bin/bash
if [ "$#" -lt 2 ]; then
echo "Usage: wait-for-it [host] [port] [timeout(optional)]"
exit 1
fi
host="$1"
port="$2"
timeout="${3:-0}"
@rzane
rzane / convert.rb
Last active July 13, 2021 18:06
Convert to TypedDocumentNode
# Convert your codebase to use TypedDocumentNode. It's not perfect, but
# it does a pretty decent job. You'll want to review the changes manually.
# Usage: ruby convert.rb [...GLOBS]
# Example: ruby convert.rb "src/**/*.{ts,tsx}"
require "set"
def convert_import(line)
parts = line.scan(/use(\w+)(Query|Mutation)/)
return [line] if parts.empty?
@rzane
rzane / README.md
Last active July 18, 2020 13:14
QueryExtensions

QueryExtensions

First, you'll need to incorporate the extension:

class ApplicationRecord < ActiveRecord::Base
  extend QueryExtensions
end
@rzane
rzane / fileExchange.ts
Created August 1, 2019 23:42
URQL file exchange (which doesn't work at all)
import { print } from "graphql";
import { pipe, map } from "wonka";
import { Exchange, Operation } from "urql";
type FetchExchangeFn = (
operation: Operation,
options: RequestInit
) => RequestInit;
const createFetchExchange = (fn: FetchExchangeFn): Exchange => {