Skip to content

Instantly share code, notes, and snippets.

@ajvargo
ajvargo / ar_attributes_with_associations.rb
Created February 25, 2014 16:49
Add in association attributes to model attributes.
# Based on http://stackoverflow.com/questions/2299139/retrieve-all-associations-attributes-of-an-ar-model
# Doesn't spelunk, doesn't name associations for easy consumption back. Good first go though.
# It gives the object attributes with the attributes of first cousin associations.
class ActiveRecord::Base
def attributes_with_associations
association_names = self.class.reflect_on_all_associations.collect { |r| r.name }
me = self.class.find self.id, :include => association_names
pairs = association_names.collect do |association_name|
@ajvargo
ajvargo / payment_calculator.rb
Created March 31, 2014 20:31
Calculate monthly payments to be done in N months
#!/usr/bin/env ruby
# This prints a table showing how much a monthly payment
# would need to be to pay off a loan. It takes a max and
# min loan amount, and how much to jump between them. I
# use it to dream about paying off student loans. It allows
# me to see what my 1 year pay-off payments are as the loan
# gets paid back.
class PaymentCalculator
@ajvargo
ajvargo / gist:447e8e03518a3bdc75c5
Last active August 29, 2015 14:01
Get a summary and ticket number from Jira, based on branch name
;; elisp
(setq jira-base-url "<JIRA BASE URL>"
jira-request-url (concat "https://" jira-base-url "/rest/api/latest/issue/")
jira-username "<USERNAME>"
jira-password "<PASSWORD>"
jira-credentials (base64-encode-string (concat jira-username ":" jira-password))
;; this is a regex to trim things off the branch name
;; as is, removes: dev-, rel-, av-, dev/, rel/, av/
jira-branch-trim-regex "^\\(dev\\|rel\\|\\av\\)\\(-\\|/\\)"
jira-auth-key (concat jira-base-url ":443"))
@ajvargo
ajvargo / line_formatter.rb
Last active August 29, 2015 14:02
A simple RSpec formatter to give you the example file and line, along with a description and status.
require 'rspec/core/formatters/base_text_formatter'
# RSpec 2
# rspec --require <path_to>/line_formatter.rb --format LineFormatter spec/
# ./spec/lib/a_spec.rb:39
# Success Thing#with_thing does thing
#
# ./spec/lib/a_spec.rb:45
# pending Thing#does_other_thing is pending
@ajvargo
ajvargo / loan_payment.rb
Created November 10, 2014 21:48
Calculate payments for getting paid off in a certain time
#!/usr/bin/env ruby
require 'date'
class Repayment
MONTHLY_INTEREST = (<INTEREST (5.00)> / 12 / 100)
def initialize(payment, principal)
@payment, @principal = payment, principal
end
@ajvargo
ajvargo / pre-push
Last active August 29, 2015 14:16
My version of protecting against a force push
#!/usr/bin/env bash
# Prevents force-pushing to certain branches w.o confirmation
# install to <repo>/.git/hooks/
# chmod +x
protected_branches="^(master|production)"
current_branch=`git rev-parse --abbrev-ref HEAD`
push_command=`ps -ocommand= -p $PPID`
force_push="force|delete|-f"
@ajvargo
ajvargo / .irbrc
Created September 29, 2010 02:36
require 'pp'
require 'irb/completion'
IRB.conf[:AUTO_INDENT]=true
require 'irb/ext/save-history'
IRB.conf[:SAVE_HISTORY] = 100
IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb-save-history"
@ajvargo
ajvargo / gist:703400
Created November 17, 2010 13:57
Pretty git-ified prompt in bash
# ~/.bash_profile
# give prompt as ~/foo(branch_name*)
# where the * indicates uncommitted work
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
export PS1='\[\033[36;40m\]\w\[\033[0;33m\]$(parse_git_branch)\[\e[0m\]$ '
@ajvargo
ajvargo / console
Created February 26, 2011 21:13
Homemade IRB Console, like Rails!
#!/usr/bin/env ruby
# console, generally inspired by rails console
#
# put in root of project, adjust file paths and the like
# chmod the file to be executable by you
# run:
# project_root >> ./console
@ajvargo
ajvargo / emacs_tidbits.el
Created April 14, 2011 13:54
Little emacs setting to share with co-workers
;; keep a single instance of Emacs I can send crap to
;; allows me to do things like this in my bash profile
;; export GIT_EDITOR=/Applications/Emacs.app/Contents/MacOS/bin/emacsclient
;; send files to emacs from the command line as 'emacsclient <filename>'
(server-start)
;; 2 spaces instead of 4 for javascript
(setq js-indent-level 2)
;; turn on linum for mode xxx