2016-08-23 52 views
2

我试图在没有任何ruby安装的情况下在Windows上构建一个.exe脚本来执行我的脚本。 我正在使用Ocra,但我有一个堆栈跟踪。用Ocra构建ruby脚本以实现跨平台使用,但是使用堆栈跟踪获得'relative_path_form'

另请注意,有两个文件运行整个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给我:

>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/[email protected]":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和我的红宝石版本,它是'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/[email protected]/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/[email protected]" 
MY_RUBY_HOME: "" 
IRBRC:  "" 
RUBYOPT:  "" 
gemset:  "" 

我的脚本解析一个HTML页面,也必须在文件夹内创建一个文件,写入/读取到这个文件,也Libnotify必须设置一个这我不知道如何正确解释它,但这是某种路径:

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

因此,也许其中之一就是OCRA指相对路径,但我不知道100%,这就是为什么我想知道什么是相对路径“明确表示和还有为什么我有这个错误的堆栈跟踪。

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

感谢您提前提供任何帮助,我目前坚持将我的项目封装到跨平台,现在我只是试图在Windows上获得它。

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

+0

它可能是您需要降级ruby或rubygems,从ocra自述:'Ruby 1.8.7,1.9.3,2.0.0和2.1.5 support',而您使用的是2.4。顺便说一句,这行'需要'rubygems''没有必要,因为1.9 –

+0

我在这里有同样的错误,这是与Ruby 2.0.0'/home/xxxx/.rvm/gems/ruby-2.0.0- p648/gems/ocra-1.3.6/bin/ocra:41:在'relative_path_from'中:未定义的方法'path'为“/home/xxxx/.rvm/gems/[email protected]":String (NoMethodError)' – AkechiShiro

+0

也许这可以帮助当我运行'ocra --version'它给了我这个警告:'/home/xxxx/.rvm/gems/ruby-2.0.0-p648/gems/ocra-1.3。 6/bin/ocra:19:警告:已经初始化为常量File :: ALT_SEPARATOR' 'Ocra 1.3.6' – AkechiShiro

回答

1

Ocra目前在Linux上无法正常工作。

做一个谷歌搜索

ocra undefined method `path' 

链接here,在问题页面上的OCRA github上这说明很多人有同样的问题。这个链接here,项目维护者说,Ocra不能在Linux上工作,尽管它可能值得Wine拍摄。