Skip to content

Instantly share code, notes, and snippets.

View shugo's full-sized avatar

Shugo Maeda shugo

  • NaCl
  • Matsue, Shimane, Japan
View GitHub Profile
class Module
def append_features(base)
base.class_eval(&@_included_block) if instance_variable_defined?("@_included_block")
end
def included(klass = nil, &block)
if block_given?
@_included_block = block
else
super if defined?(super)
class Foo
A = "Foo::A"
@@b = "Foo::@@b"
end
module MyClassEval
A = "MyClassEval::A"
@@b = "MyClassEval::@@b"
def self.my_class_eval(klass, &block)
klass.class_eval(&block)
diff --git a/iseq.c b/iseq.c
index 80364ca..fc13d70 100644
--- a/iseq.c
+++ b/iseq.c
@@ -1344,11 +1344,15 @@ rb_iseq_clone(VALUE iseqval, VALUE newcbase)
if (!iseq1->orig) {
iseq1->orig = iseqval;
}
+ if (iseq0->local_iseq == iseq0) {
+ iseq1->local_iseq = iseq1;
diff --git a/vm.c b/vm.c
index b4d0f39..949fdb6 100644
--- a/vm.c
+++ b/vm.c
@@ -69,7 +69,7 @@ static inline VALUE
rb_vm_set_finish_env(rb_thread_t * th)
{
vm_push_frame(th, 0, VM_FRAME_MAGIC_FINISH,
- Qnil, rb_cObject, th->cfp->lfp[0], 0,
+ Qnil, Qnil, th->cfp->lfp[0], 0,
Building native extensions. This could take a while...
ERROR: Error installing mysql2:
ERROR: Failed to build gem native extension.
/home/shugo/local/bin/ruby-trunk extconf.rb
checking for rb_thread_blocking_region()... no
checking for mysql.h... yes
checking for errmsg.h... yes
checking for mysqld_error.h... yes
creating Makefile
SHELL = /bin/sh
# V=0 quiet, V=1 verbose. other values don't work.
V = 0
Q1 = $(V:1=)
Q = $(Q1:0=@)
n=$(NULLCMD)
ECHO1 = $(V:1=@$n)
ECHO = $(ECHO1:0=@echo)
@shugo
shugo / gist:1242494
Created September 26, 2011 15:25
mkmf.log
have_func: checking for rb_thread_blocking_region()... -------------------- no
"gcc -o conftest -I/home/shugo/local/include/ruby-1.9.1/i686-linux -I/home/shugo/local/include/ruby-1.9.1/ruby/backward -I/home/shugo/local/include/ruby-1.9.1 -I. -D_FILE_OFFSET_BITS=64 -O0 -g -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration conftest.c -L. -L/home/shugo/local/lib -Wl,-R/home/shugo/local/lib -L. -rdynamic -Wl,-export-dynamic -lpthread -lrt -ldl -lcrypt -lm -lc"
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: int main() {return 0;}
/* end */
@shugo
shugo / queens.rb
Created October 22, 2011 03:42
solve the N queens problem using flat_map
require "pp"
def queens(n, k = n)
if k == 0
[[]]
else
queens(n, k - 1).flat_map {|queens|
(1..n).map {|col| [k, col]}.select {|queen|
queens.all? {|q|
q[0] != queen[0] &&
@shugo
shugo / gist:1369468
Created November 16, 2011 06:50
how to stop warning: peer certificate won't be verified in this SSL session
require 'net/https'
http = Net::HTTP.new("example.com", 443)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
store = OpenSSL::X509::Store.new
store.set_default_paths
http.cert_store = store
# For Windows, use Net::HTTP#ca_file= instead of the above three lines as follows:
# http.ca_file = "/path/to/cacert.pem"
# Root certificates are available at http://curl.haxx.se/ca/cacert.pem
$ cat t.rb
b = eval("def get_binding; binding; end; get_binding",
TOPLEVEL_BINDING,
__FILE__,
__LINE__ - 3)
p eval(<<EOF, b)
def foo; end
self.foo
EOF
$ ~/ruby/1.9.2/bin/ruby-1.9.2 -v /tmp/t.rb