Skip to content

Instantly share code, notes, and snippets.

View robhurring's full-sized avatar
🍻
cheers

Rob Hurring robhurring

🍻
cheers
View GitHub Profile
@robhurring
robhurring / base_form.rb
Last active August 29, 2015 13:57
Rails Form Models
# app/forms/base_form.rb
class BaseForm
include ActiveModel::Validations
include ActiveModel::Conversion
extend ActiveModel::Naming
def initialize(attributes = {})
attributes.each do |name, value|
send("#{name}=", value)
end
@robhurring
robhurring / db.rake
Last active August 29, 2015 13:58
Rake task to sync heroku database locally
namespace :db do
desc 'sync with prod database'
task :sync, :backup_id do |t, args|
dump_file = Rails.root.join('tmp', 'latest.dump')
db_configs = YAML.load_file(Rails.root.join('config', 'database.yml'))
db_config = db_configs[Rails.env]
commands = [
"heroku pgbackups:capture --expire",
"curl -o #{dump_file} \`heroku pgbackups:url #{args[:backup_id]}\`",
@robhurring
robhurring / git-cleanup
Created June 24, 2014 19:47
Cleans up branches merged into "dev" from your local repo (except current branch, dev, and master)
#!/usr/bin/env sh
# IMPORTANT: exclude the current branch (*), master and dev branch. Add any other patterns here
# and do a --dry-run if you're unsure
to_prune=$(git branch --merged dev | grep -v '\*\|master\|dev')
function show_help {
echo Usage: $(basename $0)
echo " -n [--dry-run] Print branches that would be removed"
}
@robhurring
robhurring / app.js
Last active August 29, 2015 14:06
Rails status symbols in javascript (for angular)
/* global angular */
(function(module) {
'use strict';
module.run(['$rootScope', '$state', 'Rails',
function($rootScope, $state, Rails) {
$rootScope.$on('$stateChangeError', function(event, toState, toParams, fromState, fromParams, error) {
switch(error.status) {
// or Rails.status.not_found.code (if using the version with descriptions)
case Rails.status.not_found.:
@robhurring
robhurring / git-fuzzy-checkout
Created October 8, 2014 23:39
Fuzzy git checkout. With super awesome branch selection!
#!/usr/bin/env ruby
require 'optparse'
module CLI
COLORS = {
black: "\e[30;1m",
red: "\e[31m",
green: "\e[32m",
blue: "\e[34m",
white: "\e[37m",
# set the finddir lookup PATH
export DEFAULT_SEARCH_PATHS="~/Sites/apps:~/Sites/gems:~/Projects"
# use `finddir` to fuzzy lookup directories
function cds {
local search=$1;
local found=$(noglob finddir $search)
if [ $? -eq 0 ]; then
cd $found
fi
#!/usr/bin/env ruby
require 'optparse'
class Battery
DEFAULT_FORMAT = "P (S: R)"
def self.status
_, percent, status, remaining, _ = %x{pmset -g batt|grep InternalBattery}.split(/\t|;/).map(&:strip)
percent.gsub!(/%/, '')
remaining.gsub!(/[\(\)]/, '')
@robhurring
robhurring / usage.html
Created October 9, 2014 19:00
Custom form validators with angular
<form name="form">
<label>
Password
<input
type="password"
name="password"
ng-model="password"
required>
</label>
<small class="error" ng-show="form.password.$invalid">
#!/bin/bash
set -e # works without this
set -x # debug
source "$HOME/.rvm/scripts/rvm" #so 'cd' will change gemset when dotfiles present
#setup
rm -rf ~/tmp/dir_with_gemfile
mkdir -p ~/tmp/dir_with_gemfile
@robhurring
robhurring / application.html.erb
Last active August 29, 2015 14:14
Capybara + Angular.js wait_for_ajax
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Ohai</title>
<%= stylesheet_link_tag "application", media: "all" %>
<%= csrf_meta_tags %>
</head>
<body class="container">