Skip to content

Instantly share code, notes, and snippets.

module RaisableRedirections
def self.included(other)
other.send(:around_filter, :handle_raisable_redirections)
end
protected
def raise_redirect_to(*args)
raise Redirect.new(*args)
end
module LongTransactionLogger
def transaction(options = {}, &block)
start_time = Time.now.to_f
rv = super(options, &block)
::LongTransactionLogger.log(Time.now.to_f - start_time, self.name, caller(1))
rv
end
def self.log(duration, model_name, stacktrace)
RAILS_DEFAULT_LOGGER.error "LongTransactionLogger (#{model_name}.transaction [#{duration}s]):\n#{stacktrace.join("\n")}" if duration > 5
# Really hacky script to mark all hoptoad errors as resolved.
require 'active_resource'
require 'net/http'
ACCOUNT="your-account-name"
AUTH_TOKEN='your-auth-token'
class Hoptoad < ActiveResource::Base
self.site = "http://#{ACCOUNT}.hoptoadapp.com"
module Behaviour
def child_class
Child
end
end
module Family
class Child; end
# Full code is at http://github.com/cwninja/rack-cache-buster
require 'digest/md5'
module Rack
class CacheBuster
def initialize(app, key, target_time = nil)
@app, @target_time = app, target_time
@key = "-"+Digest::MD5.hexdigest(key || "blank-key").freeze
@key_regexp = /#{@key}/.freeze
height = 10
base = [height / 6, 8].max
width = lambda{|r| r * 2 - 1}
to_center = lambda{|s| s.center([height, base].map(&width).max)}
to_stars = '*'.method(:*)
tree = lambda{|v| v.map(&width).map(&to_stars) }
puts (
tree[1..height] +
tree[[2]*3] +
@tomlea
tomlea / jsmin.rb
Created October 2, 2009 23:49
Middleware to JSMin Dynamic Javascript.
class Rack::Jsmin
def initialize(app)
@app = app
end
def call(env)
response, headers, body = @app.call(env)
if response == 200 and not env["rack.jsmin.ignore"] and headers["Content-Type"].starts_with? "text/javascript"
payload = ""
body.each{|part| payload << part}
class PerRequestCache #THIS IS TOTALLY NOT THREAD SAFE!!!!!!!
class << self
def open_the_cache
@cache = {}
end
def clear_the_cache
@cache = nil
end
require "json"
require "httpclient"
# Usage:
# reevoo_hq = LongLat.from_postcode("SE1 0RF")
# reevoo_hq.long # => -0.10276
# reevoo_hq.lat # => 51.500991
class LongLat
PostcodeLookupError = Class.new(RuntimeError)
class BaseColor
attr_reader :r,:g,:b,:a
def alpha(v)
BaseColor.new(r,g,b,v)
end
def initialize(r, g, b, a = 1.0)
@r, @g, @b, @a = normalize(r), normalize(g), normalize(b), normalize(a, 1.0)
end