Skip to content

Latest commit

 

History

History
247 lines (165 loc) · 13.1 KB

configuration.md

File metadata and controls

247 lines (165 loc) · 13.1 KB
title layout id
Опции и конфигурация
default
configuration

Опции и конфигурация

В Sinatra есть встроенные опции, которые отвечают за дополнительную функциональность фреймворка. Кроме того, приложения на Sinatra могут задавать и использовать свои собственные опции. Опции -- это переменные на уровне всего приложения, которые конфигурируются с помощью методов set, enable, disable и доступны на уровне запроса через объект settings.

Использование set, enable и disable

В самом простейшем случае метод set принимает два аргумента: название опции и ее значение.

set :foo, 'bar'

get '/foo' do
  "foo is set to " + settings.foo
end

Отложенное выполнение

Если в качестве значения опции использовать блок Proc, то он будет выполнен при обращении к опции.

set :foo, 'bar'
set :baz, Proc.new { "Hello " + foo }

get '/baz' do
  "baz is set to " + settings.baz
end

Ответом на запрос /baz должен быть "baz is set to Hello bar".

Задание нескольких опций

Вы можете задавать несколько опций сразу, передавая методу set хеш. Соответственно, предыдущий пример можно переписать вот так:

set :foo => 'bar', :baz => Proc.new { "Hello " + foo }

Задание нескольких булевых опций

Методы enable и disable используются для опций, значением которых может быть либо true, либо false. Следующие два примера делают то же самое:

enable  :sessions, :logging
disable :dump_errors, :some_custom_option

Используя set:

set :sessions, true
set :logging, true
set :dump_errors, false
set :some_custom_option, false

Настройки Sinatra

:environment - окружение

Опция, задающая текущее рабочее окружение. Обычно это :development, :test или :production. По умолчанию -- значение переменной RACK_ENV (ENV['RACK_ENV]) или :development, если RACK_ENV не задана.

Окружение может быть задано явно:

set :environment, :production

:sessions - включить/выключить сессии

Поддержка закодированных сессий, работающих на основе кук браузера, включена в Sinatra, но отключена по умолчанию. Включить их можно так:

set :sessions, true

Поддержка сессий осуществляется с помощью прослойки Rack::Session::Cookie.

:logging - выводить запросы в STDERR

Если данная опция включена, то в STDERR будут выводиться запросы в формате логов веб-сервера Apache. Эта опция включена по умолчанию для классических приложений и отключена для модульных.

Для этого используется прослойка Rack::CommonLogger.

:method_override - включить/выключить хак с _method в POST

Если данная опция включена, то актуальный метод HTTP запроса может быть переопределен с помощью параметра _method, переданного в теле этого же POST запроса. Этот хак используется, чтобы заставить некоторые POST запросы выглядеть как другие HTTP запросы (PUT, DELETE), и обычно нужен, например, при отправке данных из HTML форм (браузеры умеют не все методы HTTP).

Для этого используется прослойка Rack::MethodOverride.

:root - корневая директория приложения

Базовая директория приложения. По умолчанию, это директория, в которой находится главный файл приложения (опция :app_file). Значение этой опции используется для конструирования других опций: :public и :views. Довольно часто опцию :root задают явно в файле-исходнике приложения:

set :root, File.dirname(__FILE__)

:static - включить/выключить обработку статических файлов

Определяет, должны ли отдаваться статические файлы из публичной директории приложения (опция :public). Если эта опция включена, то Sinatra в первую очередь будет проверять существование статического файла и лишь затем искать соответствующий маршрут.

Опция :static включена по умолчанию, если задана публичная директория (:public).

:public - директория по статическими файлами

Строка, задающая путь к директории, откуда должны отдаваться статические файлы. По умолчанию, это директория с именем "public" внутри корневой директории приложения (опция :root). Вы можете явно задать публичную директорию с помощью:

set :public, '/var/www'

Самый лучший способ использовать другое название для этой директории -- использование значения, которое ссылается на опцию :root:

set :public, Proc.new { File.join(root, "static") }

:views - директория с шаблонами

Строка, задающая путь к директории, где находятся шаблоны. По умолчанию, это директория с именем "views" внутри корневой директории приложения (опция :root).

Самый лучший способ использовать другое название для этой директории -- использование значения, которое ссылается на опцию :root:

set :views, Proc.new { File.join(root, "templates") }

:run - включить/выключить встроенный веб-сервер

Если включено, то встроенный веб-сервер будет запущен сразу после полной загрузки всего приложения. По умолчанию, эта опция включена, если :app_file совпадает с $0, то есть при запуске приложения напрямую с помощью ruby myapp.rb. Выключить его можно с помощью:

set :run, false

:server - обработчик, используемый в качестве веб-сервера

Строка или массив из имен обработчиков Rack. Когда опция :run включена, Sinatra пройдется по этому списку и запустит первый же доступный обработчик. По умолчанию, эта опция задана как:

set :server, %w[thin mongrel webrick]

:bind - имя хоста или ip-адрес сервера

Строка, задающую имя хоста или ip-адрес интерфейса, на котором должен быть запущен встроенный веб-сервер, если включена опция :run. По умолчанию, 0.0.0.0, с таким значением сервер будет слушать на всех доступных интерфейсах. Чтобы сервер принимал только локальные соединения используйте:

set :bind, 'localhost'

:port - порт сервера

Порт, который должен использовать встроенный веб-сервер, когда включена опция :run. По умолчанию, 4567. Задать его можно явно с помощью:

set :port, 9494

:app_file - главный файл-исходник приложения

Опция :app_file используется для конструирования значений по умолчанию для опций :root, :public и :views. Можно перекрыть встроенный механизм определения этой опции и задать ее явно в главном файле-исходнике приложения: The :app_file setting is used to calculate the default :root,

set :app_file, __FILE__

Кроме того, эта опция используется, чтобы определить, должна ли Sinatra запускать веб-сервер в случае классического приложения.

:dump_errors - выводить отладочную информацию об исключениях в STDERR

Если включено, то в STDERR будет выводиться отладочная информация об исключении, когда оно возбуждено в фильтре или маршруте. По умолчанию, эта опция включена для классических приложений. Ее можно отключить с помощью:

set :dump_errors, false

:raise_errors - разрешить исключениям пробрасываться за пределы приложения

Если выключено, то при возбуждении исключения из маршрутов или фильтров оно будет "поймано" и передано обработчикам ошибок, которые обычно выставляют кодом HTTP ответа 5xx и отрисовывают какую-нибудь страницу с сообщением об ошибке. В противном случае, исключение будет проброшено за пределы приложения, где оно может быть обработано веб-сервером или Rack прослойкой, такой как Rack::ShowExceptions или Rack::MailExceptions.

:lock - включить/выключить мьютекс, обеспечивающий обработку только одного запроса одновременно

Sinatra может работать в окружении с тредами, где больше чем один запрос может обрабатываться одновременно. Тем не менее, не все приложения и библиотеки потоко-безопасны, и это может стать причиной серьезных и трудноуловимых ошибок. Если эта опция включена, то все запросы будут синхронизированы относительно мьютекса, гарантируя обработку только одного запроса одновременно.

По умолчанию, опция :lock отключена.

:show_exceptions - включить/выключить стильные страницы с сообщением об ошибке

Если включено, то при возбуждении необработанного исключения будет отображаться страница с отладочной информацией. По умолчанию, включено в режиме разработки (:development).