On Tue, Apr 8, 2008 at 3:14 PM, Marc Hoeppner
<marc.hoeppner / molbio.su.se> wrote:
> Hi,
>
>  I am trying to use the following line of code in a rails application,
>  but I dont think my problem has anything to do with rails, but with
>  ruby, so this is why I post it here. To set the scene - I am programming
>  an application for biological sequence analysis (among other things...).
>
>  I want to pass the contents of an array (DNA sequences) to an external
>  program. This program, however, needs a file as input and doesnt seem to
>  take input from STDIN (its written in C so I have no clue how to mess
>  with its code to change that..).
>  So instead I write the sequences into a file and pass the name to the
>  program. So far so good. But if I run it like this
>
>  @result = %x{program-executable -o infile.txt}
>
>  the variable @result is empty (should be a string, right?). If I call
>  the exact same command from the command line, it prints the output to
>  the screen, so I figured that it should go into the @result variable,
>  no?

The command seems fine. Parameter -o seem suspicious since it is
usually used for output.
Anyway, I guess this is an exception.

Try redirecting stderr to either file (2> errr.log) or to stdout
(2>&1, works even on windows!) to
see if there are any errors.

>  Any suggestions on what I am doing wrong? Also, if by chance, anybody
>  has an idea on how to pass the variable to the program instead of going
>  via the route with a physical file, I'd be glad to hear it.

See IO.popen and/or Open3.popen3