Skip to content

Instantly share code, notes, and snippets.

methods = Hash.new do |hash, klass|
klass.instance_methods.each do |mid|
m = klass.instance_method mid rescue next
hash[m.name] = [] unless hash.key? m.name
hash[m.name] |= [klass]
end
end
ObjectSpace.each_object(Class) do |klass|
methods[klass]
class Thread
alias fiber_variable_get []
alias fiber_variable_set []=
alias [] thread_variable_get
alias []= thread_variable_set
end
class Fiber
def [] key
Thread.current.fiber_variable_get key
RubyVM::FrozenCore = (-1024..1024)
.map { |offset| RubyVM.object_id + offset }
.map { |ptr| ObjectSpace._id2ref(ptr) rescue nil }
.grep(Class)
.find { |k| k.method_defined?(:"core#define_method") }
class RubyVM::FrozenCore
set_postexe = instance_method(:"core#set_postexe")
define_method(:"core#set_postexe") { |*| self }
module PipeMixin
def >>(proc_or_method, *)
case proc_or_method
when Proc, Method, UnboundMethod
proc_or_method.call(self)
else
super
end
end
end
@benolee
benolee / index.html
Created June 30, 2013 23:04
the final countdown
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<script src="http://builds.emberjs.com.s3.amazonaws.com/handlebars-1.0.0-rc.4.js"></script>
<script src="http://builds.emberjs.com.s3.amazonaws.com/ember-1.0.0-rc.6.js"></script>
<meta charset=utf-8 />
<title></title>
</head>
<body>
@benolee
benolee / iseq-binding.rb
Created June 30, 2013 02:57
programmatically-created RubyVM::InstructionSequences always use toplevel binding
class Foo
define_method(:bar, &RubyVM::InstructionSequence.new('self').method(:eval))
end
Foo.new.bar
#=> main
@benolee
benolee / index.html
Last active December 19, 2015 03:19
Ember Handlebars helpers
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<script src="http://builds.emberjs.com.s3.amazonaws.com/handlebars-1.0.0-rc.4.js"></script>
<script src="http://builds.emberjs.com.s3.amazonaws.com/ember-1.0.0-rc.6.js"></script>
<meta charset=utf-8 />
<title></title>
</head>
<body>
class UnboundMethod
def self.new(name = :'', &block)
Module.new.module_eval do
define_method(name, block)
instance_method(name)
end
end
def call(receiver, *args, &block)
bind(receiver).call(*args, &block)
@benolee
benolee / Gemfile
Last active December 17, 2015 08:38
source 'https://rubygems.org'
gem 'minitest', '~> 5.0'