Skip to content

Instantly share code, notes, and snippets.

View joshuaclayton's full-sized avatar

Josh Clayton joshuaclayton

View GitHub Profile
@joshuaclayton
joshuaclayton / README.md
Last active October 25, 2023 18:28
RSpec custom matchers for Segment.io tracking
@joshuaclayton
joshuaclayton / ci.yml
Created July 6, 2022 21:17
GitHub action for a vanilla Rails app with linting and auto-formatting
name: CI
on: [push]
jobs:
tests:
name: Tests
runs-on: ubuntu-latest
services:
postgres:
image: postgres:12
factory :post do
title "Example Post"
body "This is the body of the example post"
meta { { version: 2 } }
# or
meta({ version: 2 })
created_at "2012-06-01 17:53:13"
end
require "money"
class Decorator < BasicObject
undef_method :==
def initialize(component)
@component = component
end
def method_missing(name, *args, &block)
@joshuaclayton
joshuaclayton / Procfile.dev
Created April 10, 2021 01:29
Rails Procfile.dev for Tailwind + live reloading of views
web: bundle exec puma -C config/puma.rb
webpack: bin/webpack-dev-server
livereload: watchexec -w app/views touch app/javascript/packs/application.js
diff --git a/src/attributes.rs b/src/attributes.rs
index e1641b2..a03d803 100644
--- a/src/attributes.rs
+++ b/src/attributes.rs
@@ -38,7 +38,9 @@ fn evaluate_attribute_value_components<'a>(
.iter()
.map(|v| match v {
AttributeValueComponent::RawValue(value) => value.to_string(),
- AttributeValueComponent::InterpolatedValue(values) => context.interpret(values),
+ AttributeValueComponent::InterpolatedValue(values) => {
WITH weeks AS (
SELECT generate_series('2008-12-29'::date, now(), '7 days'::interval)::date AS week
)
SELECT
j.id AS category_id,
weeks.week,
COALESCE(SUM(t.amount), 0) AS weekly_spend,
COALESCE(MIN(t.amount), 0) AS minimum_spend,
COALESCE(MAX(t.amount), 0) AS maximum_spend,
COUNT(t.amount) AS transaction_count,
@joshuaclayton
joshuaclayton / date_calculations.rs
Last active August 28, 2020 01:20
Grouping values by date
use chrono::prelude::*;
// weeks
pub fn beginning_of_week(date: &NaiveDate) -> Option<NaiveDate> {
if date.weekday() == Weekday::Sun {
Some(date.clone())
} else {
NaiveDate::from_isoywd_opt(date.iso_week().year(), date.iso_week().week(), Weekday::Sun)
.map(|d| d - chrono::Duration::weeks(1))
@joshuaclayton
joshuaclayton / hash_flattener.rb
Created July 5, 2018 19:48
Flatten deeply-nested hashes
def recursive_flatten(input, keys = [], acc = {})
input.keys.each do |k|
result_key = keys + [k]
if input[k].is_a?(Hash)
recursive_flatten(input[k], keys + [k], acc)
elsif input[k].is_a?(Array) && input[k].any? {|v| v.is_a?(Hash) }
input[k].each_with_index do |array_value, index|
result_key_with_index = keys + [k, "[#{index}]"]
require 'rubygems'
# what about this?