Skip to content

Instantly share code, notes, and snippets.

rails c
while true do
  r = nil
  duration = Benchmark.ms do
    r = Cassie.session.execute("select count(*) from system.hints")
  end
@eprothro
eprothro / sidekiq_local_processes_stats.rb
Created November 6, 2017 19:55
Prints stats about any locally running sidekiq workers
# Emit key statistics about locally running Sidekiq processes to a stream.
#
require 'sidekiq/api'
class SidekiqProcessesPrinter
attr_reader :format
def initialize(opts={})
@format = opts.fetch(:format){:plain}
end
@eprothro
eprothro / sidekiq_shared_queues_info.rb
Created November 6, 2017 19:54
Prints stats about all queues being processed by Sidekiq
# Emit key statistics about Sidekiq queues to a stream.
#
require 'sidekiq/api'
class SidekiqQueuesPrinter
attr_reader :format
def initialize(opts={})
@format = opts.fetch(:format){:plain}
end
@eprothro
eprothro / puma_workers_printer.rb
Created November 6, 2017 19:39
ruby script to print puma worker/fork thread utilization info
require 'puma'
require 'puma/control_cli'
require 'json'
class PumaWorkersPrinter
attr_reader :format
def initialize(opts={})
@format = opts.fetch(:format){ :plain }
@password = opts.fetch(:password){ '' }
{
"script": {
"inline": "doc['system.memory.used.bytes'].value / 1024 / 1024",
"lang": "painless"
}
}
@eprothro
eprothro / temporary_method_override.rb
Last active October 25, 2017 14:44
You can temporarily override (not overwrite) a ruby method for an object by defining a method on the object metaclass.
class Foo
def bar
:object_method
end
end
f = Foo.new
f.bar
# => :object_method

Builder Pattern

Pros

  • Familar
  • Clean abstraction from model
  • No model changes required

Cons

  • Slow, 2N loading with cassandra-driver
class Foo
  
  def bar
    :object_method
  end
end

f = Foo.new
f.bar
module S3DirectUploading
extend ActiveSupport::Concern
included do
S3_UPLOAD_BUCKET = Aws::S3::Resource.new.bucket(ENV['S3_UPLOAD_BUCKET'])
helper_method :build_s3_direct_post
end
protected