Создание исполняемого файла из рубиновых файлов с использованием Ocra, LoadError?

Я пытаюсь сделать исполняемый файл из пары файлов ruby ​​в Windows, поэтому я установил Ocra. Я думал, что понял процесс работы Ocra, но не могу заставить работать исполняемый файл корректно. У меня возникает проблема с "требованием" других файлов ruby.

Программа ruby ​​сама по себе компилируется правильно и функционирует так, как я хочу, и Ocra, кажется, создает рабочий исполняемый файл, однако, когда я пытаюсь запустить исполняемый файл, я получаю следующую ошибку:

* / custom_require.rb: 36: в 'require': не могу загрузить такой файл - MainMenuDialog.rb (LoadError)*

Моя основная программа называется "JobManager.rb", и она создает новый объект MainMenuDialog, поэтому я включаю MainMenuDialog.rb в начало файла как таковой:

$: << File.expand_path(File.dirname(__FILE__) + "/../lib")
# Other requires here
require("MainMenuDialog.rb")

Опять же, программа сама по себе компилируется и прекрасно работает (включая операторы require), и когда я запускаю команду ocra JobManager.rb, она успешно запускает программы, проверяет зависимости и создает исполняемый файл. Я просто не могу запустить исполняемый файл из-за "LoadError", описанного выше.

Есть мысли о том, что я делаю не так? Заранее спасибо!!!

2 ответа

Решение

С ruby >= 1.9 вы можете попробовать require_relative,

Объяснение: ocra хранит все файлы в своих собственных подкаталогах.

Если вы манипулируете загрузочными путями ($:), вы не можете быть уверены, что ocra использует во время выполнения.

Этот вопрос старый и на него дан ответ, но я хотел включить этот маленький самородок, который нашел в документации Ocra, потому что правильный ответ здесь не решил мою проблему:

OCRA не устанавливает путь включения. использование $:.unshift File.dirname($0) в начале вашего скрипта, если вам нужно "потребовать" дополнительные исходные файлы из той же директории, что и ваш основной скрипт.

Другие вопросы по тегам