Skip to content

Instantly share code, notes, and snippets.

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

Leandro Camargo leandro

🏠
Working from home
View GitHub Profile
@leandro
leandro / Gemfile
Last active August 29, 2015 14:21
Self sustainable standalone ruby script
source "https://rubygems.org"
# Declare your gem's dependencies in breakout_elasticsearch.gemspec.
# Bundler will treat runtime dependencies like base dependencies, and
# development dependencies will be added by default to the :development group.
gemspec
# jquery-rails is used by the dummy application
gem "jquery-rails"
module QueryTracer
# Borrowed some ANSI color sequences from elsewere
CLEAR = ActiveSupport::LogSubscriber::CLEAR
BOLD = ActiveSupport::LogSubscriber::BOLD
def self.start!
# Tap into notifications framework. Subscribe to sql.active_record messages
ActiveSupport::Notifications.subscribe('sql.active_record') do |*args|
QueryTracer.publish(*args)
@leandro
leandro / AR Model schema printer
Last active December 20, 2015 15:58
Rails Model's table info generator (indexes included)
def table_info(model)
puts "# Table name: #{model.table_name}", "#", "# Columns:"
cols = model.columns.inject([]) {|arr, e| arr << [e.name || '-', e.type || '-', e.sql_type || '-', e.limit || '-', e.default || '-'].map(&:to_s)}
col_sizes = cols.inject([]) {|arr, c| arr << c.map {|e| e.size }}
max_sizes = 4.times.inject([]) {|arr, i| arr << col_sizes.max_by {|e| e[i] }[i] }
cols.each { |c| puts "# #{c[0].ljust(max_sizes[0] + 2)}:#{c[1].ljust(max_sizes[1] + 3)}#{c[2].ljust(max_sizes[2] + 2)}#{c[3].ljust(max_sizes[3] + 2)}#{c[4]}" }
puts "#", "# Indexes:"
indexes = ActiveRecord::Base.connection.indexes(model.table_name).map {|e| [e.name, "(#{e.columns.join(", ")})"]}
require 'digest/sha2'
# Usage: ruby jenkins-log-parser.rb jenkins-output.txt
# ps.: run chamod +x on this file
log_file = $*.shift
class Digester
@digester = Digest::SHA256.new
def self.digest(msg)
@leandro
leandro / skype-search
Created October 17, 2012 17:39
Search through your whole skype history for any given term
@leandro
leandro / vimrc
Created June 20, 2012 13:36
vimrc
source /Users/leandro/.vim/gist.vim
source /Users/leandro/.vim/plugin/matchit.vim
filetype indent on " Automatically detect file types.
set nocompatible " We don't want vi compatibility.
" Add recently accessed projects menu (project plugin)
set viminfo^=!
set ts=2 sw=2 et
@leandro
leandro / displayselectors.jquery.js
Created May 19, 2012 11:54 — forked from dirceu/displayselectors.jquery.js
jQuery selectors for elements with display 'block' and 'inline'
(function($) {
$.extend($.expr[':'], {
inline: function(a) {
return $(a).css('display') == 'inline';
},
block: function(a) {
return $(a).css('display') == 'block';
}
});
})(jQuery);
@leandro
leandro / fullscreen.js
Created May 4, 2012 10:59 — forked from fnando/fullscreen.js
Working with fullscreen
var body = document.body;
if (body.requestFullScreen) {
body.requestFullScreen();
} else if (body.mozRequestFullScreen) {
body.mozRequestFullScreen();
} else if (body.webkitRequestFullScreen) {
body.webkitRequestFullScreen();
}
@leandro
leandro / multiple-js-variables-declaration
Created March 5, 2012 02:44
multiple JS variables declaration (google maps)
var gCoords = new google.maps.LatLng(-16.698395,-49.26394)
, gmapData = {
center: gCoords,
zoom: 16,
mapTypeId: google.maps.MapTypeId.ROADMAP,
scrollwheel: false
}
, gMap = new google.maps.Map($('#google-map-localizacao').get(0), gmapData)
, gMarker = new google.maps.Marker({
position: gCoords,
@leandro
leandro / gist:1713746
Created January 31, 2012 23:23
nginx log format
log_format complete '[$time_local] REQ_TIME:$request_time UPS_TIME:$upstream_response_time C:$remote_addr H:$host '
'URI:$request_uri ($request_method) ST:$status SZ:$bytes_sent '
'REFERER:http_referer AGENT:$http_user_agent';