2

我正在尝试构建一个 .exe 以在没有任何 ruby​​ 安装的情况下在 Windows 上执行我的脚本。我为此使用 Ocra,但我有一个堆栈跟踪。

另请注意,有两个文件运行整个 sc 并且我当前使用 RVM,并且由于我使用 RVM,我没有执行任何 sudo gem install。

第一个文件中使用的宝石:

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

第二个文件中使用的宝石:

require 'libnotify'
require './firstfile'
require 'os'
require 'twilio-ruby'

这是奥克拉给我的:

>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 <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [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 必须设置一个我不知道如何准确解释它的路径,但它是某种路径:

Libnotify.icon_dirs << '/home/' + ENV['USER'] + '/Downloads/NotificationIcons/'

所以也许其中之一就是 Ocra 所指的相对路径,但我不确定 100% 这就是为什么我想明确理解“相对路径”的含义,以及为什么我有这个堆栈跟踪和这个错误。

PS:“xxxx”只是为了保护隐私!

感谢您提前提供的任何帮助,我目前正忙于将我的项目打包到跨平台,现在我只是想在 Windows 上安装它。

如果您需要更多信息,请询问,如果我犯了任何错误,请保持温和,因为这是我在 Stack Overflow 上提出的第一个问题。

4

1 回答 1

1

Ocra doesn't work on Linux currently.

Doing a google search for

ocra undefined method `path'

Linked here, an issues page on the Ocra github which shows many people have had the same problem. This in turns links here, where the project maintainer says that Ocra does not work on Linux, though it may be worth a shot with Wine.

于 2016-09-16T22:14:46.617 回答