Gavin Sinclair wrote: > Having bluntly stated my solution, let me elaborate by example. Below is > a complete Cygwin transcript demonstrating: (a) running Ruby programs; (b) > redirecting standard output; (c) redirecting standard error; (d) fortune. > > Before I get into it, can I ask a question? Am I missing out on anything > by not using the "native" windows installation? > > Transacript follows after signoff. > > Cheers, > Gavin > > > The steady state of disks is full. > -- Ken Thompson > ---- > > Next three birthdays: > John Brondum 2002-09-18 (in 33 days) > David Wells 2002-09-21 (in 36 days) > Ian Morris 2002-09-30 (in 45 days) > > Gavin Sinclair@NOSEDOG ~ > $ cd /tmp > > Gavin Sinclair@NOSEDOG /tmp > $ cat > demo.rb > #!/usr/local/bin/ruby > > puts <<EOF > I'm a little vegemite > As bright as bright can be > We all enjoy our vegemite > For breakfast, lunch and tea > EOF > > Gavin Sinclair@NOSEDOG /tmp > A $ ./demo.rb > I'm a little vegemite > As bright as bright can be > We all enjoy our vegemite > For breakfast, lunch and tea > > Gavin Sinclair@NOSEDOG /tmp > B $ ./demo.rb > output > > Gavin Sinclair@NOSEDOG /tmp > $ cat output > I'm a little vegemite > As bright as bright can be > We all enjoy our vegemite > For breakfast, lunch and tea > > Gavin Sinclair@NOSEDOG /tmp > $ cat > err.rb > #!/usr/local/bin/ruby > > STDERR.puts "I'm nasty" > STDOUT.puts "I'm nice" > > Gavin Sinclair@NOSEDOG /tmp > $ ./err.rb > I'm nasty > I'm nice > > Gavin Sinclair@NOSEDOG /tmp > B $ ./err.rb > /dev/null > I'm nasty > > Gavin Sinclair@NOSEDOG /tmp > C $ ./err.rb 2> /dev/null > I'm nice > > D Gavin Sinclair@NOSEDOG /tmp > $ fortune -o > The problem with being best man at a wedding is > that you never get a chance to prove it. > > Gavin Sinclair@NOSEDOG /tmp > $ > > > >>At the command line, that is. >> >>Problem: When you run a .rb file from the >>command line, you have to type a (potentially >>lengthy) command. >> >>First idea: Wrap it in a batch file. >> >>However: Did you know that Windows is too dumb >>to associate the stdout of a program with the >>stdout of the batch file? I.e., if you have a >>foo.bat file and you say "foo >outfile" it will >>NOT work (at least not in older Windows versions... >>I can't speak of NT, 2K, XP). >> >>Well, you can use "start" on Win98. Still kind of >>a pain. >> >>My solution: >> >>Write a C program that will detect its own name and >>directory; locate a corresponding Ruby program in >>that same directory; read the #! line from the >>beginning (usu. ignored in Win); and run the Ruby >>program. It passes in the parameters, too. >> >>Note that you only have to compile once, since the >>program knows its own name. You can just >> copy fakeruby.exe myprog.exe >>assuming there is a myprog.rb in that directory. >> >>I know, it's kind of an exercise in futility. But >>if you want the code, here it is. It compiles fine >>with djgpp. >> >>Feel free to criticize it or improve it. It's far >>from perfect. For some reason, execvp() didn't work >>for me. >> >>Cheers, >>Hal >> >>[lovely-looking C code snipped] > > > Do a search and you will see the "thought" behind why the native build was decided upon. Bob