Skip to content

Instantly share code, notes, and snippets.

View nthj's full-sized avatar

Nathaniel Jones nthj

  • Orlando, FL
View GitHub Profile
@nthj
nthj / gist:5297916
Last active December 15, 2015 17:39 — forked from shripadk/gist:552554
How to setup Heroku Hostname SSL with GoDaddy SSL Certificate and Zerigo DNS
Heroku recently added an exciting new 'Hostname SSL' option. This option offers the broad compatibility of IP-based SSL, but at 1/5 the price ($20 / month at the time of this writing).
The following tutorial explains how to use Heroku's new 'Hostname SSL' option on your Heroku project. Before we begin, let's list what we're using here:
* Heroku Hostname SSL
* GoDaddy Standard SSL Certificate
* Zerigo DNS
Note: I am not using the Heroku Zerigo DNS add-on, instead I have a separate Zerigo account for my DNS needs. I do this because Zerigo offers 30 hosts on free direct accounts, versus only 10 hosts on the free Heroku add-on.
@nthj
nthj / rpn.rb
Last active December 11, 2015 14:29
Reverse Polish Notation
def rpn expression
stack = []
expression.split(' ').each do |token|
stack << if token =~ /\d/
token
else
[stack.pop, stack.pop].map { |t| t.to_i }.inject do |sum, x|
eval "#{x} #{token} #{sum}"
end
@nthj
nthj / cache.rb
Created October 25, 2012 20:30
Nuke your cache on deployment in Rails 3
# Throw this into config/initializers/cache.rb
if ARGV.any? { |a| %w(s server thin).include?(a) }
puts "=> Initializing environment, clearing cache"
Rails.cache.clear
end
@nthj
nthj / paperclip.rake
Created October 2, 2012 18:14
How to fix lost Paperclip asset pictures, because asset_file_name wasn't successfully saved
namespace :paperclip do
# Fix broken timestamps
task :fix => :environment do
# All user picture files in the production environment (directories[1])
files = User.last.picture.send(:connection).directories[Rails.env.staging? ? 2 : 1].files.select do |file|
file.key.starts_with?('users/pictures')
end.sort_by(&:last_modified)
(0..300).each do |ranged|
puts "Ranged: #{ranged}"
@nthj
nthj / Gemfile
Created September 25, 2012 03:33
Quickly dump your latest Heroku backup into Rackspace Cloud Files via rake db:backup
gem 'heroku'
@nthj
nthj / rails
Created September 14, 2012 20:58
Automatically kill zombie Thin servers when booting up a rails server
#!/usr/bin/env ruby
# script/rails
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
# Automatically kill zombie Thin servers when booting up a rails server
if ENV['RACK_ENV'] == 'development' && pid = `ps -ef | grep thin | grep -v grep | sort -r | sed -n 2p | awk '{print $2}'`
puts "=> Killing existing server with pid #{pid}"
`kill -9 #{pid}`
end
@nthj
nthj / example.rb
Created February 13, 2012 13:12
Other
class Estimated < Other; end
class Forwarded < Other; end
case discussable
when Estimated then :queued # discussable.estimate?
when Forwarded then :read # discussable.forward?
else :unread
end
@nthj
nthj / gist:1041160
Created June 22, 2011 20:55
npa function for calculating gross receipts when adding customers over a certain duration
# n = number of additional customers per period
# p = amount each customer is charged per period
# a = duration of period to calculate total gross for
#
# example: customer every 2 weeks, 25 per month, after 6 months: (fn).call(2, 25, 6)
# => 1050
->(n, p, a) { t = 0; a.times { |i| t += (i + 1) * p * n }; t }
@nthj
nthj / gist:1009755
Created June 6, 2011 04:41
Create thumbnail of provided key, and save it as {key name}_medium.jpg
# if "key" equals "bird.jpg",
# then this code creates a smaller thumbnail of the bird,
# sized to 270 by 167 pixels,
# adding a watermark,
# compressing the thumbnail to save space,
# and saving the new thumbnail as "bird_medium.jpg"
Original.find(key).compress(70).resize(270, 167).to(:fit).watermark.save(:medium)
@nthj
nthj / filterable.rb
Created June 6, 2011 04:29
Add Rails Controller filters aliases, like after_show, before_destroy
module Railings
module Filterable
[:after, :before].each do |context|
[:index, :show, :new, :create, :update, :destroy].each do |action|
define_method "#{context}_#{action}", ->(filter, options = { }, &block) do
send "#{context}_filter", filter, options.merge!(:only => action), &block
end
end
end
end