Sinatra uygulamamızın hafızasını kalıcı hale getirelim
Andaç Karay Kudu, 09 Dec 2015
Daha önce uygulamamıza hafıza eklemiştik . Fakat programımız her durdurduğunda hafızası siliniyor. Hafızanın kalıcı olmasını sağlamak için bir dosya kullanacağız. Mesajları da JSON formatında saklayacağız.
Öncelikle JSON kütüphanesini kuralım.
$ gem install json
Artık uygulamamızda JSON fonksiyonlarını kullanabiliriz.
# file_memory.rb
require 'sinatra'
require 'tilt/erb'
require 'json'
configure do
set :memory, 'messages.json'
end
get '/' do
@messages = JSON.parse(open(settings.memory).read)
erb :index
end
post '/' do
messages = JSON.parse(open(settings.memory).read)
messages << JSON.parse( { body: params[:message] }.to_json )
File.write settings.memory, JSON.pretty_generate(messages, indent: ' ')
redirect '/'
end
__END__
@@ index
<!DOCTYPE html>
<html>
<head>
<title>messages</title>
</head>
<body>
<form method="POST">
<input type="text" name="message">
</form>
<p>
<ul>
<% @messages.each do |message| %>
<li><%= message["body"] %></li>
<% end %>
</ul>
</p>
</body>
</html>
Uygulama çalıştığında mesajları okuması için bir hafıza dosyasına ihtiyaç duyuyor. Boş dizi içeren bir dosya hazırlayalım.
$ echo [] > messages.json
Yukarıdaki komutu messages.json dosyasını boşaltmak için de kullanabiliriz.
Uygulamamızı çalıştıralım.
$ ruby file_memory.rb
Sonuç
http://localhost:4567 adresinde çalışan uygulamamız artık mesajlarımızı unutmuyor.