Приложение Stateful Rails.Хранение данных не в базе данных - PullRequest
1 голос
/ 12 февраля 2011

У меня есть приложение Rails, которое включает в себя чат. Все отлично работает, но теперь я хочу где-то хранить последние 50 сообщений чата. Мне нужно, чтобы показать последние сообщения, если страница перезагрузится. Я не хочу использовать базу данных. Было бы хорошо сохранить его в каком-то массиве, но Rails не имеет состояния. Я хочу, чтобы с вашей помощью это стало немного более актуальным.

Thx

UPD

Я нашел PStore (http://www.ruby -doc.org / stdlib / libdoc / pstore / rdoc / classes / PStore.html ). Это выглядит довольно хорошо для меня, не так ли?

Ответы [ 2 ]

2 голосов
/ 12 февраля 2011
  • Ваш самый простой ответ - Marshal , поскольку он является частью ядра Ruby.Просто скопируйте ваш фактический массив на диск в виде двоичного файла и прочитайте его обратно, как вам нужно.

    MYDB = 'mydb.marshal'
    
    # Write to disk
    last_50 = [ "foo", "bar" ]
    File.open( MYDB, 'wb' ){ |f| f << Marshal.dump( last_50 ) }
    
    # Load from disk
    last_50 = Marshal.load( File.open( MYDB, 'rb' ){ |f| f.read } )
    p last_50
    #=> ["foo", "bar"]
    
  • Если вы хотите, чтобы формат файла был удобочитаемым, попробуйте YAML (часть стандартной библиотеки Ruby) или JSON в качестве драгоценного камня.Оба формата представляют собой текстовые файлы, которые можно выгружать в файл, просматривать и загружать снова.

  • Вы говорите, что «не хотите базы данных», но не говоритеЗачем.Знаете ли вы, что SQLite имеет свою базу данных в одном файле, проста в установке, быстра и легка?

0 голосов
/ 12 февраля 2011

Вы должны посмотреть на Redis

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...