Archive for the ‘sinatra’ tag
Использование Sinatra внутри Rails Metal
С версии 2.3 в Rails присутствует Rails Metal, который позволяет обработать запросы перед попаданием их в основное приложение. Для более удобного написания кода в Rails Metal можно использовать различные фреймворки, базирующиеся на Rack, в частности фреймворк Sinatra.
Сначала необходимо создать новый Rails Metal с помощью соответствующего генератора:
create app/metal/my_embedded_sinatra.rb
В результате получается следующий Rack обработчик:
Sinatra и DataMapper: пример сервиса сокращения ссылок
В мире Ruby существует несколько ORM библиотек. Самая популярная библиотека ActiveRecord является и самой тяжелой, к тому же ее не особо удобно использовать вне Rails. Для небольших приложений на фреймворке Sinatra наиболее оптимальным вариантом является библиотека DataMapper, которая не уступает по функциональности, а в некоторых моментах опережает своего главного конкурента.
На примере простого сервиса сокращения ссылок рассмотрим работу с DataMapper внутри Sinatra.
Устанавливаем гемы с DataMapper и адаптером Sqlite к нему:
DataMapper состоит из нескольких библиотек, использовать будем только некоторые из них:
dm-core- ядро DataMapper'а.dm-validations- готовые методы для проверки входных данных.dm-timestamps- автоматическое создание и обновление полейcreated_at,updated_at.
В app.rb подключим необходимые библиотеки из DataMapper и настроим соединение с базой данных:
Запуск web-приложения на Sinatra с Phusion Passenger
На сегодняшний день одним из самых простых способов запуска Rails и Rack web-приложений является Phusion Passenger, представляющий собой модуль для Apache и Nginx. Фреймворк Sinatra базируется на Rack, следовательно, приложения на его основе Passenger способен легко запускать.
Для приложения необходима базовая структура директорий:
|-- app.rb < -- непосредственно приложение
|-- config.ru <-- Rackup файл для запуска
|-- public/ <-- директория для статических файлов (картинки, css, javascript)
|-- tmp/ <-- временная директория
Hello world с помощью Ruby, Sinatra и Haml
Sinatra является легковесным фреймворком на Ruby, позволяет быстро и легко разрабатывать небольшие web-приложения. В основе фреймворка лежит DSL для простой разработки, что позволяет не отвлекаться на разбор параметров и обработку шаблонов.
Для начала нужны Ruby и Rubygems. Затем необходимо установить Sinatra:
В любимом текстовом редакторе (Vim, Emacs, TextMate и т.п.) создаем в новой директории файл app.rb, являющийся web-приложением на Sinatra:
require 'sinatra'
get '/' do
'Hello world!'
end