[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Trouble using Irb as Ruby Console

Bryan Richardson

12/12/2008 8:18:00 PM

Hello all,

I'm attempting to convert a command-line driven application into a
console application using Irb. However, I'm having some trouble right
out of the gate. Here's what I have so far:

module App
class Framework
def use(plugin)
path = "plugins/#{plugin}"
tree = plugin.split('/')
tree.collect! { |x| x.capitalize }
@plugin = Object.const_get("App::#{tree.join('::')}").new
end

def show_options
@plugin.show_options
end

def run
@plugin.run
end
end
end

binding = App::Framework.new

load 'irb.rb'
IRB.setup(nil)
IRB.conf[:PROMPT][:APP] = IRB.conf[:PROMPT][:SIMPLE]
IRB.conf[:PROMPT][:APP][:PROMPT_I] = 'app > '
IRB.conf[:PROMPT_MODE] = :APP

irb = IRB::Irb.new(IRB::WorkSpace.new(binding))

IRB.conf[:MAIN_CONTEXT] = irb.context

trap('SIGINT') do
irb.signal_handle
end

catch(:IRB_EXIT) do
irb.eval_input
end

Essentially, I'm setting the App::Framework class to be my Irb context.
When I run this program and try to load a plugin named 'test' using the
'use' method, I get the following:

antfarm > use test
ArgumentError: wrong number of arguments
from (irb):1:in `test'
from (irb):1
from :0
antfarm >

From this, it looks like 'test' might be a keyword in Irb, because when
I use a different plugin name I get the following:

antfarm > use hello
NameError: undefined local variable or method `hello' for
#<Antfarm::Framework:0xb7c4c16c>
from (irb):1
from :0
antfarm >

From this, it looks like 'use' might be a keyword as well. I'm having
trouble finding good documentation on Irb Contexts, so if there are any
Irb experts out there please help!!!

--
Thanks!
Bryan
--
Posted via http://www.ruby-....

2 Answers

Bryan Richardson

12/12/2008 8:23:00 PM

0

Oops... the console results should say 'App' instead of 'Antfarm'. This
discrepancy has nothing to do with my problem... :)

--
Thanks!
Bryan
--
Posted via http://www.ruby-....

Joel VanderWerf

12/12/2008 9:52:00 PM

0

Bryan Richardson wrote:
> Hello all,
>
> I'm attempting to convert a command-line driven application into a
> console application using Irb. However, I'm having some trouble right
> out of the gate. Here's what I have so far:
>
> module App
> class Framework
> def use(plugin)
> path = "plugins/#{plugin}"
> tree = plugin.split('/')
> tree.collect! { |x| x.capitalize }
> @plugin = Object.const_get("App::#{tree.join('::')}").new
> end
>
> def show_options
> @plugin.show_options
> end
>
> def run
> @plugin.run
> end
> end
> end
>
> binding = App::Framework.new
>
> load 'irb.rb'
> IRB.setup(nil)
> IRB.conf[:PROMPT][:APP] = IRB.conf[:PROMPT][:SIMPLE]
> IRB.conf[:PROMPT][:APP][:PROMPT_I] = 'app > '
> IRB.conf[:PROMPT_MODE] = :APP
>
> irb = IRB::Irb.new(IRB::WorkSpace.new(binding))
>
> IRB.conf[:MAIN_CONTEXT] = irb.context
>
> trap('SIGINT') do
> irb.signal_handle
> end
>
> catch(:IRB_EXIT) do
> irb.eval_input
> end
>
> Essentially, I'm setting the App::Framework class to be my Irb context.
> When I run this program and try to load a plugin named 'test' using the
> 'use' method, I get the following:
>
> antfarm > use test
> ArgumentError: wrong number of arguments
> from (irb):1:in `test'
> from (irb):1
> from :0
> antfarm >
>
>>From this, it looks like 'test' might be a keyword in Irb, because when
> I use a different plugin name I get the following:
>
> antfarm > use hello
> NameError: undefined local variable or method `hello' for
> #<Antfarm::Framework:0xb7c4c16c>
> from (irb):1
> from :0
> antfarm >
>
>>From this, it looks like 'use' might be a keyword as well. I'm having
> trouble finding good documentation on Irb Contexts, so if there are any
> Irb experts out there please help!!!

The string "test" (and also "hello") is getting evaluated. Try putting
it in quotes, so that it evals to a string and the #use method is passed
the string.

--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407