Скомпилировать ruby-скрипт в exe?

Можно ли скомпилировать ruby-скрипт в .exe в Windows? Я искал везде и пробовал следующее (это выглядело так, будто RubyScript2EXE, обувь и ящик казались мертвыми или заброшенными):

  1. http://ocra.rubyforge.org/
  2. http://exerb. sourceforge.jp/index.en.html

Я использую Ruby 1.8.7 на Windows 7 Ultimate (64bit.) из чистой системы. Я делаю это:

  1. Установите RubyInstaller 1.8.7-p358 с rubyinstaller.org
  2. gem install watir
  3. gem install ocra
  4. git clone git://github.com/snaury/exerb-mingw.git
  5. cd exerb-mingw
  6. ruby ​​setup.rb

I есть довольно простой сценарий, который делает это:

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», и «не выглядит r». хорошо. (StandardError)

14
задан Jonathan Jeffus 4 April 2012 в 16:27
поделиться