Skip to content

Instantly share code, notes, and snippets.

View thiagoa's full-sized avatar

Thiago Araújo Silva thiagoa

  • thoughtbot
  • Natal / RN - Brazil
View GitHub Profile
thiagoa / gist:ec192babb1d2afc34d70
Last active August 29, 2015 14:11
Address decorator extracted from a project
View gist:ec192babb1d2afc34d70
require 'delegate'
module ConcatHelper
def concat(*elements, separator)
def format(format_string, string)
format_string % string unless string.blank?
thiagoa / eql.rb
Last active December 19, 2015 13:42
View eql.rb
class Obj
attr_reader :a
def initialize(a)
@a = a
def ==(other)
a == other.a
thiagoa / query_planner.markdown
Created January 3, 2016 02:18 — forked from hgmnz/query_planner.markdown
PostgreSQL query plan and SQL performance notes
View query_planner.markdown

Types of index scans


Sequential Scan:

  • Read every row in the table
  • No reading of index. Reading from indexes is also expensive.
thiagoa /
Created February 22, 2016 14:53
Python: My simple ContextManager implementation
import time
class ContextManager():
def __init__(self, generator_method, args, kwargs):
self.generator_method = generator_method
self.args = args
self.kwargs = kwargs
def __enter__(self):
View fizzbuzz.exs
defmodule FizzBuzz do
defmacro __using__(_) do
quote do
alias FizzBuzz.FunctionSignaturePatternMatching, as: FSPM
alias FizzBuzz.GuardClause
alias FizzBuzz.Case
alias FizzBuzz.Cond
alias FizzBuzz.If
import FizzBuzz.AnonymousFunction
View vimscript_examples.vim
" How to process a set of files (includes escaping file name) and populate the arglist
" This example "copies" everything from quickfix to arglist
command! -nargs=0 -bar Qargs execute 'args' QuickfixFilenames()
function! QuickfixFilenames()
let buffer_numbers = {}
for quickfix_item in getqflist()
let buffer_numbers[quickfix_item['bufnr']] = bufname(quickfix_item['bufnr'])
return join(map(values(buffer_numbers), 'fnameescape(v:val)'))
thiagoa /
Last active May 31, 2016 04:08
Crystal pipe working with module prefixes
# this was copied from
# thanks to @waterlink from this issue thread
module CrChainableMethods
module Pipe
macro pipe(ast)
{% uast = ast.stringify.gsub(/ >>/, ".pipe").id %}
{% pp uast %}
{% if uast.stringify != ast.stringify %}
pipe {{uast}}
View gist:7083d12385e51d8d8b16313667a6220c

Adding Sinon to WebPack

  • Open your project (if you're using WebPack, obviously)

  • npm install sinon --save-dev

  • You should now have Sinon in your node modules and listed in your package.json file

  • In your tests, require Sinon: var sinon = require('sinon');

View index.html.erb
<!-- app/views/home/index.html.erb -->
<div data-twitter-app>
<div data-tweets>
thiagoa / twitter_timeline_spec.rb
Created September 28, 2016 13:57
Twitter Widget - Pending feature spec
View twitter_timeline_spec.rb
# spec/features/twitter_timeline_spec.rb
require 'feature_helper'
RSpec.feature 'twitter timeline' do
scenario 'a user views a twitter timeline' do
visit root_path
within '[data-twitter-app]' do