Skip to content

Instantly share code, notes, and snippets.

View talbright's full-sized avatar
🏠
Working from home

Trent Albright talbright

🏠
Working from home
View GitHub Profile
//Not very DRY at all, there should be a better way...
type Case struct {
ID *int `json:"id,omitempty"`
ExternalID *string `json:"external_id,omitempty"`
Type *string `json:"type,omitempty"`
}
type caseBuilder builder.Builder
func (b caseBuilder) Build() Case {
return builder.GetStruct(b).(Case)
package desk
import (
"github.com/lann/builder"
)
type StructA struct {
Name *string
}
package desk
import (
"fmt"
"testing"
. "github.com/smartystreets/goconvey/convey"
)
func TestJsonBuilder(t *testing.T) {
fmt.Println("")
@talbright
talbright / _instrument.rb
Created November 14, 2014 04:55
Rails: instrument output of fragment caching for debugging
# config/initializers
ActiveSupport::Notifications.subscribe /fragment.action_controller/ do |*args|
event = ActiveSupport::Notifications::Event.new *args
Rails.logger.info "Notification for event #{event.name} with payload #{event.payload}"
end
@talbright
talbright / gist:96b28d31845e50d6fd1a
Last active August 29, 2015 14:09
Rails: check for fragment key outside of controller
action_base = ActionController::Base.new
key = "en/handlebars_ticket_filter_show_v2/ssl:false"
action_base.fragment_exist?(key)
action_base.read_fragment(key)
action_base.fragment_cache_key(key) # shows how Rails modifies the key before storage see ActiveSupport::Cache.expand_cache_key
@talbright
talbright / elasticsearch_transition.rb
Last active August 29, 2015 14:13
What to do when ruby gems use the same require path and conflict...
# config/initializers/elasticsearch_transition.rb
# Both elasticsearch-0.4.11 and rubberband-0.1.6 use 'elasticsearch'
# in their respective gem lib dirs. This causes the elasticsearch gem
# to incorrectly require same named paths from the wrong gem (in this
# case from rubberband). That's because rubberband is in the require
# path first.
#
# You have to set require: false in your Gemfile for the
# elasticsearch gems.
#!/usr/bin/env ruby
require 'yaml'
require 'zlib'
starting_bound = 368_796_583
ending_bound = 999_999_999
integers = []
ARGV[0].to_i.times { |x| integers << rand(starting_bound..ending_bound) }
@talbright
talbright / git_set_mtimes.sh
Created February 15, 2015 18:20
Sets file mtimes to latest git commit timestamp
# Ensures mtimes are consistent with the git commit to utilize ADD caching
# Re-written from https://github.com/docker-library/official-images/blob/1dd9118804a06fef308e613cdbabe44bf0529043/bashbrew/git-set-mtimes
# This version is more platform compatible (assuming you have ruby), works on os x and *nix
git_set_mtimes() {
pushd $1
IFS=$'\n'
files=( $({ git ls-files | xargs dirname | sort -u && git ls-files; } | sort -r) )
unset IFS
for f in "${files[@]}"; do
stamp="$(git --no-pager log -1 --format='format:%ai' -- "$f")"
@talbright
talbright / main.go
Last active August 29, 2015 14:15
Better martini error handler that supports 404 and 405 scenerios
package main
import (
"github.com/talbright/martini"
"net/http"
"strings"
"fmt"
)
func generic() string {
{
"expand": "renderedFields,names,schema,transitions,operations,editmeta,changelog",
"id": "58224",
"self": "https://jira.desk.technology/rest/api/2/issue/58224",
"key": "AA-27004",
"fields": {
"issuetype": {
"self": "https://jira.desk.technology/rest/api/2/issuetype/1",
"id": "1",
"description": "A problem which impairs or prevents the functions of the product.",