Skip to content

Instantly share code, notes, and snippets.

View jamiew's full-sized avatar

Jamie Dubs jamiew

View GitHub Profile
@jamiew
jamiew / gist:133
Created July 21, 2008 20:32 — forked from imownbey/gist:128
def what_is_gist
"A bad ass version-able pastebin"
This is sorta cool I guess?
end
@jamiew
jamiew / lazily calculated mixin.rb
Created August 22, 2008 23:57
Allows attributes to be declared as lazy, meaning that they won't be # computed until they are asked for
# pseudoforked from mojombo: http://rubyisawesome.com/2007/10/13/lazy-mixin
# Before you ask--yes, this has a very specific use case and is not
# generally applicable to the problem of fine-grained lazy evaluation.
# But it does *exactly* what I need it to do. =)
# Allows attributes to be declared as lazy, meaning that they won't be
# computed until they are asked for. Just mix this module in:
#
# class Foo
# wise's mod, from: http://blogwi.se/post/47083009/slightly-pimped-activerecord-create-or-update
# original from Rails Spikes: http://railspikes.com/2008/2/1/loading-seed-data
def self.create_or_update(options = {})
id = options.delete(:id)
conditions = options.delete(:conditions)
record = id ? find_by_id(id) : find(:first, :conditions => conditions) || new
options.each_pair { |key, value| record[key] = value }
@jamiew
jamiew / no javascript tooltips.css
Created August 25, 2008 06:40
modern browsers don't need javascript for tooltips. js for legacy is easy enough
/**************************
BEGIN TOOL TIP CSS
**************************/
a.tip {position: relative;}
a span.tip-content,
a span.tip-bottom {
position: absolute;
width: 273px;
padding: 20px 50px 5px 20px;
bottom: 48px;
# never render the full layout if it's an XmlHttpRequest
class ApplicationController < ActionController::Base
def render(*args)
args.first[:layout] = false if request.xhr? and args.first[:layout].nil?
super
end
end
## from railscasts: http://railscasts.com/episodes/124-subdomains
# models/invitation.rb
belongs_to :sender, :class_name => 'User'
has_one :recipient, :class_name => 'User'
validates_presence_of :recipient_email
validate :recipient_is_not_registered
validate :sender_has_invitations, :if => :sender
def delete_dups_for(model, collect_by)
keep_array = Hash.new { |h,k| h[k] = [] }
delete_array = []
model_name = model.name
all_objects = model.all.reverse #so we add newest first, sort of
pbar = ProgressBar.new(model_name.pluralize, all_objects.count)
all_objects.each do |obj|
if detect_dup((keep_array[obj.send(collect_by)]), obj).nil?
keep_array[obj.send(collect_by)] << obj
else
def sync_changesets
return unless ENABLE_SUBVERSION
begin
latest_changeset = changesets.find(:first, :select => 'revision', :order => 'revised_at DESC')
start = latest_changeset ? latest_changeset.revision.to_i + 1: 1
stop = latest_revision
return if start > stop
Changeset.transaction do
@jamiew
jamiew / passenger_status.rb
Created October 31, 2008 15:27 — forked from dan-manges/passenger_status.rb
munin plugin for Passenger Phusion process stats
#!/usr/bin/env ruby
# put in /etc/munin/plugins and restart munin-node
# by Dan Manges, http://www.dcmanges.com/blog/rails-application-visualization-with-munin
# NOTE: you might need to add munin to allow passwordless sudo for passenger-memory-stats
def output_config
puts <<-END
graph_category App
graph_title passenger status
graph_vlabel count
@jamiew
jamiew / Munin Passenger Phusion Memory Stats.rb
Created October 31, 2008 18:55
munin plugin to monitor Passenger Phusion memory stats
#!/usr/bin/env ruby
# put in /etc/munin/plugins and restart munin-node
# by Dan Manges, http://www.dcmanges.com/blog/rails-application-visualization-with-munin
# NOTE: you might need to add munin to allow passwordless sudo for passenger-memory-stats
def output_config
puts <<-END
graph_category App
graph_title Passenger memory stats
graph_vlabel count