Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Run EventMachine with a ripl shell asynchronously with readline editing and completion via ffi.
Ruby
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
examples
lib
.gemspec
.gitignore
LICENSE.txt
README.rdoc
Rakefile

README.rdoc

Description

Run EventMachine code in a ripl shell asynchronously with readline editing and completion. Uses FFI to access the alternate Readline callback interface.

Install

Install the gem with:

gem install ripl-readline-em

Usage

require 'eventmachine'
require 'ripl/readline/em'

EventMachine.run do
  EventMachine.add_periodic_timer(2) do
    # Example of writing output while line is being edited.
    #
    # See also http://stackoverflow.com/questions/1512028/gnu-readline-how-do-clear-the-input-line
    print "\b \b" * Readline.line_buffer.size
    print "\r"
    begin
      puts "#{Time.now}"
    ensure
      Readline.forced_update_display
    end
  end

  # Start up Ripl, but it will not receive any user input
  Ripl.start

  # Watch stdin for input, sending it to Ripl as entered (including editing,
  # history and completion).
  #
  # Default behavior is to call EventMachine.stop_event_loop when the shell is
  # exited.  Modify this behavior by passing a hash with an `:on_exit` entry,
  # either nil or a Proc that will be run on exit instead of the default.
  EventMachine.watch_stdin Ripl::Readline::EmInput

  # -or-
  # EventMachine.watch_stdin Ripl::Readline::EmInput, :on_exit => nil

  # Yet another option is to create your own handler module, include
  # Ripl::Readline::EmInput, and override the `on_exit` method.
end
Something went wrong with that request. Please try again.