-3

对 ruby​​ 并不完全陌生,但几乎不精通它。我的目标是设置一个与 ruby​​ 类似的条件,就像我在 Tcl 中所做的那样,运行不需要语言下载和安装的脚本。使用工具命令语言 (Tcl) 通过 Tcl3dsh-win32-0.5.0 starpack 可以很好地完成这项工作,几乎可以很好地运行每个 Tcl 应用程序,不需要事先安装 Tcl,我猜就叫它 windows10。现在为什么我想要 Ruby1.8.6,因为我相信它是 OpenGL 和 Glut 库功能,并且可能从某个链接中引用了一些关于获取“rubyscript2exe”解释器捆绑器编译器的链接?去工作。据我了解,对于较新的 ruby​​ 安装,rubyscript2exe 已过时。我从来没有得到它来创建和执行捆绑的东西。所以我尝试了' ocra',我只需要创建一个且只有一个 exe: puts 'Hello ocra ruby​​.' sleep 4.5 确实创建了一个漂亮的小型独立 ruby​​ 可执行应用程序,当导出到没有任何 ruby​​ 安装的 windows10 系统时确实可以运行。这就是它结束的地方,当时在我正在创建类似于 ruby​​ 可执行文件的应用程序的开发机器上,我安装了版本“ruby193”VIA 一键安装程序可执行文件,选择所有选项和与包含的 TK 的关联已选中。它安装在我的 C: 根目录中的“ruby193”目录中,批处理文件和其他引用“ocra”gem(和“rubyscript2exe”)的文件现在驻留在其中。Ocra 可执行红宝石应用程序,一个有效的和其他无效的通过命令行控制台从桌面运行,该命令行控制台使用 .bat 文件中写入的“开始”命令创建,这就是我做命令行工作的方式。'hello world' .rb 确实有效,但任何与 tk 相关的东西都会抛出:'Tk85.dll is missing not found error'。相当肯定这是错误,没有像我应该记录冒险的每一个细节那样科学。所以尝试了 'rubyscript2exe' gem 没有运气,引用了 'use it with the ruby​​186 version' 的建议。我已经有一段时间没有看到我的 OpenGL ruby​​ 应用程序运行了,所以,嘿嘿。我通过 ruby​​186 一键式安装程序可执行文件在现有 ruby​​193 之上下载了 ruby​​186。它在“ruby193”旁边的根中构建自己 标有“ruby”的目录中的目录,在安装过程中注意它没有 Tk 安装关联或绑定。对自己说,这也行不通。我记得在我遵循的文档中具有 Tk 特定编译指令的“rubyscript2exe”应用程序(这对我不起作用)。刚刚再次浏览了 Ocra 文档,我没有看到对 Tk 的具体引用。也许在添加库时我错过了它,正如我所说的我几乎不精通这一切,但真的要努力。我遵循的(这对我不起作用)。刚刚再次浏览了 Ocra 文档,我没有看到对 Tk 的具体引用。也许在添加库时我错过了它,正如我所说的我几乎不精通这一切,但真的要努力。我遵循的(这对我不起作用)。刚刚再次浏览了 Ocra 文档,我没有看到对 Tk 的具体引用。也许在添加库时我错过了它,正如我所说的我几乎不精通这一切,但真的要努力。

我的问题:我应该如何继续创建一个在能够运行 Tk GUI 的 windows-10-ish 系统上运行的类似 ruby​​ 可执行文件的程序,(我将从 Tk GUI 开始,如果我得到它并且运行,然后我可以继续尝试下一个 OpenGL GLUT 着色器的东西)。Tk 应该是最新的,所以我想我的重点是让 ocra gem 与 Tk 一起工作,我还按照 ocra 文档说明在我的 start.bat 控制台中执行了类似编译的命令: https://github。 com/larsch/ocrahttp://ocra.rubyforge.org/ ocrawhatsscript.rb 以及与使用 'rubyscript2exe' + '-ocra--tk' 时的操作方式类似的变体,我想,idda 知道我做了什么,心烦意乱。有什么想法吗?

这是我发布的第一个问题,请原谅我的经验不足和冗长的性质,以便我尝试彻底。

4

2 回答 2

1

听起来您的问题可能源于您在没有版本管理器的同一系统上使用多个版本的 ruby​​。当多个版本的 ruby​​ 存在于同一个系统上时,它们的 gems 和依赖关系可能会纵横交错并导致严重的问题。

在 Windows 上,我对 Uru 很幸运:https ://bitbucket.org/jonforums/uru

此外,您可能需要考虑使用 bundle gem 安装 gem,这会将它们封装到特定的项目和特定的 ruby​​ 版本中。

话虽如此,如果你想让你的脚本作为一个独立的可执行文件运行,但在依赖项和 ruby​​ 版本方面遇到问题,请查看 travel ruby​​:

http://phusion.github.io/traveling-ruby/

它的工作方式非常像一个starpack,因为您的所有脚本都包含正确版本的ruby,因此用户无需安装任何东西,您无需在自己的系统上编译或安装ruby。

于 2017-02-15T20:45:22.773 回答
0

我为迟到的回复道歉,失去了我的 RubyScript.exe 创建环境。现在在东芝,64位,Windows10 pro上重新设置。使用 Ruby:ruby 2.3.3p222(2016-11-21 修订版 56859)[i386-mingw32] 我得到了这个非 Tk 控制台应用程序,用 ocra 构建:

enter code here 
irb

使用命令:

enter code here 
ocra throwRUBYconsole.rb

在 Windows 终端的“start”.bat 形式中,在桌面上,它当然不适用于我的非 ruby​​ 环境机器(网关上的相同 win 10 设置)。阅读 ocra 文档,ocra 源码。阅读旅行红宝石,同样如此。有(丢失我的清单会尽量记住)Darb,rubyscript2exe,exerb 去通过,这将需要一些时间。

这是我的 Tk 测试应用程序:

enter code here 
require 'tk'
require 'tkextlib/tile'

root = TkRoot.new {title "Lightyears to Parsecs"}
content = Tk::Tile::Frame.new(root) {padding "3 3 12 12"}.grid( :sticky =>     'nsew')
TkGrid.columnconfigure root, 0, :weight => 1; TkGrid.rowconfigure root, 0,   :weight => 1

$lightyears = TkVariable.new; $parsecs = TkVariable.new
f = Tk::Tile::Entry.new(content) {width 13; textvariable $lightyears}.grid(   :column => 2, :row => 1, :sticky => 'we' )
Tk::Tile::Label.new(content) {textvariable $parsecs}.grid( :column => 2,  :row => 2, :sticky => 'we');
Tk::Tile::Button.new(content) {text 'Calculate'; command {calculate}}.grid(  :column => 3, :row => 3, :sticky => 'w')

Tk::Tile::Label.new(content) {text 'lightyears'}.grid( :column => 3, :row =>    1, :sticky => 'w')
Tk::Tile::Label.new(content) {text 'is equivalent to'}.grid( :column => 1, :row => 2, :sticky => 'e')
Tk::Tile::Label.new(content) {text 'parsecs'}.grid( :column => 3, :row => 2, :sticky => 'w')

TkWinfo.children(content).each {|w| TkGrid.configure w, :padx => 5, :pady => 5}
f.focus
root.bind("Return") {calculate}

def calculate
  begin
     $parsecs.value = (0.30659458*$lightyears*10000.0).round()/10000.0
  rescue
     $parsecs.value = ''
  end
end

Tk.mainloop
于 2017-02-20T22:19:15.043 回答