From: Stefano Crocco Date: 2008-07-17T16:46:43+09:00 Subject: Re: continue the execution of a ruby script after a shell comand On Thursday 17 July 2008, Hamlat Ameziane wrote: > Hi, > I have a little problem,I will be grateful if someone can help me. > > So I have this script : > > puts '*** Beginning of the script ***' > path = 'C:\another_script.rb' > exec 'ruby '+path > puts '*** End of the script ***' > > > And I have the following result : > > puts '*** Beginning of the script ***' > ## execution of script C:\another_script.rb > > > But Ruby dont print the last line : *** End of the script *** > > I have tried this : > > t = Thread.new {exec 'ruby '+path} > Thread.pass (t) > > But I have the same result !!!! From ri for Kernel#exec: "Replaces the current process by running the given external command." This means that when the external program stops, there's no more a ruby script to go back to. The usual way to run an external program from a ruby script is to use either the backtics operator: `ruby C:\another_script.rb` or to use Kernel#system: system "ruby C:\another_script.rb" The difference between the two is that the former doesn't display the standard output on screen, but returns it as return value of the method call; system, instead, displays the standard output normally and returns true if the command was executed correctly and false otherwise. Note that the backtics support string interpolation, so you can write: `ruby #{path}` I hope this helps Stefano