Возможно ли скомпилировать скрипт ruby в .exe в Windows? Я искал везде, и я попытался следующее (Это выглядело как RubyScript2EXE, обувь и Crate все казалось мертвым или заброшены.):Скомпилировать скрипт ruby в exe?
Я использую рубин 1.8.7 на Windows 7 Ultimate (64-бит). из чистой системы я делаю это:
- Установка RubyInstaller 1.8.7-P358 от rubyinstaller.org
- камень установить Watir
- камень установить Ocra
- GIT клон мерзавца: //github.com/snaury/exerb-mingw.git
- кд exerb-MinGW
- рубин setup.rb
у меня есть довольно простой скрипт, который делает это:
require 'rubygems'
require 'watir'
browser = Watir::Browser.new
browser.goto 'http://slashdot.org'
Когда я бегу Ocra я не получаю никаких сообщений об ошибках, и ничего не происходит:
ocra --output test.exe test.rb
=== Loading script to check dependencies
Exerb кажется, лучшее решение, так как он компилирует Rbc, и это делает на самом деле что-то сделать:
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
Поэтому он не может найти win32/api.so. Когда я смотрю в C: /Ruby187/lib/ruby/site_ruby/1.8/exerb/recipe.rb это выглядит как драгоценные камни не в пути поиска:
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: .
Так после того, как копаться я узнал, вы можете добавить пути поиска в Exy файле как так:
path:
- C:/Ruby187/lib/ruby/gems/
- C:/Ruby187/lib/ruby/gems/1.8
- C:/Ruby187/lib/ruby/gems/1.8/gems
После этого он показывает эти пути в search_path, но она по-прежнему дает мне ту же ошибку. Очевидно, должен быть какой-то способ получить пути rubygems для включения в exy?
Итак, как в наши дни кто-то создает .exe в Windows?
Я сделал некоторый прогресс с Exerb, я узнал, что вы можете запустить mkexy с параметром -rrubygems, чтобы вытащить это. И это работает GREAT для большинства проектов ruby. Я попробовал это для нескольких рубиновых скриптов, которые без проблем используют несколько разных библиотек. Например:
mkexy -rrubygems test.rb
exerb test.exy
test.exe === WORKS!
К сожалению, это не работает для watir. Когда я запускаю exe-файл, построенный с Watir я получаю следующее: значение
s4t-utils/claims.rb:24:in `user_is_bewildered': Error in the default values: :br
owser должен быть один из «сафари», «светлячок», или «т», и «» не выглядит R IGHT ,(StandardError)
Возможно, вы можете попробовать следующее: http://johnallen.us/?p=278 –
Вы видели консоль, порожденную Ocra? Если вы скомпилировали .rb вместо .rbw, вы должны были его увидеть. –
Я ничего не видел, ни окна, ни ничего. Возможно, это появилось сообщение об ошибке, упомянутое в ссылке johnallen.us, а затем умерло? Я буду экспериментировать с ocra завтра и обновить этот вопрос. –