ArangoDB 3.12 Product Release Announcement! Read the blog for details. Read Blog

Vector-5

Towards an interactive mruby shell

Estimated reading time: 2 minutes

In my last post I investigated the possibility of using mruby as embedded language for AvocadoDB. As the first results look quite promising I decided to write a small interactive mruby shell. There is no better way to explore a new toy than to play with it.(Un)fortunately “irb” from Ruby is written in Ruby itself, so one cannot just use it for mruby. So, instead I had to write a small C++ program using “readline” and the compile/execute functions from mruby. In order to implement a Read-Eval-Print-Loop, well, one needs the print. That in itself is more complicated than expected, see the discussion on github. So, a Read-Eval-Loop will have to do for the time being. In order to find out when a definition is finished I had to do a small patch to the mruby parser. So, if things break down horribly do not blame the mruby developers – it might be entirely my fault.



fceller@opensuse114:~/AvocadoDB-MASTER> ./avocirb 
                        _      _      
   __ ___   _____   ___(_)_ __| |__   
  / _` \ \ / / _ \ / __| | '__| '_ \  
 | (_| |\ V / (_) | (__| | |  | |_) | 
  \__,_| \_/ \___/ \___|_|_|  |_.__/  
                                      
Welcome to avocirb 0.3.12. Copyright (c) 2012 triAGENS GmbH.
Using MRUBY 0.0.0 engine. Copyright (c) 2012 mruby developers.
Using READLINE 6.1.

avocmrb> p 1 + 2
3
avocmrb> def hallo
.......>   p "Hallo World"
.......>   return 10
.......> end
avocmrb> $i = hallo
"Hallo World"
avocmrb> p $i
10

The source-code can be found on github. Please keep in mind that this is a snapshot of the mruby repository with modifications. Do not blame the mruby developers.

In case you are using homebrew, you can install it as follows:

fceller@kendenich:~> brew uninstall avocadodb
Uninstalling /usr/local/Cellar/avocadodb/HEAD...
fceller@kendenich:~> brew install --HEAD avocadodb
==> Installing avocadodb
...
fceller@kendenich:~> avocirb 
                        _      _      
   __ ___   _____   ___(_)_ __| |__   
  / _` \ \ / / _ \ / __| | '__| '_ \  
 | (_| |\ V / (_) | (__| | |  | |_) | 
  \__,_| \_/ \___/ \___|_|_|  |_.__/  
                                      
Welcome to avocirb 0.3.12. Copyright (c) 2012 triAGENS GmbH.
Using MRUBY 0.0.0 engine. Copyright (c) 2012 mruby developers.
Using READLINE 0x0402.hex.

avocirb> p "Hallo, my name is mruby"
"Hallo, my name is mruby"
avocirb> 

Again, this is currently just experimental program to play around with mruby. Still, I’ve you have any remarks or improvments, let me know.

Picture of Frank Celler
April 22, 2012 ,

Frank is both entrepreneur and backend developer, developing mostly memory databases for two decades. He is the CTO and co-founder of ArangoDB. Try to challenge Frank asking him questions on C, C++ and MRuby. Besides Frank organizes Cologne’s NoSQL group & is an active member of NoSQL community.

Leave a Comment