Skip to content

Instantly share code, notes, and snippets.

View we4tech's full-sized avatar

Hossain Khan we4tech

View GitHub Profile
@we4tech
we4tech / comparison-2.4.1.md
Last active September 14, 2018 17:49
Benchmark ruby eval VS RubyVM::InstructionSequence

Ruby 2.4.1

eval-vs-iseq

Eval (global) | 0.120000 | 0.120000 | 0.140000 | 0.140000 | 0.150000 | 0.150000 | 0.150000 | 0.150000 | 0.140000 | 0.140000 | 0.190000 | 0.150000 | 0.150000 | 0.150000 | 0.120000 | 0.150000 | 0.130000 | 0.130000 | 0.140000 | 0.150000 | 0.160000 | 0.150000 | 0.150000 | 0.150000 | 0.160000 | 0.130000 | 0.150000 | 0.140000 | 0.130000 | 0.160000 | 0.140000 | 0.140000 | 0.150000 | 0.140000 | 0.160000 | 0.150000 | 0.140000 | 0.140000 | 0.150000 | 0.130000 | 0.140000 | 0.140000 | 0.120000 | 0.140000 | 0.140000 | 0.130000 | 0.160000 | 0.130000 | 0.140000 | 0.140000 | 0.130000 | 0.130000 | 0.140000 | 0.130000 | 0.140000 | 0.130000 | 0.130000 | 0.130000 | 0.140000 | 0.130000 | 0.140000 | 0.140000 | 0.130000 | 0.140000 | 0.140000 | 0.130000 | 0.160000 | 0.120000 | 0.130000 | 0.130000 | 0.140000 | 0.130000 | 0.140000 | 0.130000 | 0.130000 | 0.130000 | 0.130000 | 0.13

@we4tech
we4tech / dtrace_for_ruby_c_call.d
Created August 16, 2018 16:21
Ruby Dtrace probe script that fires whenever a cmethod is about to call
ruby*:::cmethod-entry
{
printf("%s(%d) called from %s#%s\nSource:%s:%d\n", execname, pid, copyinstr(arg0), copyinstr(arg1), copyinstr(arg2), arg3)
}
@we4tech
we4tech / chain_middelware_call.rb
Created August 7, 2018 16:04
How to chain middleware call in Ruby?
# Create a middleware class
class Middleware
def call(*args)
puts "Args: #{args}"
yield
end
end
def call_in_chain(chain)
traverse_chain = lambda do
@we4tech
we4tech / Benchmark.txt
Last active August 2, 2018 20:56
Shows how to make a threaded call
## FYI: Not literally accurate. Because the API is coming from a non-constant setup. (A public API from httpbin)
user system total real
Sequential 10 calls
req:0: 200
req:1: 200
req:2: 200
req:3: 200
req:4: 200
req:5: 200
@we4tech
we4tech / host_application_routes.rb
Created August 2, 2018 15:21
Create a test mountable rails engine and mount through a parent rails routes
mount RailsEngineTest::Engine => 'api/v3/'
@we4tech
we4tech / broadcaster.rb
Last active August 1, 2018 17:25
Rabbit Fanout Exchange Example
require 'bunny'
require 'irb'
STDOUT.sync = true
conn = Bunny.new("amqp://guest:guest@localhost:5672")
conn.start
ch = conn.create_channel
$x = ch.fanout('msgs')
module ActiveRecord
module ConnectionAdapters
module PostgreSQL
module SchemaStatements
alias_method :old_schema_search_path=, :schema_search_path=
alias_method :old_schema_search_path, :schema_search_path
def schema_search_path=(schema_csv)
unless schema_search_path == schema_csv
self.old_schema_search_path = schema_csv
require 'byebug'
module MethodMetadata
def self.included(base)
base.extend ClassMethods
end
module ClassMethods
def method_advice(data = {})
lineno = caller_locations(1, 1).first.lineno
@we4tech
we4tech / data_leak_detector.rb
Created May 30, 2018 14:17
Find out data leak from the rspec example
RSpec.configure do |config|
def count_rows_from_all_tables
Hash[
ActiveRecord::Base.connection.tables.map do |tbl|
[tbl, ActiveRecord::Base.connection.execute("select count(*) from #{tbl}").values.last.first.to_i]
end
]
end
config.around :example do |example|
@we4tech
we4tech / rebase-reminder-circleci-job.yml
Created May 18, 2018 16:32
Git rebase reminder for CircleCI
rebase-reminder:
docker:
# specify the version you desire here
- image: circleci/ruby:2.4.1-node-browsers
environment:
RAILS_ENV: test
PGHOST: 127.0.0.1
PGUSER: root
PUBLIC_HOST: https://example.org