Программа с памятью на ruby

программирование ruby

Хочу написать маленькую программку на ruby для себя. Будет вроде домашней бухгалтерии - доход, расход и пара счетов. Собственно вопрос: как сделать так, чтоб программа запоминала все значения по счетам, операции и пр.? Можно сделать запись\чтение файла, а есть ли способ сделать только один исполняемый файл чтобы программа не зависела от наличия файла с данными?

Примечание:
Антон Витальевич, чем этот подход плох и почему "может убить"?
Ответы:
Я бы посоветовал взять веб-фрэймворк для этих целей. Rails, merb, Sinatra. В случае с Sinatra и merb может быть реально один исполняемый файл, но счастья вам это вряд ли принесет, лучше разрабатывать обычное merb или rails приложение. А для хранения данных я бы посоветовал вам базу данных: файловую - типа SQLite, или серверную - типа MySql или PostreSql. Так же можно попробовать базы данных, которые хранят данные ввиде "ключ - значение", например Redis. А еще можно серелизовать объект в json или yaml, но муторнее всего. Самый простой путь это Ruby on Rails + SQLite либо merb + SQLite. Хотя это и потребует чтения документаций и гидов, а так же небольших знаний ruby, HTML и ООП. Если есть время и желание - дерзайте, это очень интересно.
т.е. вы хотите чтобы программа записывала результаты в себя
заведомо плохой подход
запись в себя может себя убить
Модификация исполняемого (exe) файла в момент его выполнения обычно невозможна потому что он будет защищён от записи самой системой. Но если очень хочется, то можно его разблокировать специальными тулзами вроде WinUnlock (я не вкурсе, на чём основан принцип их работы), но опять же, скорее всего, если это делать в процессе работы программы, то произойдёт ошибка.
Может убить потому что ошибки исполнения кода, ошибки памяти и операционной среды никто не отменял, ошибки компиляции если вы хотите екзешник и....   Основную причину я могу и не знать... Но одно известно однозначно: никогда исполняемый код не содержит в себе конечных результатов работы этого кода.
если как скрипт, то можно, просто комментарий в конце пометить как-нибудь, типа "=begin data" и в программе то что после него и до "=end" считать как данные. и при выполнении скрипта(!) можно будет их считывать и записывать, например вот такой код работает:
#yasam.rb
File.open("yasam.rb","a"){|f| f.write("я стану больше и сильнее\n")}
правда интерфейс консольный, но всеже как вариант)


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.