![]() |
|
![]() ![]() ![]() |
|
Cinot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
Насколько я понял, есть 2 программы для преобразования проекта на Ruby в один исполняемый файл: rubyscript2exe и exerb. Есть ещё allinoneruby, но я не понял, что он делает.
Наверняка, почти все здесь использовали эти (или другие?) программы для создания exe-шника для Windows. Поделитель, пожалуйста, опытом, конкретными примерами, последовательностью действий - никак не могу разобраться! Нужно как-то "засунуть" в EXE все библиотеки, иконки и т.д., чтобы программа запускалась на любом компьютере с Windows. |
|||
|
||||
doomik |
|
|||
![]() Одинокий волк ![]() ![]() Профиль Группа: Участник Сообщений: 360 Регистрация: 25.10.2005 Где: #vingrad Репутация: нет Всего: 15 |
Пробывал сегодня rubyscript2exe-0.5.3.
Взял простой скрипт из книжки ( работа с SQLite, создать базу, добавить, найти ). Вышло нормально, тестил на втором компе где не установлен Ruby - сработало, только заметна задержка при старте ( видимо происходить распаковка всех нужных библиотек ). Вес скрипта стал больше, из 1,26 КБ в 1,82 МБ. Запустить rubyscript2exe можно из командной строки
где filename.rb это твой скрипт. Здесь можно почитать побольше. -------------------- "Единственный способ изучать новый язык программирования - писать на нем программы." - Brian Kernighan Remember, st1ng3r /server irc.ircline.ru /j #vingrad |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 6 Всего: 56 |
Имхо, если нужен бинарник, то лучше воспользоваться компиляторами Ruby под .NET или под Java.
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
doomik |
|
|||
![]() Одинокий волк ![]() ![]() Профиль Группа: Участник Сообщений: 360 Регистрация: 25.10.2005 Где: #vingrad Репутация: нет Всего: 15 |
source777,
Т.е перейти на Jruby, IronRuby ? -------------------- "Единственный способ изучать новый язык программирования - писать на нем программы." - Brian Kernighan Remember, st1ng3r /server irc.ircline.ru /j #vingrad |
|||
|
||||
Cinot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
У меня не просто скриптик, у меня программа с интерфейсом (использующая FXRuby), с иконками и подгружаемыми библиотеками. Нужно запихнуть в EXE всё это.
Получилось у меня что-то вчера с rubyscript2exe, но это что-то мало того, что грузится секунду (заметно так), так ещё периодически просто самостоятельно выгружается сразу после загрузки - даже окно не появляется. |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 6 Всего: 56 |
Ну а что плохого в использовании Jruby, IronRuby, xRuby, Rubinius, YARV, если этого требует текущая задача? Хотя мне таких задач не попадалось, где от Ruby требовался exe на выходе...
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
doomik |
|
|||
![]() Одинокий волк ![]() ![]() Профиль Группа: Участник Сообщений: 360 Регистрация: 25.10.2005 Где: #vingrad Репутация: нет Всего: 15 |
source777,
Ничего, просто если я например захочу поделится с друзьями скриптом то не у всех установлен JRE или .NET Framework а сам Ruby уж точно тогда пойдут вопросы похожие на "а зачем эта программа ?", " а она нужна мне?", "дай ссылку скачать !!!" ![]() -------------------- "Единственный способ изучать новый язык программирования - писать на нем программы." - Brian Kernighan Remember, st1ng3r /server irc.ircline.ru /j #vingrad |
|||
|
||||
Cinot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
Неужели никто из раздела Ruby никогда не делал оконное приложение и EXE для беспроблемного запуска на любом Windows-компе?
|
|||
|
||||
source777 |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 6 Всего: 56 |
Нафига? Меня для этих целей C# вполне устраивает. Или ты думаешь, что все кто заглядывает в раздел Ruby, программируют только на Ruby ![]()
![]() -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
||||||
|
|||||||
Cinot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
Я думаю, что программисты на Ruby в разделе Ruby всё же есть - то есть, не те, кто по одному скриптику пишет в дополнение к своему основному языку, а те, кто делает полноценные приложения на Ruby. К ним и вопрос. |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 1 Всего: 160 |
doomik, ты и твои друзья - твердолобые консерваторы! ![]()
Добавлено через 2 минуты и 51 секунду А вообще, в хороших ОС (читай Mac OS X) Ruby идёт "из коробки"! ![]() -------------------- |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 1 Всего: 160 |
И ещё - у Ruby вот-вот появится возможность компиляции в байт-код для собственной VM (а не .NET, JVM). Называется эта виртуальная машина YARV. Правда, стоит отметить, что "завтраками кормят" уже больше года. YARV повится в версии 1.9.1, которая должна была выйти уже год назад, но до сих пор не вышла. Обещали в конце декабря... Как бы там ни было, а в Ruby 2.0 эта VM уже точно будет полноценным компонентом.
Добавлено @ 18:56 А, походу 1.9.1 уже можно дёрнуть из svn repo! ![]() Это сообщение отредактировал(а) kemiisto - 17.12.2008, 18:56 -------------------- |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 6 Всего: 56 |
Ну я делаю на Ruby полноценные приложения и я уже тебе ответил, что тебе нужна VM, другого вменяемого решения тебе врядли кто предложит... P.S. У любого программиста как минимум 3 основных языка, если ты знаешь только Ruby, то ты ещё не программист, а всего лишь кодер. Можешь конечно обратиться к таким же кодерам как ты, но у них обычно бессмысленно спрашивать об архитектурных решениях, т.к. кодеры жестко ограничены языком, на котором кодируют, и как следствие многое делают через .опу. -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
Cinot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
source777, мне не знакомо ваше деление на программистов/непрограммистов по количеству языков. И потом, разве Ruby не является самодостаточным? Зачем знать ещё какие-то языки, когда лучше изучить один нормально и применять его?
kemiisto, что значит "компонентное ПО"? Да и вообще, с JIT-компиляцией и VM я незнаком. Объясните популярно! Я привык, что все программы, особенно простенькие, можно запустить EXE-шником. И мне нужно, чтобы мой маленький проект был каким-то образом скомпилирован в приложение, которое без установки дополнительных средств (всяких Java VM и т.п.) запускалось с любого компьютера под управлением Windows. Разве это не EXE-файл? Это сообщение отредактировал(а) Cinot - 18.3.2009, 17:49 |
|||
|
||||
source777 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 6 Всего: 56 |
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
||||
|
|||||
Cinot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
source777, что-то не помню вакансий вроде "Нужен кодер на С++" - обычно с языками программирования работает программист, а не какой-то там кодер. Ну да ладно: кому нравится учить несколько языков - пусть учат, меня волнует создание полноценного приложения именно на Ruby.
|
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 6 Всего: 56 |
Естественно, HR-менеджеры в абсолютном большинстве верх безграмотности в данном вопросе, обычно требуется программист со знанием C++, а не "программист С++", что нонсенс само по себе.
Что есть полноценное приложение? Думаешь exe-файл, а вот и нифига подобного, полноценное приложение - это приложение, которое справляется со своими задачами! -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
Cinot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
source777, оно уже справляется, только в формате .rb. Теперь нужно, чтобы оно запускалось и с других компов.
Хватит флудить, я жду помощи от тех, кто в теме. |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 6 Всего: 56 |
Да жди на здоровье, только все нормальные варианты тебе уже были предложены: За сим откланиваюсь, устраивайся поудобнее, ибо ждать чего-то нового по данной теме тебе придётся __очень__ долго... -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
Cinot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
Дело в том, что тема уже на 2 страницах, а никто не может объяснить на простом языке, как сделать то, о чём я спрашивал - организовать запуск Ruby-приложения на любом win-компе.
Jruby, xRuby - это compiles Ruby source code (.rb) to Java bytecode (.class)? И что мне делать с этим .class? Как получить исполняемый модуль-то? Или программы теперь запускаются не из EXE? =) |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 1 Всего: 160 |
Итак, начнём с того, что исходный код твоей программы на языке высокого уровня нужно перевести в машинно-зависимый код для конкретной платформы. Языки высокого уровня имитируют естественные языки, используя некоторые слова разговорного языка и общепринятые математические символы. Эти языки более удобны для человека, с помощью них, можно писать программы до нескольких тысяч строк длиной. Но, поскольку машина понимает только свой машинный язык, программа на алгоритмическом языке перед выполнением должна быть переведена на этот язык с помощью специально программы - транслятора (англ. translator - переводчик). Эти языки машинно независимы (однако для каждого языка и каждого типа ЭВМ необходимо разработать собственный транслятор). Так вот, существует два способа трансляции: Интерпретация (interpretation) — построчное (покомандное) исполнение программы. Каждая очередная инструкция исходной программы переводится в машинный код и сразу выполняется. Программа требует для исполнения наличия на машине интерпретатора и исходного кода. Компиляция (compilation) — перевод всей программы в машинный код. Полученный исполняемый файл в дальнейшем может быть запущен самостоятельно. Различия между двумя видами трансляции поясню на примере. Допустим, ты являешься обладателем кулинарного рецепта на иностранном языке. Если решишся приготовить по нему блюдо, у тебя есть два пути: 1) Можно сначала полностью перевести (и записать) текст рецепта на родной язык и лишь затем перейти к приготовлению блюда, основываясь уже на переведённом рецепте. Необходимости в исходный рецепт при этом Вы уже не испытываете (и никогда не испытаете). Примерно так поступает компилятор. 2) А можно, по мере перевода рецепта, сразу выполнять отдельные стадии, не записывая текст перевода. В таком случае Вы не получите текст рецепта на родном языке, но получите тоже самое блюдо! Если же возникнет необходимость приготовить блюдо ещё раз - придется переводить рецепт повторно. Ruby - язык принципиально интерпретируемый! Поэтому программа на Ruby требует наличия на машине интерпретатора Ruby. Потому что так задумано и точка. Не нравится - пиши на компилируемых языках. Благо их много. Теперь пару слов о т.н. виртуальных машинах. Сейчас это очень популярная идея. Суть в том, что твоя программа компилируется не в машинно-зависимый код, а в некое промежуточное представление. Затем полученный код исполняется виртуальной машиной. Грубо говоря, этот промежуточный код интерпретируется. Точнее, нужный участок (например, промежуточный код вызываемой функции) компилируется в машинно-зависимый код, а затем вызывается. Такую компиляцию называют JIT (Just In Time), компиляция "на лету", "строго вовремя". Но иногда, конечно, выгоднее интерпретировать какой-то кусок кода, а фоном компилировать его (см. Java HotSpot). Такой подход обеспечивает переносимость кода. Т.е. твой промежуточный код будет запускаться на любой платформе, для которой существует соответствующая виртуальная машина (VM). Так, например, работает Java, .NET, Smalltalk. Впервые, кстати, применено было Виртом. Для PASCAL существовало промежуточное представление (P-code), которое исполнялось виртуальной машиной. Это тоже поспособствовало широкому распространению языка. -------------------- |
|||
|
||||
Cinot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
kemiisto, спасибо за подробные разъяснения. Но я не понял, как скомпилировать программу в код для исполнения на виртуальной машине, чтобы было ЧТО-ТО, что могут запускать другие. Что это за файл в итоге?
Что касается интерпретатора, то при таком подходе нужно для своих программ делать инсталлятор с предварительной установкой Ruby на компы? Плохо получается, если так. |
|||
|
||||
kemiisto |
|
||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 1 Всего: 160 |
От виртуальной машины зависит. Если будешь использовать IronRuby, видимо, получишь *.exe, который запустится по двойному клику при наличии соотвествующей версии .NET Framework. Если JRuby, то можно упоковать всё в *.jar, который запустится по двойному клику при наличии соотвествующей версии Java Runtime Enviroment. И в том и в другом случае необходимо наличие дополнительного ПО. Так пусть уж этим ПО будет Ruby! ![]()
Плохо - использовать инструмент не по назначению. Cinot, пойми, Ruby - скриптовый язык. Писать на нём GUI под Windows с линковкой в один исполняемый файл - это не дело. -------------------- |
||||
|
|||||
Cinot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
kemiisto, насколько мне известно, Ruby - это не скриптовый язык, а вполне себе полноценный язык, ничем не уступающий большинству других. Поэтому я его и начал учить. Просто, и со вкусом. Ну а что касается всплывающего косяка, то придётся либо лучше разобраться в rubyscript2exe, либо сделать exe в IronRuby в надежде на то, что установлен .NET Framework, но этот вариант мне уже не нравится. За советы спасибо.
|
|||
|
||||
kemiisto |
|
||||||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 1 Всего: 160 |
Скриптовый, скриптовый! Сам Matz говорит:
Что хотел - то и получил. И ко всему прочему:
Т.е. Ruby - скриптовый интерпретируемый язык. Поэтому, твоя посылка:
неверна. Вот такие пироги. ![]() -------------------- |
||||||||
|
|||||||||
doomik |
|
||||||||
![]() Одинокий волк ![]() ![]() Профиль Группа: Участник Сообщений: 360 Регистрация: 25.10.2005 Где: #vingrad Репутация: нет Всего: 15 |
source777,
Под
я имел ввиду .NET, JRE. kemiisto,
Я не нуждаюсь в exe т.к .NET + JRE установлены.
Чем его делает другим от Java ? В Ruby тоже есть ООП, можно писать программы использующие GUI, и у обоих байт-код. -------------------- "Единственный способ изучать новый язык программирования - писать на нем программы." - Brian Kernighan Remember, st1ng3r /server irc.ircline.ru /j #vingrad |
||||||||
|
|||||||||
kemiisto |
|
||||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 1 Всего: 160 |
doomik, я уже начинаю злится. Вы что, читать не умеете:
JRuby, IronRuby - это уже сторонние реализации Ruby. Стандартная реализация - интерпретатор. Никаких там байт-кодов и виртуальной машины. Чистый итерпретируемый язык. Другим его делаю создатели. Я уже привёл цитату Matz'a.
Вот именно для этих целей и был создан Ruby, именно для них его и надо использовать.
А вот этого я вообще не понимаю: не нужна - иди лесом. Нужна - изволь поставить то, что я скажу. Не доверяешь - опять же - иде лесом. -------------------- |
||||||
|
|||||||
SoulKeeper |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 14.1.2007 Где: Ukraine, Lviv. Репутация: нет Всего: 15 |
Если уж сильно сильно хочется в exe независимый от jvm/net, то можно пойти путем ruby -> jruby -> java -> gcj -> exe.
Но целесообразность таких действий - отдельный вопрос. |
|||
|
||||
Cinot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
Не понимаю, зачем тогда wx/qt/tk/fx, если GUI для Ruby (то есть наоборот) не используется?
|
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 1 Всего: 160 |
Никто такого не говорил - GUI-скриптинг используется, но Ruby - язык интерпретируемый, посему и GUI-скрипты тоже запускают в интерпретирующем режиме. А ты хочешь откомпилировать и собрать в один файл. Вот и не надо этого делать. -------------------- |
|||
|
||||
Cinot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
kemiisto, ладно, раз всё так плохо, то, может, IronRuby имеет такой же синтаксис, а позволяет писать приложения "в одном"? Или у него не ситаксис Ruby, а приложение там тоже нельзя полноценное сделать? Там тоже fxruby можно использовать? Короче, что можно посоветовать человеку, который хочет писать полезные программки (не скрипты) на языке Ruby?
|
|||
|
||||
1null1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 21.12.2008 Репутация: нет Всего: нет |
Где то мельком читал, что делаеться компилер для Ruby/
|
|||
|
||||
Cinot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 20.11.2008 Репутация: нет Всего: нет |
Для упаковки (вроде, не компилляции) программы в EXE-файл созданы rubyscript2exe и exerb
http://exerb.sourceforge.jp/index.en.html Вроде, неплохое решение для тех, кому нравится синтаксис языка и не хочется писать некие скрипты. Но с этим я пока не очень разобрался. |
|||
|
||||
polkovnikk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 23.9.2009 Репутация: нет Всего: нет |
Подскажите, ПЖЛ, кто работал с rubyscript2exe???
чет у меня не получается ехе файлик сделать.... ![]() запускаю через rubyscript2exe свой файлик.руби програма начинает выполнятся, работает до конца, затем просто закрывается и ....... нет никакого ехе.... ошибок не выдает! в чем может быть прабл???? помогите плиз... а то я уже замучился ![]() заранее благодарен!
Это сообщение отредактировал(а) source777 - 23.9.2009, 18:50 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Ruby: Общие вопросы" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Ruby: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |