View stupid_t.rb
1 2 3 4 5 6 7 8 9 10
# config/initializers/stupid_t.rb
# Any text that doesn't appear as "localized" isn't localized
module ActionView::Helpers::TranslationHelper
def t(*args)
result = I18n.t!(*args)
if result.respond_to?(:map)
result.map { |r| "localized" }
else
"localized"
end
View exponential_backoff.rb
1 2 3 4 5 6 7 8 9 10
# Exponential backoff in Ruby
begin
make_request
rescue RequestError => e
if retries <= max_retries
retries += 1
sleep 2 ** retries
retry
else
raise "Timeout: #{e.message}"
View traveling_salesman_brute_force_time.rb
1 2 3 4 5 6 7 8 9
def factorial(n)
(1..n).reduce(:*)
end
 
SECONDS_PER_STEP = 0.001
 
def total_seconds(n)
factorial(n) * SECONDS_PER_STEP
end
View test_pathfinding.rb
1 2 3 4 5 6 7 8 9 10
# This can be run from the voltron directory while the NetSkycanner has a couple of `rake pathfinder` processes running
 
require 'bundler/setup'
Bundler.require :default, :pathfinder
 
require 'json'
require 'thump'
require 'mr_sulu_messages'
 
test = "searching"
View p.rb
1 2 3 4 5
def p(*args)
location = caller_locations(1,1)[0]
location_string = "#{location.path.split('/').last}:#{location.lineno}(#{location.label})"
super([*args, location_string])
end
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.

Something went wrong with that request. Please try again.