(Ruby) Компиляция динамических приложений для Windows?

Есть ли у кого-нибудь идеи относительно компиляции кода Ruby для Windows? Я пробовал и «Ruby2Exe», и «OCRA», но у обоих есть свои проблемы. Ruby2Exe продолжает выдавать расплывчатые или запутанные предупреждения, такие как «невозможно изменить замороженную строку». С другой стороны, OCRA, похоже, хочет запустить ваш скрипт и предполагает, что динамических элементов нет.

Для справки, мой скрипт принимает аргументы командной строки, а также считывает и анализирует текстовый файл. OCRA вообще не нравится этот аспект, и на самом деле он выдает предупреждения в моем коде, как если бы я пытался запустить скрипт.

В любом случае, если у кого-то есть какие-либо качественные средства для компиляции рубинового кода для Windows, я весь в ушах.

К вашему сведению, моя цель с этим конкретным скриптом — отправлять электронную почту по SMTP. Это часть более крупного приложения, отличного от Ruby, но фреймворк не может отправлять электронную почту. Я нахожу Ruby приятным и довольно простым в работе, но не хочу, чтобы каждый конечный пользователь устанавливал Ruby - отсюда необходимость/желание "скомпилировать" его.

У меня мало времени, и я не могу позволить себе тратить ресурсы на написание этого на C ++ и т. Д. Однако, если у кого-то есть какие-либо идеи о любых существующих Windows-совместимых библиотеках / приложениях, расскажите.

Очень признателен.


person humble_coder    schedule 28.07.2009    source источник
comment
Не могли бы вы предположить, что Java установлена ​​или сделать ее обязательным условием?   -  person David    schedule 19.08.2010


Ответы (1)


"С другой стороны, OCRA хочет запустить ваш скрипт..."

Константа Ocra определяется во время компиляции, но не во время выполнения. Таким образом, вы можете включить логику в зависимости от того, определена ли константа Ocra. Например:

   app = MyApp.new
   if not defined?(Ocra)
     app.main_loop
   end
person David Mullet    schedule 28.07.2009
comment
Пожалуйста, простите меня, но, кажется, вы начинаете с середины мысли. Я не смотрел код OCRA. Я просто использовал его для компиляции. Не могли бы вы расширить это утверждение? - person humble_coder; 28.07.2009
comment
Извините за путаницу. Ocra должен загрузить ваш скрипт, чтобы определить, какие файлы (включая необходимые драгоценные камни) включить в исполняемый файл. Я предполагаю, что один из ваших вопросов касается того, как избежать выполнения Ocra всего вашего сценария. Цитируя разработчика Ocra, вы можете определить, строит ли Ocra ваш скрипт в данный момент, ища константу 'Ocra'. Если он определен, Ocra в настоящее время создает исполняемый файл из вашего скрипта. Например, вы можете использовать это, чтобы не открывать окно графического интерфейса при компиляции исполняемых файлов. - person David Mullet; 29.07.2009
comment
Хорошо, все еще запутался, но меньше. Так мне поместить этот код в файл OCRA или в мой файл .rb? - person humble_coder; 29.07.2009
comment
Вы бы добавили что-то подобное в свой ruby-скрипт (файл .rb). Если вы предпочитаете, не стесняйтесь присылать мне свой код (или обобщенную версию) по электронной почте (имя точка фамилия в Gmail точка com), и я могу предложить конкретные предложения. - person David Mullet; 29.07.2009
comment
Очень признателен. Отправил. Я с нетерпением жду вашего мнения. - person humble_coder; 30.07.2009