03 Oct

Небольшое веб приложение на Sinatra.

Пользуясь оставшим временем, которое мне дал военкомат, решил рассмотреть фреймворк на Ruby – Sinatra. Доносились слухи, что он в настоящее время – во времена облачных вычислений займет достойное место представителя Ruby. А в некоторых источниках пишется, что это даже лучщий GUI каркас для приложений на Ruby, представляя всю его мощь. Поэтому задача была такая – написать веб приложение, которое будет расчитывать количество дней до прибития домой из армии. Алгоритм очень прост. Привожу его тут:

1
2
3
4
5
 t0=Time.now #задаем настоящее время
 t1=Time.local(2012,10,01)# точка рассчета
 sec0=t1-t0 #вычисляем разницу в секундах
 sec1=sec0.round #округляем
 @dni=(((sec1/60)/60))/24 #вычисляем количество дней

Теперь нам нужно этот код использовать в самом фреймворке. Для этого сначала читаем мануал Sinatra, даже не нужно углубляться(пока не нужно) – информация на главной странице нам уже достаточна. Для начала надо установить gem sinatra. А далее записываем :

1
2
3
4
5
6
require "rubygems";
require "sinatra"

get "/hi" do
  "Hello World!"
end

в файл application.rb и сохраняем его. При выполнения файла,

1
2
3
$ruby application.rb
Sinatra has taken the stage ...
Listening on localhost:4567

мы можем запустить в браузере по адресу localhost:4567 наше приложение.
Теперь когда все удачно установлено и запускается, впихиваем наш код в само веб приложение.

1
2
3
4
5
6
7
8
9
10
11
12
require "rubygems"
require "sinatra"
require "haml"

get "/" do 
 t0=Time.now
 t1=Time.local(2012,10,01)
 sec0=t1-t0
 sec1=sec0.round
 @dni=(((sec1/60)/60))/24
 haml :index
end

Здесь я добавил Haml( язык разметки для упрощёной генерации XHTML) чтобы быстро и легко создавать html странички. Дальше создаем папку views в корне нашего приложения(до сих пор оно состояло всего из одного файла) и добавляем туда файл index.haml – нужно обратить внимание – здесь haml a не html. Так как обрабатываеть его будет Haml. И его содержимое:

1
2
3
4
5
6
7
8
9
10
11
12
13
%html
%head
    %title Herbi
    %link(rel="stylesheet" type="text/css" href="css/mystyle.css")
%body
    #header
        %h1 Herbiden gelmeye
    #article
        %p= "#{@dni}"
    %h2 gun galib.
    #footer
        %h4 Sayt Sinatra ve Haml ile yazilib.
        %h4 Biotin 2011-2012.

Как видно в коде, добавил css, поместив его в новые вложенные папки public/css в корне директории. Собвстенно это все.
Чтобы указать время локализации(Баку) выполняем в консоли:

1
heroku config:add TZ=Asia/Baku --app "название нашего приложения на heroku"

Рабочую версию разместил на heroku по адресу herbi.heroku.com. А также дополнительно код с проекта со всеми файлами разместил на github.com (смотри на странице about us & projects ).

Tweet about this on TwitterShare on FacebookShare on Google+Share on RedditShare on VK