I would like to distribute a Ruby application that calls
an external application.
So far, I give the potential user the opportunity
to enter or change some Gnuplot code, which is
sent to Gnuplot via Open3 and produces some plot.
Now, I would like to avoid asking the user to make
sure he has Gnuplot installed.
1.) How can I ensure that everything that I need from Gnuplot
is included in my application ? Is this done automatically
by rubyscript2exe ?
2.) Can the Open3 syntax be used even if Gnuplot is not
installed on the system the new distributed file is run on -
will some file from the package created by rubyscript2exe
(question 1) be substituted for the missing installation of Gnuplot ?
1.) How can I ensure that everything that I need from Gnuplot
Axel
I have very, very strong doubts rubyscript2exe will detect and pack
external
applications. My wild guess is rubyscript2exe sort of dumps the state of
the
interpreter at the end of the execution of your script, with all
dependencies
loaded in memory.
Since Gnuplot is an external application not residing in the memory
space of
the interpreter, you’re probably stuck with making sure Gnuplot is
installed.
You could also make an installer for your application and distribute
Gnuplot
with it.
I would like to distribute a Ruby application that calls
an external application.
1.) How can I ensure that everything that I need from Gnuplot
is included in my application ? Is this done automatically
by rubyscript2exe ?
No, it’s not done automatically. You can tell rubyscript2exe to include
an external executable in the package by setting the constant
RUBYSCRIPT2EXE_BIN at “compile”
time
RUBYSCRIPT2EXE_BIN = [ ‘myapp.exe’ ]
When the “compiled” executable is run, PATH is altered so that the
bundled executable will be available.
This works well for executables that are single self-contained files, as
well as for
dlls (using RUBYSCRIPT2EXE_DLLS), but probably not so well for programs
that expect lots of support files to be installed alongside.
I would like to distribute a Ruby application that calls an
external application. So far, I give the potential user the
opportunity to enter or change some Gnuplot code, which is
sent to Gnuplot via Open3 and produces some plot. Now, I
would like to avoid asking the user to make sure he has
Gnuplot installed.
1.) How can I ensure that everything that I need from Gnuplot
is included in my application ? Is this done automatically by
rubyscript2exe ?
No, it’s not.
But, according to the RubyScript2Exe documentation, you can do
this: Put everything you need (your application and other
applications) in one directory tree, build an RBA from this
directory with Tar2RubyScript [1] and “compile” this RBA with
RubyScript2Exe [2].
All steps, including the rationale of both projects, are
described in [3].