Towards an interactive mruby shell
Tags: Ruby
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.

Leave a Comment