Skip to content

Instantly share code, notes, and snippets.

@subimage
subimage / cap_util.rb
Created March 14, 2015 20:56
Capistrano task to upgrade all servers
namespace :util do
desc "apt software update"
task :apt_upgrade do
run "#{sudo} apt-get update -q"
run %Q\#{sudo} sudo apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade -q -y\
end
end
@subimage
subimage / cap_rolling_restart.rb
Last active August 29, 2015 14:17
Capistrano rolling restart for passenger / nginx
desc "Restarts app servers in a rolling fashion, one by one with wait in between"
task :rolling_restart, roles: [:passenger] do
servers = find_servers_for_task(current_task)
servers.each do |s|
run "touch #{current_path}/tmp/restart.txt", hosts: s.host
puts "#{s.host} restarting...I'm sleep doe."
sleep 45
status = capture "sudo passenger-status; true", hosts: s.host
# Sometimes nginx/passenger is a bit wonky and fails to restart?
# Not sure if it's because of the load balancer fucking things up or what
@subimage
subimage / date_time_season.rb
Created April 29, 2015 23:32
Get the named 'season' for a Time / Date / DateTime in ruby
module DateTimeUtils
def season
case self.month
when 3, 4, 5
'Spring'
when 6, 7, 8
'Summer'
when 9, 10, 11
'Fall'
when 12, 1, 2
@subimage
subimage / gist:1255562
Created October 1, 2011 03:42
Sencha touch app file
//Ext.ns('CbMobile', 'CbMobile.views');
new Ext.Application({
name: 'CbMobile',
SIDEBAR_WIDTH: 320,
MENU_WIDTH: 250,
MENU_HEIGHT: 200,
launch: function() {
var app = this;
@subimage
subimage / is_defined.js
Created April 18, 2012 05:19
Javascript method to check if a chained object is defined.
/**
* Take string input in varName and determine whether it is defined object in Javascript
* ...like isDefined('foo.bar.baz');
* Better than doing if(foo && foo.bar && foo.bar.baz){}
* @param {String} varName
* @return {boolean}
* @author Bilal Soylu
*/
function isDefined(varName) {
var retStatus = false;
@subimage
subimage / backbone.basecollection.js
Created May 20, 2012 09:08
Backbone.js collection 'freshen' method that respects local changes.
Backbone.BaseCollection = Backbone.Collection.extend({
// Holds id of locally deleted items we ignore if we
// 'freshen' the collection and changes haven't propagated yet.
_localDeletedIds: [],
// Take an array of raw objects
// If the ID matches a model in the collection, set that model
// If the ID is not found in the collection, add it
// If a model in the collection is no longer available, remove it
//
// Keeps local changes, in case we've added things in the meantime.
@subimage
subimage / fuck_yourself_in_ie.js
Created June 28, 2012 20:48
How you can totally fuck yourself with JavaScript in IE.
// Inline assignment inside an 'if' statement works with most programming languages.
// However, in JavaScript there's a gotcha.
// This works in Safari, Firefox & Chrome...but will destroy your life in IE.
if(thing=functionThatReturnsThing()) {
doStuff();
}
// Do this instead
var thing=functionThatReturnsThing();
@subimage
subimage / gnarly_rails_scope.rb
Created July 6, 2012 04:53
Gnarly Rails scope of the day
# Projects a user has access to either through ProjectAssignment, or as an "account manager"
named_scope :user_has_access_to, lambda{|user|
{
:select => 'DISTINCT projects.*',
:joins => %q\
LEFT JOIN project_assignments
ON (
projects.id = project_assignments.project_id
AND project_assignments.has_access = 1
)
@subimage
subimage / .autotest.rb
Created July 8, 2012 20:45
Pass files or directories to autotest
# If you have a large test suite, being able to test only a subset
# of those items is a big speed boost.
#
# With this in your .autotest file you can run "autotest /some/dir" and only test
# the files within.
#
require 'redgreen/autotest'
Autotest.add_hook :initialize do |at|
unless ARGV.empty?
@subimage
subimage / CbMobile.model.Base.js
Created September 9, 2012 18:40
Sencha touch data model that fires CRUD events and can reload data from server
// Extended model that fires events on CRUD actions,
// and allows for reloading of data from the server.
Ext.define('CbMobile.model.Base', {
extend: 'Ext.data.Model',
// Overloaded methods that fire events
set: function(fieldName, value) {
this.callParent(arguments);
this.fireEvent('set', fieldName, value);
},