Можно ли скомпилировать скрипт ruby в .exe на Windows?Я искал везде, и я попробовал следующее (Похоже, что RubyScript2EXE, Shoes и Crate все казались мертвыми или заброшенными.):
- http://ocra.rubyforge.org/
- http://exerb.sourceforge.jp/index.en.html
Я использую Ruby 1.8.7 на Windows 7 Ultimate (64-разрядная версия) из чистой системы. Я делаю это:
- Установите RubyInstaller 1.8.7-p358 от rubyinstaller.org
- gem install watir
- gem install ocra
- git clone git: //github.com/snaury/exerb-mingw.git
- cd exerb-mingw
- ruby 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, чтобы получить это. И это работает ОТЛИЧНО для большинства проектов ruby.Я попробовал это для нескольких скриптов 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 должно быть одним из 'safari', 'firefox' или 'ie', а '' не выглядит как rIGHT.(StandardError)