Skip to content

Instantly share code, notes, and snippets.

View rantler's full-sized avatar

Randy Antler rantler

  • Computer Diversions
  • Seattle, WA
  • 07:58 (UTC -07:00)
View GitHub Profile
class Foo
def meth(a:, b:, c:)
method(__method__).parameters.map(&:last).each do |var|
instance_variable_set("@#{var}", binding.local_variable_get(var))
end
end
def inspect
puts "@a = #{@a}"
puts "@b = #{@b}"
puts "@c = #{@c}"
require 'base64'
class ValidateCsrfTokens
class << self
def validate(form_token:, cookie_token:)
decoded_form_token = Base64::decode64(form_token)
decoded_cookie_token = Base64::decode64(cookie_token)
form_token_length = decoded_form_token.bytes.length
cookie_token_length = decoded_cookie_token.bytes.length
@rantler
rantler / sketch.rb
Last active August 6, 2018 18:27
Raise custom exception on request error
class ApprovalError < StandardError
def initialize(response)
@response = response
@request = response.request
end
def inspect
"uri: #{@request.uri}, response_body: #{@response.body}"
end
end
@rantler
rantler / fast_fib.rb
Created June 1, 2017 21:30
Example of fast fibonacci algorithm in Ruby
# Cribbed from https://stackoverflow.com/questions/24438655/ruby-fibonacci-algorithm
def fib_memo(n, memo)
memo[n] ||= fib_memo(n-1, memo) + fib_memo(n-2, memo)
end
def fib(n)
raise "fib not defined for negative numbers" if n < 0
fib_memo(n, [0, 1])
end
@rantler
rantler / sum.rb
Last active August 29, 2015 14:17 — forked from davingee/gist:8278b9f6c66f0c53f5e9
Fork of SumOfEach with "equals5" solution
# gem install awesome_print
# gem install benchmark
# gem install pry
require 'awesome_print'
require 'pry'
require 'benchmark'
class SumOfEach
attr_accessor :number_to_equal, :array, :answers, :array_count, :to_remove, :answered
# encoding: utf-8
namespace :db do
desc "Import DB Data"
namespace :import do
desc "Import production db to whatever 'ENV['to']' db is set to and s3 sync"
task :production => :environment do
## example rake db:import:production to=qa s3=true
## or no s3
@rantler
rantler / foo.rb
Created May 27, 2014 23:50
Read CSV skipping crap at the start of the file
require 'rubygems'
require 'csv'
File.open('/tmp/foo.csv', 'r') do |file|
file.readline # crap
file.readline # krap
csv = CSV.new(file, headers: :first_row).each do |row|
puts row.inspect
end
end
@rantler
rantler / gist:7742981
Last active December 29, 2015 23:29
How to *actually* replace invalid UTF-8 characters in string. :-)
a = "abc\xffdef"
a.force_encoding('UTF-8') # => "abc\xFFdef"
a.encoding.name # => "UTF-8"
# ok
a.valid_encoding? # => false
# wtf?
@rantler
rantler / gist:7403845
Last active December 27, 2015 23:09
Simple solution to time diff in clock face degrees. With tests.
class DegreeClock
HOURS_PER_DAY = 24
MINUTES_PER_HOUR = 60
DEGREES_PER_HOUR = 360
DEGREES_PER_DAY = DEGREES_PER_HOUR * HOURS_PER_DAY
DEGREES_PER_MINUTE = DEGREES_PER_HOUR / MINUTES_PER_HOUR
HOURS_PER_HALF_DAY = HOURS_PER_DAY / 2
class Time
# https://rpm.newrelic.com/account/131856/agent/3256655/metrics/425412176
# https://rpm.newrelic.com/accounts/131856/plugins?type=6106
# http://note.io/1bjT5FW
[<2013-11-08 23:00:22, 2013-11-08 23:01:22> metric: count:1 total:7.0,
<2013-11-08 23:01:21, 2013-11-08 23:02:21> metric: count:1 total:7.0,
<2013-11-08 23:02:21, 2013-11-08 23:03:21> metric: count:1 total:7.0,
<2013-11-08 23:03:22, 2013-11-08 23:04:22> metric: count:1 total:7.0,
<2013-11-08 23:04:22, 2013-11-08 23:05:22> metric: count:1 total:7.0,
<2013-11-08 23:05:23, 2013-11-08 23:06:23> metric: count:1 total:7.0,
<2013-11-08 23:06:23, 2013-11-08 23:07:23> metric: count:1 total:7.0,