Using irb as a REPL

S

S. Robert James

Lisp programmers often use the REPL (similar to IRB) as a simple way
to make an interactive interface to their app. I'd like to do the
same thing with irb - that is, define my classes, and load irb in the
context.

I can get about half way there:

require 'irb'
IRB.start
my_class = MyClass.new(...) # I want this to be the context
irb my_class

....works, but you have to type "quit" to load. Is there a better way
to leverage IRB from within my code? What do the Ruby hackers say? (I
know a lot have a Lisp background, and so wouldn't want Ruby to not
have a REPL shell...)
 
S

S. Robert James

Lisp programmers often use the REPL (similar to IRB) as a simple way
to make an interactive interface to their app. I'd like to do the
same thing with irb - that is, define my classes, and load irb in the
context.

I can get about half way there:

require 'irb'
IRB.start
my_class = MyClass.new(...) # I want this to be the context
irb my_class

...works, but you have to type "quit" to load. Is there a better way
to leverage IRB from within my code? What do the Ruby hackers say? (I
know a lot have a Lisp background, and so wouldn't want Ruby to not
have a REPL shell...)

Another, similar problem with the above:
irb my_class
conf.prompt_mode = :SIMPLE # This line is ignored
 
C

Cameron McBride

Another, similar problem with the above:
irb my_class
conf.prompt_mode = :SIMPLE # This line is ignored

hmmm, I've also had some problems trying to add a command interface to
some code. I found trying to bend IRB to fit the needs seems to be
trickier than just coding up a solution in readline directly. Is that
really the best solution?

Cameron
 
S

S. Robert James

hmmm, I've also had some problems trying to add a command interface to
some code. I found trying to bend IRB to fit the needs seems to be
trickier than just coding up a solution in readline directly. Is that
really the best solution?

Cameron

Then you miss out on the full power of Ruby in your interface!
The beauty of using a REPL or IRB is that you have an easy command
line interface, with automatic scripting when you need it, expandable
to the full power of the host language as needed.
 
C

Cameron McBride

Then you miss out on the full power of Ruby in your interface!
The beauty of using a REPL or IRB is that you have an easy command
line interface, with automatic scripting when you need it, expandable
to the full power of the host language as needed.

Sorry, I wasn't clear. I'm talking about building a ruby library and
then the CLI with readline does a stateful eval. Problem is that it
reimplements functionality that already exists in IRB.

Cameron
 
W

_why

Lisp programmers often use the REPL (similar to IRB) as a simple way
to make an interactive interface to their app. I'd like to do the
same thing with irb - that is, define my classes, and load irb in the
context.

There's an example of this in Shoes:

http://code.whytheluckystiff.net/svn/shoes/trunk/samples/irb.rb

The MimickIRB class just wraps IRB's RubyLex class in a very simple
REPL. I don't know if this is exactly what you're looking for
(since it doesn't do debugging, .irbrc, or frames) but it's nice if
you want to start your own from nothing.

_why
 
G

Giles Bowkett

Lisp programmers often use the REPL (similar to IRB) as a simple way
to make an interactive interface to their app. I'd like to do the
same thing with irb - that is, define my classes, and load irb in the
context.

There's one very simple way to do this. Do

gem install aws-s3

And have a look at s3sh in the bin dir. It's basically just a shell
script. It just aims regular old IRB at a setup file which establishes
some relevant variables and loads some relevant modules.

Rails console does nearly exactly the same thing - all it really adds
in is more libraries and some command-line args with optparse.

--
Giles Bowkett

Podcast: http://hollywoodgrit.blogspot.com
Blog: http://gilesbowkett.blogspot.com
Portfolio: http://www.gilesgoatboy.org
Tumblelog: http://giles.tumblr.com
 
J

Joel VanderWerf

S. Robert James said:
Lisp programmers often use the REPL (similar to IRB) as a simple way
to make an interactive interface to their app. I'd like to do the
same thing with irb - that is, define my classes, and load irb in the
context.

I can get about half way there:

require 'irb'
IRB.start
my_class = MyClass.new(...) # I want this to be the context
irb my_class

...works, but you have to type "quit" to load. Is there a better way
to leverage IRB from within my code? What do the Ruby hackers say? (I
know a lot have a Lisp background, and so wouldn't want Ruby to not
have a REPL shell...)

This might help:

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/244139
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,055
Latest member
SlimSparkKetoACVReview

Latest Threads

Top