problem executing bash script from ruby - resend

T

Tom Cloyd

[for some reason, my first attempt was not formatted correctly by the
list server]

I have little experience with this sort of thing, but it looked fairly
straightforward. I'm in trouble, however.

Details:

From /home/tomc/Ruby-work/setnet/bin/ I launch "./setnet". This dir
contains:
mkrdoc.sh setnet

"./setnet" contains these lines (among others), and works fine:

manager = SN::DBManager.new()
manager.startup

The "SN.rb" module is in "/home/tomc/Ruby-work/setnet/lib/setnet", and
contains a method with this code snippet -

puts "\n=== generating new rdocs for SetNet ==="
system("ls") # to verify where I am in the filesystem
system("./mkrdoc.sh")
if $? != 0
puts "*** command failed: status = #{$?.exitstatus}"
end

This snippet executes by means of selection from a menu, with this result -

=== generating new rdocs for SetNet ===
mkrdoc.sh setnet
*** command failed: status = 127

mkrdoc.sh contains:

cd ../lib/setnet
echo "dir--"
ls
echo "rdoc executing --"
rdoc -N -x ./doc

What I'm trying to do is acquire the functionality of generating new
rdocs for my program without having to manually go back to a command
line. Every attempt I made to make a single "system()" call from within
ruby, to generate the rdocs, have failed. In my experience, rdoc is
excessively quirky. I've spent most of today trying to get it to do some
simple things, and failing, even though I've very carefully following
the documentation. I do have something that works - that "rdoc -N -s
/doc" command, but only when it's executed from within the right dir.

Since -
* I'm allowed one command per "system()" call, and
* upon return from that call, the present working dir is reset to its
prior state...

my only option appears to be to issue the commands I'd use in a manual
interaction with the CLI from within a script file, and that's what I'm
trying to do.

My questions:

1. Is there some obvious reason by my attempt to execute mkrdoc.sh is
failing?
2. How can I make use of the process status output I've captured? I've
searched Pickax 3rd ed., and with Google, and I'm not receiving much
enlightenment. What do the "big boys/girls" do with this status output?

Thanks very much for any help anyone can offer.

Tom

--

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Tom Cloyd, MS MA, LMHC - Private practice Psychotherapist
Bellingham, Washington, U.S.A: (360) 920-1226
<< (e-mail address removed) >> (email)
<< TomCloyd.com >> (website)
<< sleightmind.wordpress.com >> (mental health weblog)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
B

brabuhr

Since -
* I'm allowed one command per "system()" call, and
* upon return from that call, the present working dir is reset to its
prior state...

my only option appears to be to issue the commands I'd use in a manual
interaction with the CLI from within a script file, and that's what I'm
trying to do.

It is possible to change the working directory from within ruby:
irb(main):001:0> puts `pwd`
/
=> nil
irb(main):002:0> Dir.chdir("/tmp") { puts `pwd` }
/tmp
=> nil
irb(main):003:0> puts `pwd`
/
=> nil
irb(main):004:0> Dir.chdir("/var/tmp")
=> 0
irb(main):005:0> puts `pwd`
/var/tmp
=> nil
 
B

Bil Kleb

Tom said:
Since -
* I'm allowed one command per "system()" call, and

Maybe I didn't read carefully enough, but where is this
limit coming from? E.g.,

% ruby -e 'system %|echo hello && date && echo goodbye|'
hello
Thu Jul 16 11:19:03 EDT 2009
goodbye

Regards,
 

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,755
Messages
2,569,536
Members
45,014
Latest member
BiancaFix3

Latest Threads

Top