2015-09-14 2 views
0

У меня есть эти строки поверх моего кода Ruby и пробовал несколько комбинаций, но ни один из них не работал.Ruby Ocra не меняет рабочий каталог

$:.unshift File.dirname($0) 
Dir.chdir(File.dirname($0)) 

У меня есть файл конфигурации, который находится в той же директории, что и exe, созданный Ocra. Файл загружается следующим образом:

cnf = YAML.load_file('config.yml') 

Однако файл не загружается из той же директории, которой требуется. Ошибка, я думаю, говорит, что она пытается загрузить ее из временного каталога при запуске exe.

error

Как я могу получить сценарий загрузку файла config.yml из того же каталога, чем ех?

+0

[GitHub Page] (https://github.com/larsch/ocra#working-directory), похоже, обращается к этому типу проблема довольно прямо – engineersmnky

+0

@engineersmnky все еще не работает :(Дает такую ​​же ошибку, хотя я использую флаг '--chdir-first'. – aksu

+0

Если я правильно понял ваш вопрос, вы ожидаете, что' config.yml' часть скомпилированного exe. Вы добавляете 'config.yml'' в свой дистрибутив? Как вы называете ocra? – knut

ответ

0

Ocra использует переменные среды для хранения места ЕХА ENV["OCRA_EXECUTABLE"] Чтобы получить доступ к файлам относительно где ваш ruby_script.exe это вы должны изменить ваш рабочие туда. Вот код, который может работать для вас:

Dir.chdir File.dirname(ENV["OCRA_EXECUTABLE"]) if ENV["OCRA_EXECUTABLE"]

Имея «if ENV["OCRA_EXECUTABLE"]» в конце этой строки сохраняет скрипт метания ошибки, когда ваш он работает без OCRA как рубинового файл (. Р.Б.). Он просто проверяет, существует ли эта ENV, если это так, то ваша программа работает внутри вашего ocra EXE

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