Nathan Long nathanl

View ruby_log_formatting.rb
1 2 3 4 5 6 7
require 'logger'
l = Logger.new(STDOUT)
l.formatter = proc { |severity, datetime, progname, msg|
dt = datetime.strftime('%Y-%b-%d@%H:%M:%S:%z')
"#{[severity,dt,progname,msg].join(' ').squeeze(' ')}\n"
}
l.info "woot" #=> INFO 2014-Feb-11@09:48:32:-0500 woot
View safe_console.js
1 2 3 4 5 6 7 8 9 10
// A safer console object (https://gist.github.com/nathanl/6368185)
// - Ensures `console.log` doesn't cause errors in browsers with no console
// - Lets you enable/disable console logging (using console.enable = true/false)
// - Supports all console methods documented here: https://developer.mozilla.org/en-US/docs/Web/API/console
//
// Less fancy but lighter weight than this: http://benalman.com/projects/javascript-debug-console-log/
safe_console = {
enabled: false,
original_console: (function(){
// If the browser has no usable one, define a no-op
View activerecord_scope_conditions.rb
1 2 3 4 5 6 7 8 9
class Person < ActiveRecord::Base
 
# This manual SQL query...
scope :allowed_to_eat_cheese, joins(
<<-SQL
INNER JOIN cities ON people.city_id = cities.id
INNER JOIN states ON cities.state_id = states.id
SQL
).where('states.allows_cheese_consumption' = 'Yeppers')
View transpose_lyrics.rb
1 2 3 4 5 6 7 8 9 10
#!/usr/bin/env ruby
# Rearrange song lyrics so it's easier to put guitar chords over them: put the
# first lines of each verse, which share the same chords, into the first
# paragraph. Second lines go into the second paragraph, etc.
#
# Meant to be used with Unix piping: `cat somefile.txt | ./this_script > output.txt
 
lyrics = STDIN.read
paragraphs = lyrics.split("\n\n")
lines = paragraphs.map { |paragraph| paragraph.split("\n") }
View pry_and_debugger_cheat_sheet.md

Ruby Debugging

Pry

ruby -rpry some_script.rb - the r means require. If there's a binding.pry there, you'll be on it.

Pry gives you a graphical look at your program in progress, lets you cd among objects, ls to see available variables, etc. You can't step, though; just explore a snapshot at that moment.

Debugger

Must install debugger gem for your version of Ruby (1.9 is 'gem install debugger'). Doesn't play well with Spork.

View git_tag_cleanup.rb
1 2 3 4 5 6 7 8 9
# Script to delete all but a specified list of tags
# from a git repo, both locally and remotely
# Run like `mode=test ruby git_tag_cleanup` to test;
# use 'execute' mode to actually delete the tags
 
mode = ENV['mode'] || 'test'
 
tags_to_keep = %w[v2.0.0 v2.0.1]
tags_to_delete = `git tag`.split("\n") - tags_to_keep
View safeLogger
1 2 3 4 5 6 7 8 9
// Simple wrapper for console.log()
//
// Does nothing unless it's turned on AND the user has a console open
//
// Usage
// - Turn on with `safeLogger.active = true;`
// - Log messages like `safeLogger.log('someString',someObject);`
 
safeLogger = {
View unicorn.sh
1 2 3 4 5 6 7 8 9 10
#!/bin/sh
set -e
 
# Feel free to change any of the following variables for your app:
TIMEOUT=${TIMEOUT-60}
APP_ROOT=/home/deploy/taxscribe/current
PID=$APP_ROOT/tmp/pids/unicorn.pid
CMD="/usr/local/bin/unicorn --config-file $APP_ROOT/config/unicorn.server.rb --env production --daemonize $APP_ROOT/config.ru"
 
action="$1"
View safelog.js
1 2 3 4 5
function safelog(message) {
 
try{ console.log(message); } catch(e){ /*do nothing*/ }
 
}
Something went wrong with that request. Please try again.