Skip to content

Instantly share code, notes, and snippets.

View nicksieger's full-sized avatar

Nick Sieger nicksieger

View GitHub Profile
@nicksieger
nicksieger / delayed_job_990_monkeypatch.rb
Last active July 29, 2017 17:54
Monkeypatch DJ to make payload_object exception-safe
## Monkeypatch payload_object like https://github.com/collectiveidea/delayed_job/pull/990
module Delayed
module Backend
class InvalidPayload
ParseObjectFromYaml = %r{\!ruby/\w+\:([^\s]+)} # rubocop:disable ConstantName
def initialize(handler, exception)
@handler = handler
@exception = deserialization_error(exception)
end
@nicksieger
nicksieger / mongodb-2.4.14-gperftools-2.0-libc_override_osx.h.patch
Created May 17, 2017 16:37
Patches Mongo's third party copy of gperftools libc_override_osx.h for Sierra
diff --git a/src/third_party/gperftools-2.0/src/libc_override_osx.h b/src/third_party/gperftools-2.0/src/libc_override_osx.h
index 78a0ef2f95..13ec5b8d66 100644
--- a/src/third_party/gperftools-2.0/src/libc_override_osx.h
+++ b/src/third_party/gperftools-2.0/src/libc_override_osx.h
@@ -205,6 +205,33 @@ extern "C" {
size_t malloc_usable_size(void* p) { return tc_malloc_size(p); }
} // extern "C"
+static malloc_zone_t *get_default_zone()
+{
@nicksieger
nicksieger / callback_trace.rb
Last active October 20, 2016 20:47
Troubleshoot ActiveRecord callbacks; require/load this at the top of config/application.rb
module CallbackTrace
def self.included(kls)
kls.send :alias_method_chain, :_compile_filter, :trace
end
def _compile_filter_with_trace(filter)
generated_code = _compile_filter_without_trace(filter)
return generated_code if filter.is_a?(Array) || @kind == :around || !(@klass.ancestors.include?(ActiveRecord::Base))
"($stdout.print 'Callback: #{@kind} #{@klass.name}##{@raw_filter}'; $stdout.puts self.inspect; #{generated_code})"
end
# Monkeypatch to disable connection pooling in ActiveRecord
module ActiveRecord
module ConnectionAdapters
class ConnectionPool
def checkout
c = ActiveRecord::Base.send(spec.adapter_method, spec.config.dup)
c.verify!
c
end
@nicksieger
nicksieger / pickjdk.sh
Created November 9, 2008 03:35
pickjdk: a JDK chooser bash function
#!/bin/bash
#
# pickjdk: provides a shell function that allows you to choose a JDK.
#
# The function sets JAVA_HOME and PATH On Linux or
# Windows, just set the environment variable JDKS_ROOT to the directory
# containing multiple versions of the JDK and the function will prompt you to
# select one. On OSX, JDKs will be discovered for you.
# JDKS_ROOT=/opt/jdk
@nicksieger
nicksieger / jruby-rack-x-sendfile.rb
Created May 5, 2011 22:22
X-Sendfile middleware for JRuby-Rack 1.0.8 or greater
class JRubyRackXSendfile
def initialize(app)
@app = app
end
def call(env)
result, headers, body = @app.call(env)
if headers['X-Sendfile']
[result, headers, File.new(headers.delete('X-Sendfile'))]
else
@nicksieger
nicksieger / noisy.rb
Created September 1, 2012 16:32
A VCR like object that allows you to collect messages sent to it and print them out later
class NoisyStubCollector < BasicObject
def method_missing(meth,*args,&blk)
@messages ||= []
@messages << [meth,args,blk]
self
end
def inspect
(@messages || []).map{|meth,args,blk| "#{meth}#{args.inspect}#{blk.inspect if blk}"}.join(' ')
@nicksieger
nicksieger / thread_dump_on_quit.rb
Created August 29, 2012 14:38
kill -QUIT thread dump in Ruby. Seems like I need this and forget exactly how to do it.
trap("QUIT") do
Thread.list.each do |t|
$stderr.puts
$stderr.puts t.inspect
$stderr.puts t.backtrace.join("\n ")
end
end
<?xml version='1.0'?>
<!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
<service_bundle type='manifest' name='jenkins/node'>
<service name='network/jenkins/node' type='service' version='0'>
<create_default_instance enabled='true'/>
<single_instance/>
<dependency name='fs' grouping='require_all' restart_on='none' type='service'>
<service_fmri value='svc:/system/filesystem/local'/>
</dependency>
<dependency name='net' grouping='require_all' restart_on='none' type='service'>
@nicksieger
nicksieger / gist:2906871
Created June 10, 2012 18:43
Renaming a Java thread in JRuby
$ jirb
irb(main):001:0> t = Thread.new { sleep }
=> #<Thread:0x64e5b2 sleep>
irb(main):002:0> require 'jruby'
=> true
irb(main):003:0> jt = JRuby.reference(t)
=> #<Thread:0x64e5b2 sleep>
irb(main):004:0> jt.native_thread.name
=> "RubyThread-7: (irb):1"
irb(main):005:0> jt.native_thread.name = "My Ruby thread"