Tuesday, 7 July 2009

Convertir ficheros ruby a ejecutables (exe)

Existe un wrapper que nos permite envolver nuestro script hecho en Ruby con todas sus dependencias incluyendo el Ruby en un ejecutable para windows. En éste artículo voy a comentar RubyScript2Exe de la mano de Erik Veenstra. Mediante ésta libreria, podemos convertir nuestro script a un fichero ejecutable. Realmente lo que sucede es que al iniciar el ejecutable el contenido de éste se vuelca en un directorio temporal y luego se ejecuta con ruby. Podemos parametrizar diferentes constantes de la aplicación para configurar los recursos que queremos que tenga la aplicación (imágenes, ficheros, directorio tempora, etc.). En la misma web de RubyScript2Exe podemos encontrar toda la información al detalle y el funcionamiento de éste script.

En éste enlace, podéis encontrar el enlace directo del script: RubyScript2Exe.rb. Una vez lo hemos guardado en nuestro HD, podemos seleccionar nuestro Script a convertir (en éste caso utilizaré el script que creé hace un par de días, y lo transformaré).

Lo que haré ahora ir a la ruta donde tengo los ejemplos de ruby -> C:\ruby\samples\RubySrc-1.8.6-p111\sample y copiaré allí los ficheros rectangles.rb, rectangles.xml y RubyScript2Exe.rb. Si nos fijamos, en aspecto que tenía el script era éste:

Ahora, para convertir el script tenemos que ejecutar lo siguiente:

ruby rubyscript2exe.rb rectangles.rb

Podemos ver las diferentes ejecuciones en el intérprete de comandos:

Si ahora iniciamos el fichero ejecutable:

Si miramos la carpeta samples, podemos ver como se ha generado el fichero:

1 comment:

  1. Me aprece estos errores:
    C:/Ruby200-x64/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- ftools (LoadError)
    from C:/Ruby200-x64/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    from C:/Users/pasquel/AppData/Local/Temp/tar2rubyscript.d.4360.1/rubyscript2exe/ev/ftools.rb:1:in `'
    from C:/Ruby200-x64/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    from C:/Ruby200-x64/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    from C:/Users/pasquel/AppData/Local/Temp/tar2rubyscript.d.4360.1/rubyscript2exe/init.rb:15:in `'
    from rubyscript2exe.rb:626:in `load'
    from rubyscript2exe.rb:626:in `block in '
    from rubyscript2exe.rb:577:in `block in newlocation'
    from rubyscript2exe.rb:505:in `block in newlocation'
    from rubyscript2exe.rb:472:in `newlocation'
    from rubyscript2exe.rb:505:in `newlocation'
    from rubyscript2exe.rb:577:in `newlocation'
    from rubyscript2exe.rb:619:in `'

    ReplyDelete