Forum: Ruby Trouble using Irb as Ruby Console

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
112b68b29c51d07c738d8f58e38f4d2d?d=identicon&s=25 Bryan Richardson (btrichardson)
on 2008-12-12 21:24
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
112b68b29c51d07c738d8f58e38f4d2d?d=identicon&s=25 Bryan Richardson (btrichardson)
on 2008-12-12 21:29
Oops... the console results should say 'App' instead of 'Antfarm'.  This
discrepancy has nothing to do with my problem... :)

--
Thanks!
Bryan
47b1910084592eb77a032bc7d8d1a84e?d=identicon&s=25 Joel VanderWerf (Guest)
on 2008-12-12 22:59
(Received via mailing list)
Bryan Richardson wrote:
>       tree = plugin.split('/')
>     end
>
> end
> 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.
This topic is locked and can not be replied to.