加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

将ruby脚本编译成exe?

发布时间:2020-12-16 20:13:24 所属栏目:百科 来源:网络整理
导读:可以在 Windows上将ruby脚本编译到.exe中吗?我已经搜索到任何地方,我已经尝试了以下(看起来像 RubyScript2EXE,鞋子和箱子都似乎死了或被放弃.): http://ocra.rubyforge.org/ http://exerb.sourceforge.jp/index.en.html 我在一个干净的系统中使用的是Windo
可以在 Windows上将ruby脚本编译到.exe中吗?我已经搜索到任何地方,我已经尝试了以下(看起来像 RubyScript2EXE,鞋子和箱子都似乎死了或被放弃.):

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

我在一个干净的系统中使用的是Windows 7 Ultimate(64位)上的Ruby 1.8.7,我做到这一点:

从rubyinstaller.org安装RubyInstaller 1.8.7-p358
宝石安装watir
宝石安装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:UsersjonathandevCitation>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中?

那么现在有人在Windows上构建一个.exe?

我在Exerb中取得了一些进展,我发现你可以用-rrubygems选项来运行mkexy来拉入这个.对于大多数ruby项目来说,这是非常有用的.我已经尝试了几个ruby脚本,使用许多不同的库没有问题.例如:

mkexy -rrubygems test.rb
exerb test.exy
test.exe === WORKS!

不幸的是,它不适用于watir.当我运行一个用watir构建的.exe,我得到以下内容:

s4t-utils/claims.rb:24:in `user_is_bewildered': Error in the default values: :br

owser的值必须是“safari”,“firefox”或“ie”之一,“’不看起来r
飞行. (StandardError的)

解决方法

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读