2016-08-23 4 views
2

Я пытаюсь создать .exe для выполнения моего сценария в Windows без какой-либо рубиновой установки. Я использую Ocra для этого, но у меня есть трассировка стека.Создание сценария ruby ​​с Ocra для использования в кросс-платформе, но я получаю «relative_path_form» с stacktrace

Также обратите внимание, что есть два файла, которые запускают весь sc, и что я использую RVM в настоящее время, и я не выполнял установку sudo gem, так как я использую RVM.

Gems, используемые в первом файле:

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

Gems, используемые во втором файле:

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

Возможно, вам нужно понизить рубин или рубигемы, от ocra readme: 'Ruby 1.8.7, 1.9.3, 2.0.0 и 2.1.5 support', тогда как вы используете 2.4. Кстати, эта строка 'require '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: in 'relative_path_from': undefined method '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: предупреждение: уже инициализированная константа Файл :: ALT_SEPARATOR' 'Ocra 1.3.6' – AkechiShiro

ответ

1

В настоящее время Ocra не работает на Linux.

Выполнить поиск Google для

ocra undefined method `path' 

Linked here, страницу вопросов на GitHub Ocra, который показывает многие люди имеют те же проблемы. Это, по очереди, приводит ссылки here, где разработчик проекта говорит, что Ocra не работает в Linux, хотя, возможно, стоит попробовать Wine.

Смежные вопросы