使用 Ocra 构建 ruby 脚本以供跨平台使用,但我得到 'relative_path_form' 和堆栈跟踪
Building a ruby script with Ocra for cross platform uses but i get the 'relative_path_form' with a stacktrace
我正在尝试构建一个 .exe 来在 Windows 上执行我的脚本,而无需任何 ruby 安装。
我正在为此使用 Ocra,但我有一个堆栈跟踪。
另请注意,有两个文件运行整个 sc,我目前使用的是 RVM,而且我没有执行任何 sudo gem 安装,因为我使用的是 RVM。
第一个文件中使用的宝石:
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 <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 页面并且还必须在它所在的文件夹中创建一个文件,write/read 到这个文件并且 Libnotify 必须设置一个我不知道如何准确解释它,但它是某种路径:
Libnotify.icon_dirs << '/home/' + ENV['USER'] + '/Downloads/NotificationIcons/'
所以也许其中之一是 Ocra 的相对路径,但我不确定 100% 这就是为什么我想了解 'relative path' 的明确含义以及为什么我有这个堆栈跟踪此错误。
PS: 'xxxx' 只是为了保护隐私!
提前感谢您的帮助我目前正忙于将我的项目打包到跨平台,现在我只是想在 Windows.
上使用它
如果您需要更多信息,请直接询问,如果我犯了任何错误,请多多包涵,因为这是我在 Stack Overflow 上提出的第一个问题。
我正在尝试构建一个 .exe 来在 Windows 上执行我的脚本,而无需任何 ruby 安装。 我正在为此使用 Ocra,但我有一个堆栈跟踪。
另请注意,有两个文件运行整个 sc,我目前使用的是 RVM,而且我没有执行任何 sudo gem 安装,因为我使用的是 RVM。
第一个文件中使用的宝石:
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 <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 页面并且还必须在它所在的文件夹中创建一个文件,write/read 到这个文件并且 Libnotify 必须设置一个我不知道如何准确解释它,但它是某种路径:
Libnotify.icon_dirs << '/home/' + ENV['USER'] + '/Downloads/NotificationIcons/'
所以也许其中之一是 Ocra 的相对路径,但我不确定 100% 这就是为什么我想了解 'relative path' 的明确含义以及为什么我有这个堆栈跟踪此错误。
PS: 'xxxx' 只是为了保护隐私!
提前感谢您的帮助我目前正忙于将我的项目打包到跨平台,现在我只是想在 Windows.
上使用它如果您需要更多信息,请直接询问,如果我犯了任何错误,请多多包涵,因为这是我在 Stack Overflow 上提出的第一个问题。