我正在尝试构建一个.exe来在没有任何ruby安装的windows上执行我的脚本。
我在用Ocra,但我有一个堆栈跟踪。
还要注意,有两个文件运行整个sc,我使用的是当前的rvm,而且自从使用rvm以来,我没有进行任何sudo gem安装。
第一个文件中使用的宝石:

require 'rubygems'
require 'nokogiri'
require 'open-uri'
require 'colorize'
require 'colorized_string'

第二个文件中使用的宝石:
require 'libnotify'
require './firstfile'
require 'os'
require 'twilio-ruby'

这是ocra给我的:
>ocra --output test.exe firstfile.rb secondfile.rb
/home/xxxx/.rvm/gems/ruby-head/gems/ocra-1.3.6/bin/ocra:41:in `relative_path_from': undefined method `path' for "/home/xxxx/.rvm/gems/ruby-head@global":String (NoMethodError)
from /home/xxxx/.rvm/gems/ruby-head/gems/ocra-1.3.6/bin/ocra:779:in `block in build_exe'
from /home/xxxx/.rvm/gems/ruby-head/gems/ocra-1.3.6/bin/ocra:762:in `each'
from /home/xxxx/.rvm/gems/ruby-head/gems/ocra-1.3.6/bin/ocra:762:in `build_exe'
from /home/xxxx/.rvm/gems/ruby-head/gems/ocra-1.3.6/bin/ocra:1177:in `block in <top (required)>'

这里有更多关于我的rvm和ruby版本的信息这是'rvm info'的确切输出
  system:
uname:       "Linux xxxx 4.7.1-1-ARCH #1 SMP PREEMPT Wed Aug 17 08:13:35 CEST 2016 x86_64 GNU/Linux"
system:      "arch/libc-2.24/x86_64"
bash:        "/usr/bin/bash => GNU bash, version 4.3.46(1)-release (x86_64-unknown-linux-gnu)"
zsh:         " => not installed"



rvm:
version:      "rvm 1.27.0 (latest) by Wayne E. Seguin <[email protected]>, Michal Papis <[email protected]> [https://rvm.io/]"
updated:      "1 day 23 hours 44 minutes 51 seconds ago"
path:         "/home/xxxx/.rvm"



ruby:
interpreter:  "ruby"
version:      "2.4.0dev"
date:         "2016-05-20"
platform:     "x86_64-linux"
patchlevel:   "2016-05-20 trunk 55077"
full_version: "ruby 2.4.0dev (2016-05-20 trunk 55077) [x86_64-linux]"

  homes:
gem:          "/home/xxxx/.rvm/gems/ruby-head"
ruby:         "not set"

  binaries:
ruby:         "/home/xxxx/.rvm/rubies/ruby-head/bin/ruby"
irb:          "/home/xxxx/.rvm/rubies/ruby-head/bin/irb"
gem:          "/home/xxxx/.rvm/rubies/ruby-head/bin/gem"
rake:         "/home/xxxx/.rvm/gems/ruby-head/bin/rake"

  environment:
PATH:         "/home/xxxx/.rvm/gems/ruby-head/bin:/home/xxxx/.rvm/gems/ruby-head@global/bin:/home/xxxx/.rvm/rubies/ruby-head/bin:/home/xxxx/.rvm/bin:/usr/bin"
GEM_HOME:     "/home/xxxx/.rvm/gems/ruby-head"
GEM_PATH:     "/home/xxxx/.rvm/gems/ruby-head:/home/xxxx/.rvm/gems/ruby-head@global"
MY_RUBY_HOME: ""
IRBRC:        ""
RUBYOPT:      ""
gemset:       ""

我的脚本解析一个html页面,还必须在它所在的文件夹中创建一个文件,写入/读取这个文件,libnotify还必须设置一个this我不知道如何准确解释它,但它是某种路径:
Libnotify.icon_dirs << '/home/' + ENV['USER'] + '/Downloads/NotificationIcons/'

所以其中一个可能是ocra所说的相对路径,但我不确定100%,这就是为什么我想知道“相对路径”的明确含义,以及为什么我有这个堆栈跟踪这个错误。
附言:“xxxx”只是为了隐私!
感谢您的帮助,我目前在包装我的项目到跨平台目前我只是试图在Windows上。
如果你需要更多的信息,尽管问,如果我犯了什么错误也要温和,因为这是我在堆栈溢出问题上问的第一个问题。

最佳答案

ocra目前不适用于linux。
在谷歌上搜索

ocra undefined method `path'

Linkedhere,这是Ocra github上的一个问题页面,显示许多人都有同样的问题这反过来又链接到here,项目维护人员说ocra在linux上不工作,尽管这可能值得一试。

关于ruby - 使用Ocra为跨平台使用构建 ruby 脚本,但我得到了带有stacktrace的“relative_path_form”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39112430/

10-08 23:09