Skip to content

Instantly share code, notes, and snippets.

View dennisfaust's full-sized avatar

Dennis Faust dennisfaust

View GitHub Profile
@dennisfaust
dennisfaust / sidekiq_unique_jobs_hash_compactor.rb
Created July 12, 2017 20:46
sidekiq-unique-jobs gem not deleting expired keys in its uniquejobs hash
# https://github.com/mhenrixon/sidekiq-unique-jobs/issues/161
# Even worse: https://github.com/mhenrixon/sidekiq-unique-jobs/issues/234
class SidekiqUniqueJobsHashCompactor
include Sidekiq::Worker
sidekiq_options queue: "slow"
def perform
# Skip if there are jobs queued...
return unless Sidekiq::Queue.all.select { |q| q.size > 100 }.blank?
@dennisfaust
dennisfaust / session_cookie_manipulation.rb
Last active March 2, 2017 18:58
Manipulating Rails 3 Session Cookies in Minitest
tl;dr:
$ set -o vi
$ bind '"\ee": emacs-editing-mode'
Then hit Esc-e
$ bind -P| grep edit
edit-and-execute-command can be found on "\C-x\C-e".
emacs-editing-mode is not bound to any keys
vi-editing-mode is not bound to any keys
@dennisfaust
dennisfaust / nullstring_example.go
Created November 5, 2015 19:51
github.com/go-playground/validator Custom null.string validator example
// NewNotBlankValidator - given field must be declared as a null.* type. This checks to make sure the
// field value is its zero or null, or filled in but NOT set to empty String
// e.g. {value="", err=false} is not valid.
func NewNotBlankValidator(db *gorm.DB) validator.Func {
return func(v *validator.Validate, topStruct reflect.Value, currentStruct reflect.Value, field reflect.Value, fieldType reflect.Type, fieldKind reflect.Kind, param string) bool {
switch fieldKind {
case reflect.String:
if field.String() == "" && field.IsValid() {
return false
}
@dennisfaust
dennisfaust / gist:f181a8444ded0daef0b8
Created December 4, 2014 00:15
Convert types on Scala Collections
// TODO: Save this snippet for converting collections:
XXX.to[({type l[_] = collection.immutable.HashMap[UserInformationKind, String]})#l]
@dennisfaust
dennisfaust / gist:725e81aa02ea2a9f90e7
Created August 20, 2014 20:51
Ruby: Use a method directly from a module...
module Moddy
def show_me
puts "Yop"
end
end
Class.new.extend(Moddy).show_me
Yop
# this may come in handy also:
@dennisfaust
dennisfaust / gist:d657f130c0fe1865ac9b
Last active August 29, 2015 14:03
Query String, Hash and Params back and forth...
# To and from hash and params (Rails 4)
str = 'nonce=2147483647&version=2.0&client_id=8iR5q'
h = Rack::Utils.parse_query str
params = ActiveSupport::HashWithIndifferentAccess.new(h)
# back to string:
query_str = params.to_query
Rack::Utils.parse_query(query_str) == Rack::Utils.parse_query(str)
@dennisfaust
dennisfaust / delayed_job_formatted_logger
Created December 20, 2013 01:57
Formatted log entries from Delayed Job without banging your head...
#
# config/delayed_job_config.rb
#
Delayed::Worker.logger = Logger.new(Rails.root.join('log', 'delayed_job.log'))
# The base logger is terrible. It only puts what you send. Nothing else. So I had to dig this up and add it.
class DJFormatter
def call(severity, time, progname, msg)
formatted_severity = sprintf("%-5s","#{severity}")
"#{Time.now.utc} [#{progname} #{formatted_severity} pid:#{$$}] #{msg.strip}\n"
@dennisfaust
dennisfaust / gist:7030268
Created October 17, 2013 18:54
Rspec for Testing Static Pages in a Ruby on Rails Site
describe "StaticPages", type: :feature do
header_links = [
{ name: 'Sign Up', link: '/signup', text: 'Contacts associated with purchases' },
{ name: 'Log In', link: '/login', text: 'Forgot your user name or password?' }
]
footer_links = [
{ name: 'Home', link: '/', text: 'Easily and efficiently track'},
{ name: 'Plans & Pricing', link: '/plan', text: 'Standard Features'},
@dennisfaust
dennisfaust / ruby_redis_connect.rb
Created November 8, 2012 22:55
Ruby/Redis Connection - redis-rb doesn't throw an exception until you try to do something...
#
# Check: http://redis-rb.keyvalue.org/v2.2.0/
#
if Redis_connect
case Rails.env
when "production"
opts = {:host => "YOUR HOST NAME OR IP", :port => "6379", :thread_safe => true }
when "staging"
opts = {:host => "YOUR HOST NAME OR IP", :port => "6379", :thread_safe => true }
else