A ruby web shell that has autocompletion and readline behavior. It uses websockets, repl.js, readline.js and ripl for the shell engine.
Install the gem with:
sudo gem install nirvana
Your browser must have html5 websockets support.
To use, start a websocket server and open nirvana in a tab
# On a mac $ nirvana # Everywhere else $ nirvana | command_to_browser_path
If you close the tab, the path to nirvana's html page is (for reopening)
$ echo $(dirname $(gem which nirvana))/nirvana/public/index.html
To see what options nirvana takes (mostly options like ripl):
$ nirvana -h
Once you're in the nirvana web shell, autocompletion should work better than irb's (argument autocompletion):
>> Bo[TAB] >> Bond >> Bond.const[TAB] Bond.const_defined? Bond.const_get Bond.const_missing Bond.const_set Bond.constants >> Bond.const_g[TAB] >> Bond.const_get :Ag[TAB] >> Bond.const_get :Agent
Also notice that a subset of readline's functionality is available. Try C-l, C-r or C-p and they should do what readline normally does. For more keybindings, see readline.js.
Since nirvana uses ripl under the hood, most shell behavior is customizable with ripl plugins which get loaded from ~/.riplrc. See ripl for more.
rkh’s brirb: Original prototype which inspired this project
nirvana is MIT licensed. nirvana comes bundled with other libraries which have the following licenses: jquery (GPL2 and MIT), jquery.hotkeys plugin (no license), repl.js jquery plugin (MIT) and readline.js jquery plugin (MIT).
Easier way to reopen an existing session
Load ~/.irb_history into readline.js
Customizable html and js
Use text area for multi-line input
Possible plugins for sinatra and em-websocket-server