在没有Ruby安装的情况下运行Rubyscript

时间:2017-02-15 20:12:15

标签: ruby ocra

并不是全新的红宝石,但很难精通它。我的目标是建立 类似于ruby的条件,就像我使用Tcl一样,运行不需要的脚本 语言下载和安装。这与...相当完美 工具命令语言(Tcl)通过Tcl3dsh-win32-0.5.0 starpack,几乎运行 每个Tcl应用程序都很好,不需要事先安装Tcl 我想我只是称它为windows10。现在为什么我想要OpenGL的Ruby1.8.6 和Glut库的能力我相信它是,也许从某些链接引用 关于获取'rubyscript2exe'解释器 - 捆绑器 - 编译器的某个地方? 上班。据我所知,rubyscript2exe已经过时,适用于较新的ruby安装。 我从来没有得到它创建和可执行捆绑的东西无论如何。  所以我尝试了'ocra',我只需要创建一个且只有一个exe:     把'Hello ocra ruby​​'放进去。     睡觉4.5 这确实创造了一个漂亮的小站独立的ruby可执行类应用程序 导出到没有任何ruby安装的windows10系统时运行。 那就是它结束的地方,那时我正在开发机器上创建红宝石 类似可执行文件的应用程序我安装了版本'ruby193'VIA一键安装程序可执行文件 选中所有选项和与TK相关的选项。 它将自己安装在我的C:root目录'ruby193'中,其中批处理文件和其他文件引用 'ocra'宝石(以及'rubyscript2exe')现在存在。 Ocra可执行ruby应用程序,那些工作的应用程序和其他没有工作的应用程序是从桌面运行的 通过在.bat文件中写入的'start'命令创建的命令行控制台,这就是我一直在做的事情 命令行的东西。 'hello world'.rb确实有效,但是tk的任何东西都抛出了: 'Tk85.dll缺少未找到错误'。相当正面的是错误, 没有像我应该记录冒险的每一个细节那样科学。  所以尝试'rubyscript2exe'宝石没有运气,引用'使用它与ruby186版'的建议。 我没有看到我的OpenGL ruby​​应用程序运行一段时间,所以嘿嘿。我在上面下载了ruby186 现有的ruby193通过ruby186一键安装程序可执行文件。它建立在根的旁边 目录中的'ruby193'目录只是'ruby',在安装过程中注意到它没有安装Tk 关联或约束。对自己说好,这也不会起作用。 我记得在我遵循的文档中有'具体Tk特定编译实例的'rubyscript2exe'应用程序 (这对我不起作用)。刚刚再次浏览了Ocra文档,我没有看到特定于Tk的引用。也许在 添加图书馆,我想念它,正如我所说,我对这一切都不熟悉,但真的很努力。

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

这是我发布的第一个问题,请原谅我的经验不足及其冗长的本质 彻底。

2 个答案:

答案 0 :(得分:1)

听起来您的问题可能源于您在没有版本管理器的情况下在同一系统上使用多个版本的ruby这一事实。当多个版本的ruby存在于同一个系统上时,它们的宝石和依赖关系可以全部交叉并导致可怕的问题。

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

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

总而言之,如果你想让你的脚本作为一个独立的可执行文件运行但是在依赖项和ruby版本上有问题,请查看旅行ruby:

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

它非常像starpack,因为你的所有脚本都包含了正确版本的ruby,所以用户不需要安装任何东西,你不需要自己编译或安装ruby。系统

答案 1 :(得分:0)

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

enter code here 
irb

使用命令:

enter code here 
ocra throwRUBYconsole.rb

在windows终端的'start'.bat形式,在桌面上,它当然不起作用 在我的非ruby环境机器上(在网关上同样获胜10设置)。阅读ocra文档, ocra来源。阅读旅行红宝石,同样的。有(丢失我的列表将尝试记住)Darb,rubyscript2exe, exerb to thru,这需要一点时间。

这是我的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
相关问题