1
0
Fork 0
mirror of https://github.com/sinatra/sinatra synced 2023-03-27 23:18:01 -04:00

explain run! vs config.ru in russian README

This commit is contained in:
Vasily Polovnyov 2011-01-14 11:57:04 +03:00
parent d9f62bae01
commit 390e3a0b7a

View file

@ -94,7 +94,7 @@ Sinatra — это предметно-ориентированный язык (D
end
get '/foo' do
# соответствует с non-songbird браузерам
# соответствует non-songbird браузерам
end
Другими доступными условиями являются +host_name+ и +provides+:
@ -833,7 +833,7 @@ Rack распространяется с различными стандартн
Заметьте: Встроенные модули Sinatra::Test и Sinatra::TestHarness являются
устаревшими, начиная с 0.9.2 релиза.
== Sinatra::Base - Подпрограммы, библиотеки и модульные приложения
== Sinatra::Base — подпрограммы, библиотеки и модульные приложения
Описание своего приложения самым простейшим способом (с помощью DSL верхнего уровня, как в примерах выше)
работает отлично для крохотных приложений, но имеет множество недостатков, когда надо
@ -856,13 +856,6 @@ DSL верхнего уровня загрязняет пространство
end
end
MyApp класс является независимым Rack компонентом, который может исполнять роли
Rack подпрограммы, Rack приложения, Rails metal. Вы можете +use+ (использовать) или
+run+ (запустить) этот класс из rackup файла +config.ru+; или контролировать серверную
часть из библиотеки:
MyApp.run! :host => 'localhost', :port => 9090
Методы, доступные Sinatra::Base сабклассам идентичны тем, что доступны
в DSL верхнего уровня. Большинство приложений верхнего уровня могут быть
конвертированы в Sinatra::Base компоненты с помощью двух модификаций:
@ -875,6 +868,64 @@ Rack подпрограммы, Rack приложения, Rails metal. Вы мо
Смотрите {Опции и Конфигурация}[http://www.sinatrarb.com/configuration.html] для детальной информации
об опциях и их поведении.
=== Запуск модульных приложений
Есть два общепринятых способа запускать модульные приложения: запуск напрямую с помощью <tt>run!</tt>:
# my_app.rb
require 'sinatra/base'
class MyApp < Sinatra::Base
# ... здесь код приложения ...
# запускаем сервер, если исполняется текущий файл
run! if app_file == $0
end
И запускаем с помощью:
ruby my_app.rb
Или с помощью конфигурационного файла <tt>config.ru</tt>, который позволяет использовать любой
Rack-совместимый сервер приложений.
# config.ru
require 'my_app'
run MyApp
Запускаем:
rackup -p 4567
=== Запуск "классических" приложений с config.ru
Файл приложения:
# app.rb
require 'sinatra'
get '/' do
'Hello world!'
end
И соответствующий <tt>config.ru</tt>:
require 'app'
run Sinatra::Application
=== Когда использовать config.ru?
Вот несколько причин, по которым вы, возможно, захотите использовать <tt>config.ru</tt>:
* вы хотите разворачивать свое приложение на различных Rack-совместимых серверах (Passenger, Unicorn,
Heroku, ...).
* вы хотите использовать более одного сабкласса <tt>Sinatra::Base</tt>.
* вы хотите использовать Sinatra только в качестве подпрограммы Rack.
<b>Совсем необязательно переходить на использование <tt>config.ru</tt> лишь потому, что вы стали
использовать модульный стиль приложения. И необязательно использовать модульный стиль, чтобы
запускать приложение с помощью <tt>config.ru</tt>.</b>
=== Использование Sinatra как подпрограммы
Не только сама Sinatra может использовать подпрограммы Rack, любое Sinatra приложение