是否可以在windows上将ruby脚本编译为.exe?我到处都找过了,我试过以下的方法(看起来像是rubyscript2exe,鞋子和板条箱都好像死了或是被遗弃了):
http://ocra.rubyforge.org/
http://exerb.sourceforge.jp/index.en.html
我在Windows7Ultimate(64位)上使用Ruby1.8.7。在一个干净的系统中,我这样做:
从rubyinstaller.org安装rubyinstaller 1.8.7-p358
gem安装watir
gem安装ocra
git克隆git://github.com/snaury/exerb-mingw.git
CD行使权
ruby设置.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中查找时,gems似乎不在搜索路径中:
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

在这之后,它确实会在搜索路径中显示这些路径,但它仍然会给我同样的错误。显然,一定有办法让rubygems路径包含在exy中?
那么,现在有人如何在windows上构建一个.exe呢?
我在exerb上取得了一些进展,我发现你可以使用-rrubygems选项运行mkexy来完成这个任务。这对大多数ruby项目都很有用。我试过一些ruby脚本,它们使用了许多不同的库,没有问题。例如:
mkexy -rrubygems test.rb
exerb test.exy
test.exe === WORKS!

不幸的是,这对沃特不起作用。当我运行用watir构建的.exe时,我会得到以下结果:
s4t-utils/claims.rb:24:in `user_is_bewildered': Error in the default values: :br

owser的值必须是“safari”、“firefox”或“ie”中的一个,并且“”看起来不像r
光。(标准错误)

最佳答案

https://github.com/rdp/ruby_tutorials_core/wiki/ruby-talk-faq#wiki-ruby_to_exe曾经是他们的名单。

09-30 15:15