Mruby & Me

Post on 12-May-2015

595 views 2 download

Tags:

description

An introduction to mruby http://skillsmatter.com/podcast/home/mruby

Transcript of Mruby & Me

Mruby & MeSeb Jacobs

Monday, 11 February 13

Matz’s Dream

flickr/moofbong

Ruby for everyone, everywhere!

Monday, 11 February 13

So many rubies?JRuby, Rubinius, Topaz, ...

why do we need another one?

Monday, 11 February 13

What is mruby?lightweight ISO-compliant ruby

small memory footprintruby for embedded systems

Monday, 11 February 13

mruby is the samebut different

• compile mruby to bytecode

• modular library system

• no regexps by default

• no standard library

• no require!

Monday, 11 February 13

Hello bytecode

$ mruby -e 'puts "hello lrug";' --verbose

000 OP_LOADSELF!R1

001 OP_STRING! R2!"hello lrug"

002 OP_SEND! R1!:puts! 1

003 OP_STOP

Monday, 11 February 13

C calling Ruby#include <mruby.h>#include <mruby/compile.h>

int main(void){ mrb_state *mrb = mrb_open(); char code[] = "p 'hello world!'"; printf("Executing Ruby code from C!\n");

mrb_load_string(mrb, code); return 0;}

https://github.com/mruby/mruby/wiki/Hello-World

Monday, 11 February 13

Use it with your favourite language!

Ruby in LuaRuby in PHP

Ruby in Node.js!

Monday, 11 February 13

php-mruby$mrb = new Mruby();$mrb->assign('$myname','sebjacobs');$mrb->run('puts $myname');

https://github.com/chobie/php-mruby

Monday, 11 February 13

Embedded Ruby!Ruby in your fridgeRuby on your TVRuby on Wheels!

Monday, 11 February 13

Build mobile apps withMobiruby or Jamruby

Monday, 11 February 13

mod_mruby

r = Apache::Request.new()

Apache.rputs("redirecting request!")

r.filename = "/var/www/html/redirect.html"

Apache::return(Apache::OK)

https://github.com/matsumoto-r/mod_mruby

Monday, 11 February 13

WebRubyhttps://qiezi.me/projects/webruby-tutorial/

Monday, 11 February 13

MTestclass Test4MTest < MTest::Unit::TestCase

def test_assert_empty assert_empty([], 'array empty') end

def test_assert_equal assert_equal('', nil.to_s) end

def test_assert_includes assert_includes([1,2,3], 1) end

def test_assert_instance_of assert_instance_of Class, Array endend

MTest::Unit.new.run

https://github.com/iij/mruby-mtest

Monday, 11 February 13

Get involved!

Monday, 11 February 13

Module#constants

assert('Module#constants', '15.2.2.4.24') do! module Test4constants !! Const4Test4constant = 24! end

! module Test4constants2 !! include Test4constants !! Const4Test4constant2 = 42! end

! Test4constants.constants == [:Const4Test4constant]

! Test4constants2.constants == [:Const4Test4constant2]end

Monday, 11 February 13

Module#constants

mrb_valuemrb_mod_constants(mrb_state *mrb, mrb_value mod){! mrb_value ary;! ary = mrb_ary_new(mrb);! if (obj_iv_p(mod) && mrb_obj_ptr(mod)->iv) ! { iv_foreach(mrb, mrb_obj_ptr(mod)->iv, const_i, &ary);! }! return ary;}

Monday, 11 February 13

The future?mruby-ruby

Monday, 11 February 13

Check out

• github.com/mruby/mruby

• mruby.sh

• github.com/iij/mruby

Monday, 11 February 13

I’m @sebjacobsany questions?

Monday, 11 February 13