¿Es posible compilar un script de ruby en un .exe en Windows? He buscado por todas partes y yo he intentado lo siguiente (Parecía RubyScript2EXE, Zapatos y cajón todos parecían muertos o abandonados.):¿Compilar el script de ruby en exe?
estoy usando Rubí 1.8.7 en Windows 7 Ultimate (64 bits.) de un sistema limpio hago esto:
- instalo RubyInstaller 1.8.7-P358 de rubyinstaller.org
- joya instalar Watir
- joya instalar ocra
- git clone: //github.com/snaury/exerb-mingw.git
- cd exerb-MinGW
- rubí setup.rb
tengo un guión bastante simple que hace esto:
require 'rubygems'
require 'watir'
browser = Watir::Browser.new
browser.goto 'http://slashdot.org'
Cuando corro Ocra no recibo ningún mensaje de error, y no pasa nada:
ocra --output test.exe test.rb
=== Loading script to check dependencies
Exerb parece una solución mejor, ya que compila a RBC, y lo hace en realidad hacer algo:
ruby -r exerb/mkexy test.rb
# Window pops up and after I close it it writes out test.exy
C:\Users\jonathan\dev\Citation>exerb test.exy
C:/Ruby187/lib/ruby/site_ruby/1.8/exerb/recipe.rb:146:in `add_file_entry': test.
exy: no such file -- C:/Ruby187/lib/ruby/gems/1.8/gems/win32-api-1.4.8-x86-mingw32/lib/win32/ruby18/win32/api.so (RuntimeError)
from C:/Ruby187/lib/ruby/site_ruby/1.8/exerb/recipe.rb:86:in `create_archive'
from C:/Ruby187/lib/ruby/site_ruby/1.8/exerb/recipe.rb:85:in `each'
from C:/Ruby187/lib/ruby/site_ruby/1.8/exerb/recipe.rb:85:in `create_archive'
from C:/Ruby187/bin/exerb.bat:67:in `main'
from C:/Ruby187/bin/exerb.bat:196
para que no pueda encontrar Win32/api.so. Cuando miro en C: /Ruby187/lib/ruby/site_ruby/1.8/exerb/recipe.rb se ve como gemas no están en la ruta de búsqueda:
DIR: C:/Users/jonathan/dev/Citation
DIR: C:/Ruby187/lib/ruby/site_ruby/1.8
DIR: C:/Ruby187/lib/ruby/site_ruby/1.8/i386-msvcrt
DIR: C:/Ruby187/lib/ruby/site_ruby
DIR: C:/Ruby187/lib/ruby/vendor_ruby/1.8
DIR: C:/Ruby187/lib/ruby/vendor_ruby/1.8/i386-msvcrt
DIR: C:/Ruby187/lib/ruby/vendor_ruby
DIR: C:/Ruby187/lib/ruby/1.8
DIR: C:/Ruby187/lib/ruby/1.8/i386-mingw32
DIR: .
Así que después de excavar alrededor descubrí que se puede añadir rutas de búsqueda en el archivo exy así:
path:
- C:/Ruby187/lib/ruby/gems/
- C:/Ruby187/lib/ruby/gems/1.8
- C:/Ruby187/lib/ruby/gems/1.8/gems
Después de esto lo hace mostrar estos caminos en search_path, pero todavía me da el mismo error. Obviamente, debe haber alguna forma de incluir rutas de rubygems en la exy?
Entonces, ¿cómo alguien construye un .exe en Windows en estos días?
Hice algunos progresos con Exerb, descubrí que puedes ejecutar mkexy con la opción -rrubygems para instalar esto. Y esto funciona EXCELENTE para la mayoría de los proyectos de rubí. Lo he intentado con algunas secuencias de comandos de ruby que usan varias bibliotecas diferentes sin problemas. Por ejemplo:
mkexy -rrubygems test.rb
exerb test.exy
test.exe === WORKS!
Desafortunadamente, no funciona para watir. Cuando ejecuto un .exe construido con Watir consigo el siguiente: Valor
s4t-utils/claims.rb:24:in `user_is_bewildered': Error in the default values: :br
de owser debe ser uno de 'Safari', 'Firefox', o 'es decir', y '' no se ve r vuelo .(StandardError)
Quizás puedas probar esto: http://johnallen.us/?p=278 –
¿Has visto una consola generada por Ocra? Si compiló un .rb en lugar de un .rbw, debería haber visto uno. –
En realidad, no vi nada, ni ventana, nada. Tal vez apareció el mensaje de error mencionado en el enlace johnallen.us y luego murió? Voy a experimentar más con ocra mañana y actualizar esta pregunta. –