Создание исполняемого файла из рубиновых файлов с использованием 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)
в начале вашего скрипта, если вам нужно "потребовать" дополнительные исходные файлы из той же директории, что и ваш основной скрипт.