Skip to content

Instantly share code, notes, and snippets.

@cowboyd
cowboyd / allruby.rb
Created January 17, 2011 19:36
Proof of concept for making all ruby available to javascript.
require 'v8'
require 'openssl'
class Module
def [](name)
self.const_get(name)
end
end
@cowboyd
cowboyd / produces this stack trace
Created January 21, 2011 02:17
trying to do an instance_eval on any old object from java
package spike;
import org.jruby.embed.ScriptingContainer;
public class Spike {
public static void main(String[] args) {
ScriptingContainer container = new ScriptingContainer();
Object someInstance = container.runScriptlet("Object.new");
container.callMethod(someInstance, "instance_eval", "self", "<eval>", 1);
}
legolas:~ cowboyd$ ri Object
Nothing known about Object
legolas:~ cowboyd$ rvm use system
info: Now using system ruby.
legolas:~ cowboyd$ ri Object
### a whole mess of stuff about object
package ruby;
import hudson.model.Descriptor;
import hudson.slaves.Cloud;
@SuppressWarnings({"UnusedDeclaration"})
public abstract class RubyCloudDescriptor extends Descriptor<Cloud> {
protected RubyCloudDescriptor() {
super(Cloud.class);
@cowboyd
cowboyd / gist:810067
Created February 3, 2011 19:54
Meeting Details for Jenkins + JRuby

I'm giving WebEx because supposedly it's much more Linux friendly.

package spike;
import org.jruby.embed.ScriptingContainer;
public class Spike {
public void inspectClass(Class cls) {
System.out.println("java_class: " + cls);
}
require 'v8'
require 'delegate'
cxt = V8::Context.new
a = SimpleDelegator.new([17,1])
cxt['a'] = a
cxt.eval('a.push(10)')
puts a.inspect //=> [17,1,10]
require 'v8'
require 'delegate'
cxt = V8::Context.new
cxt['puts'] = lambda {|msg| puts(msg)}
a = SimpleDelegator.new([17,1])
def a.each(fn)
__getobj__.each do |item|
fn.call(item)
end
require 'v8'
require 'delegate'
cxt = V8::Context.new
cxt['puts'] = lambda {|msg| puts(msg)}
a = SimpleDelegator.new([17,1])
def a.each(fn)
__getobj__.each do |item|
fn.methodcall(item)
end
require 'v8'
V8::Context.new do |cxt|
a = cxt.eval('["fe", "fi", "fo", "fum"]')
a.each do |item|
puts item
end
end