diff --git a/Gemfile b/Gemfile index 7e94f47e..44ce91df 100644 --- a/Gemfile +++ b/Gemfile @@ -54,7 +54,6 @@ if RUBY_ENGINE == "ruby" gem 'radius' gem 'asciidoctor' gem 'liquid' - gem 'stylus' gem 'rabl' gem 'builder' gem 'erubi' diff --git a/README.de.md b/README.de.md index 83461102..fa33f0d4 100644 --- a/README.de.md +++ b/README.de.md @@ -69,7 +69,6 @@ diesen Server verwenden. - [Creole Templates](#creole-templates) - [MediaWiki Templates](#mediawiki-templates) - [CoffeeScript Templates](#coffeescript-templates) - - [Stylus Templates](#stylus-templates) - [Yajl Templates](#yajl-templates) - [WLang Templates](#wlang-templates) + [Auf Variablen in Templates zugreifen](#auf-variablen-in-templates-zugreifen) @@ -1052,43 +1051,6 @@ Layout, indem die `:layout_engine`-Option verwendet wird. -#### Stylus Templates - - - - - - - - - - - - - - -
Abhängigkeit - - Stylus - und eine Möglichkeit - - JavaScript auszuführen - . -
Dateierweiterung.styl
Beispielstylus :index
- -Um Stylus-Templates ausführen zu können, müssen `stylus` und `stylus/tilt` -zuerst geladen werden: - -```ruby -require 'sinatra' -require 'stylus' -require 'stylus/tilt' - -get '/' do - stylus :example -end -``` - #### Yajl Templates diff --git a/README.es.md b/README.es.md index d0a59319..d2dc246f 100644 --- a/README.es.md +++ b/README.es.md @@ -67,7 +67,6 @@ Se recomienda ejecutar `gem install puma`, porque Sinatra lo utilizará si está * [Plantillas Creole](#plantillas-creole) * [Plantillas MediaWiki](#mediawiki-templates) * [Plantillas CofeeScript](#plantillas-coffeescript) - * [Plantillas Stylus](#plantillas-stylus) * [Plantillas Yajl](#plantillas-yajl) * [Plantillas Wlang](#plantillas-wlang) * [Accediendo Variables en Plantillas](#accediendo-a-variables-en-plantillas) @@ -549,7 +548,7 @@ Opciones disponibles: del motor usado para renderizar la plantilla. Ejemplo: set :rdoc, :layout_engine => :erb - +
layout_options
Opciones especiales usadas únicamente para renderizar el layout. Ejemplo: @@ -578,7 +577,7 @@ get '/' do end ``` -Renderiza el string de la plantilla. Opcionalmente puedes especificar +Renderiza el string de la plantilla. Opcionalmente puedes especificar `:path` y `:line` para un backtrace más claro si hay una ruta del sistema de archivos o una línea asociada con ese string @@ -1048,42 +1047,6 @@ De todas maneras, es posible usar otro motor de renderizado para esa plantilla p
-#### Plantillas Stylus - - - - - - - - - - - - - - -
Dependencias - - Stylus - y un - - mecanismo para ejecutar javascript - -
Extensiones de Archivo.styl
Ejemplostylus :index
- -Antes de poder usar las plantillas de Stylus, necesitas cargar `stylus` y `stylus/tilt`: - -```ruby -require 'sinatra' -require 'stylus' -require 'stylus/tilt' - -get '/' do - stylus :example -end -``` - #### Plantillas Yajl @@ -1419,7 +1382,7 @@ end #### Secreto de Sesión Para mejorar la seguridad, los datos de la sesión en la cookie se firman con un secreto usando `HMAC-SHA1`. El secreto de esta sesión debería ser de manera óptima -un valor aleatorio criptográficamente seguro de una longitud adecuada para +un valor aleatorio criptográficamente seguro de una longitud adecuada para `HMAC-SHA1` que es mayor o igual que 64 bytes (512 bits, 128 hex caracteres). Se le aconsejará que no use un secreto que sea inferior a 32 bytes de aleatoriedad (256 bits, 64 caracteres hexadecimales). @@ -1428,11 +1391,11 @@ sino que use un generador de números aleatorios para crearlo. Los humanos somos extremadamente malos generando valores aleatorios De forma predeterminada, un secreto de sesión aleatorio seguro de 32 bytes se genera para usted por -Sinatra, pero cambiará con cada reinicio de su aplicación. Si tienes varias +Sinatra, pero cambiará con cada reinicio de su aplicación. Si tienes varias instancias de tu aplicación y dejas que Sinatra genere la clave, cada instancia tendría una clave de sesión diferente y probablemente no es lo que quieres. -Para una mejor seguridad y usabilidad es +Para una mejor seguridad y usabilidad es [recomendado](https://12factor.net/config) que genere un secreto de sesión aleatorio seguro y se guarde en las variables de entorno en cada host que ejecuta su aplicación para que todas las instancias de su aplicación compartan el mismo @@ -1869,7 +1832,7 @@ get '/bar' do end ``` -### Control del Cache +### Control del Cache Asignar tus encabezados correctamente es el cimiento para realizar un cacheo HTTP correcto. @@ -1985,7 +1948,7 @@ Estas opciones son:
filename
Nombre del archivo devuelto, por defecto es el nombre real del archivo.
- +
last_modified
Valor para el encabezado Last-Modified, por defecto toma el mtime del archivo.
@@ -2333,13 +2296,13 @@ set :protection, :except => [:path_traversal, :session_hijacking] formularios put/delete en navegadores que no los soportan. - +
mustermann_opts
Un hash predeterminado de opciones para pasar a Mustermann.new al compilar las rutas.
- +
port
Puerto en el que escuchará el servidor integrado. @@ -2357,7 +2320,7 @@ set :protection, :except => [:path_traversal, :session_hijacking]
protection
- Define si se habilitan o no las protecciones de ataques web. + Define si se habilitan o no las protecciones de ataques web. Ver la sección de protección encima.
@@ -2369,7 +2332,7 @@ set :protection, :except => [:path_traversal, :session_hijacking] está presente, se infiere del valor de la opción app_file. - +
quiet
Inhabilita los logs generados por los comandos de inicio y detención de Sinatra. @@ -2416,7 +2379,7 @@ set :protection, :except => [:path_traversal, :session_hijacking] integrado. El orden indica su prioridad, por defecto depende de la implementación de Ruby.
- +
server_settings
Si está utilizando un servidor web WEBrick, presumiblemente para su entorno de desarrollo, puede pasar un hash de opciones a server_settings , como SSLEnable o SSLVerifyClient . Sin embargo, los servidores web como Puma no son compatibles, por lo que puede establecer server_settings definiéndolo como un método cuando llame a configure . @@ -2428,7 +2391,7 @@ set :protection, :except => [:path_traversal, :session_hijacking] través de Rack::Session::Cookie. Ver la sección 'Usando Sesiones' para más información.
- +
session_store
Define el middleware de sesión Rack utilizado. Predeterminado a @@ -2468,7 +2431,7 @@ información. utilizar un array cuando se asignan múltiples valores: set :static_cache_control, [:public, :max_age => 300].
- +
threaded
Si se establece en true , le dirá al servidor que use @@ -3120,7 +3083,7 @@ Las siguientes versiones de Ruby son soportadas oficialmente:
Rubinius
- Rubinius es oficialmente compatible (Rubinius> = 2.x). Se recomienda instalar la gema puma + Rubinius es oficialmente compatible (Rubinius> = 2.x). Se recomienda instalar la gema puma gem install puma.
@@ -3132,7 +3095,7 @@ Las siguientes versiones de Ruby son soportadas oficialmente:
-Las versiones de Ruby anteriores a 2.2.2 ya no son compatibles con Sinatra 2.0 . +Las versiones de Ruby anteriores a 2.2.2 ya no son compatibles con Sinatra 2.0 . Siempre le prestamos atención a las nuevas versiones de Ruby. diff --git a/README.fr.md b/README.fr.md index 68c0e0aa..48db6575 100644 --- a/README.fr.md +++ b/README.fr.md @@ -67,7 +67,6 @@ Sinatra utilise le server Thin quand il est disponible. * [Templates Creole](#templates-creole) * [Templates MediaWiki](#templates-mediawiki) * [Templates CoffeeScript](#templates-coffeescript) - * [Templates Stylus](#templates-stylus) * [Templates Yajl](#templates-yajl) * [Templates WLang](#templates-wlang) * [Accéder aux variables dans un Template](#accéder-aux-variables-dans-un-template) @@ -1059,44 +1058,6 @@ pour le layout en utilisant l’option `:layout_engine`.
-#### Templates Stylus - - - - - - - - - - - - - - -
Dépendances - - Stylus - - et un - - moyen d'exécuter javascript - -
Extensions de fichier.styl
Exemplestylus :index
- -Avant de pouvoir utiliser des templates Stylus, vous devez auparavant charger -`stylus` et `stylus/tilt` : - -```ruby -require 'sinatra' -require 'stylus' -require 'stylus/tilt' - -get '/' do - stylus :exemple -end -``` - #### Templates Yajl diff --git a/README.ja.md b/README.ja.md index 33902102..7c6d88e4 100644 --- a/README.ja.md +++ b/README.ja.md @@ -64,7 +64,6 @@ PumaがあればSinatraはこれを利用するので、`gem install puma`する * [Creole テンプレート](#creole-テンプレート) * [MediaWiki テンプレート](#mediawiki-テンプレート) * [CoffeeScript テンプレート](#coffeescript-テンプレート) - * [Stylus テンプレート](#stylus-テンプレート) * [Yajl テンプレート](#yajl-テンプレート) * [WLang テンプレート](#wlang-テンプレート) * [テンプレート内での変数へのアクセス](#テンプレート内での変数へのアクセス) @@ -958,42 +957,6 @@ erb :overview, :locals => { :text => mediawiki(:introduction) }
-#### Stylus テンプレート - - - - - - - - - - - - - - -
依存 - - Stylus - および - - JavaScriptの起動方法 - -
ファイル拡張子.styl
stylus :index
- -Stylusテンプレートを使えるようにする前に、まず`stylus`と`stylus/tilt`を読み込む必要があります。 - -```ruby -require 'sinatra' -require 'stylus' -require 'stylus/tilt' - -get '/' do - stylus :example -end -``` - #### Yajl テンプレート diff --git a/README.ko.md b/README.ko.md index 4ed63536..7e324029 100644 --- a/README.ko.md +++ b/README.ko.md @@ -62,7 +62,6 @@ thin이 설치되어 있을 경우 Sinatra는 thin을 통해 실행합니다. * [Creole 템플릿](#creole-템플릿) * [MediaWiki 템플릿](#mediawiki-템플릿) * [CoffeeScript 템플릿](#coffeescript-템플릿) - * [Stylus 템플릿](#stylus-템플릿) * [Yajl 템플릿](#yajl-템플릿) * [WLang 템플릿](#wlang-템플릿) * [템플릿에서 변수에 접근하기](#템플릿에서-변수에-접근하기) @@ -967,43 +966,6 @@ MediaWiki에서 루비를 호출할 수 없기 때문에, MediaWiki으로 작성
-#### Stylus 템플릿 - - - - - - - - - - - - - - -
의존성 - - Stylus - 와 - - 자바스크립트 실행법 - -
파일 확장자.styl
예제stylus :index
- -Stylus 템플릿을 사용가능하게 하려면, 먼저 `stylus`와 `stylus/tilt`를 로드 -해야합니다. - -```ruby -require 'sinatra' -require 'stylus' -require 'stylus/tilt' - -get '/' do - stylus :example -end -``` - #### Yajl 템플릿 diff --git a/README.malayalam.md b/README.malayalam.md index 422be089..0364a33c 100644 --- a/README.malayalam.md +++ b/README.malayalam.md @@ -66,7 +66,6 @@ View at: [http://localhost:4567](http://localhost:4567) * [Creole ടെംപ്ലേറ്റ്സ്](#creole-templates) * [MediaWiki ടെംപ്ലേറ്റ്സ്](#mediawiki-templates) * [CoffeeScript ടെംപ്ലേറ്റ്സ്](#coffeescript-templates) - * [Stylus ടെംപ്ലേറ്റ്സ്](#stylus-templates) * [Yajl ടെംപ്ലേറ്റ്സ്](#yajl-templates) * [WLang ടെംപ്ലേറ്റ്സ്](#wlang-templates) * [വാരിയബിൾസിനെ എടുക്കാൻ സഹായിക്കുന്ന ടെംപ്ലേറ്റ്സ്](#accessing-variables-in-templates) @@ -193,7 +192,7 @@ get '/hello/:name' do |n| "Hello #{n}!" end ``` -റൂട്ട് പാട്ടേഴ്സിൽ പേരുള്ള splat ഉണ്ടാകാറുണ്ട് അതിനെ 'params['splat']' array ഉപയോഗിച്ച ഉപയോഗപ്പെടുത്താവുന്നത് ആണ് +റൂട്ട് പാട്ടേഴ്സിൽ പേരുള്ള splat ഉണ്ടാകാറുണ്ട് അതിനെ 'params['splat']' array ഉപയോഗിച്ച ഉപയോഗപ്പെടുത്താവുന്നത് ആണ് @@ -293,7 +292,7 @@ get '/', :provides => ['rss', 'atom', 'xml'] do builder :feed end ``` -`provides ` ആക്‌സെപ്റ് ഹെൽഡർസ് നെ അന്വഷിക്കുന്നു +`provides ` ആക്‌സെപ്റ് ഹെൽഡർസ് നെ അന്വഷിക്കുന്നു നിങ്ങളുടെ കണ്ടിഷൻസ് ഇനി എളുപ്പത്തിൽ ഉണ്ടാക്കാൻ സഹായിക്കുന്നു ```ruby @@ -1015,43 +1014,6 @@ template than for the layout by passing the `:layout_engine` option.
-#### Stylus Templates - - - - - - - - - - - - - - -
Dependency - - Stylus - and a - - way to execute javascript - -
File Extension.styl
Examplestylus :index
- -Before being able to use Stylus templates, you need to load `stylus` and -`stylus/tilt` first: - -```ruby -require 'sinatra' -require 'stylus' -require 'stylus/tilt' - -get '/' do - stylus :example -end -``` - #### Yajl Templates diff --git a/README.md b/README.md index b575ecf4..b47a7833 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,6 @@ pick up if available. * [Creole Templates](#creole-templates) * [MediaWiki Templates](#mediawiki-templates) * [CoffeeScript Templates](#coffeescript-templates) - * [Stylus Templates](#stylus-templates) * [Yajl Templates](#yajl-templates) * [WLang Templates](#wlang-templates) * [Accessing Variables in Templates](#accessing-variables-in-templates) @@ -1044,43 +1043,6 @@ template than for the layout by passing the `:layout_engine` option.
-#### Stylus Templates - - - - - - - - - - - - - - -
Dependency - - Stylus - and a - - way to execute javascript - -
File Extension.styl
Examplestylus :index
- -Before being able to use Stylus templates, you need to load `stylus` and -`stylus/tilt` first: - -```ruby -require 'sinatra' -require 'stylus' -require 'stylus/tilt' - -get '/' do - stylus :example -end -``` - #### Yajl Templates diff --git a/README.pt-br.md b/README.pt-br.md index 52dfbec1..12dc707f 100644 --- a/README.pt-br.md +++ b/README.pt-br.md @@ -76,7 +76,6 @@ disponível, o Sinatra irá utilizá-la. * [Creole Templates](#creole-templates) * [MediaWiki Templates](#mediawiki-templates) * [CoffeeScript Templates](#coffeescript-templates) - * [Stylus Templates](#stylus-templates) * [Yajl Templates](#yajl-templates) * [WLang Templates](#wlang-templates) * [Acessando Variáveis nos Templates](#acessando-variáveis-nos-templates) @@ -1084,43 +1083,6 @@ deve-se passar a `:layout_engine` como opção.
-#### Stylus Templates - - - - - - - - - - - - - - -
Dependência - - Stylus - and a - - way to execute javascript - -
Extensão do Arquivo.styl
Exemplostylus :index
- -Antes que você possa utilizar o template Stylus primeiro você deve carregar -`stylus` e `stylus/tilt`: - -```ruby -require 'sinatra' -require 'stylus' -require 'stylus/tilt' - -get '/' do - stylus :exemplo -end -``` - #### Yajl Templates diff --git a/README.ru.md b/README.ru.md index 2aa8aa4f..82f34cc8 100644 --- a/README.ru.md +++ b/README.ru.md @@ -70,7 +70,6 @@ ruby myapp.rb * [Creole шаблоны](#creole-шаблоны) * [MediaWiki шаблоны](#mediawiki-шаблоны) * [CoffeeScript шаблоны](#coffeescript-шаблоны) - * [Stylus шаблоны](#stylus-шаблоны) * [Yajl шаблоны](#yajl-шаблоны) * [WLang шаблоны](#wlang-шаблоны) * [Доступ к переменным в шаблонах](#Доступ-к-переменным-в-шаблонах) @@ -261,7 +260,7 @@ end ``` **Имеейте ввиду**: если вы не отключите защиту от обратного пути в директориях -(_path traversal_, см. ниже), путь запроса может быть изменён до начала +(_path traversal_, см. ниже), путь запроса может быть изменён до начала поиска подходящего маршрута. Вы можете настроить Mustermann опции, используемые для данного маршрута, путём передачи в `:mustermann_opts` хэш: @@ -1051,43 +1050,6 @@ erb :overview, :locals => { :text => mediawiki(:introduction) }
-#### Stylus шаблоны - - - - - - - - - - - - - - -
Зависимости - - Stylus - и - - способ запускать JavaScript - -
Расширение файла.styl
Примерstylus :index
- -Перед тем, как использовать шаблоны Stylus, необходимо сперва подключить -`stylus` и `stylus/tilt`: - -```ruby -require 'sinatra' -require 'stylus' -require 'stylus/tilt' - -get '/' do - stylus :example -end -``` - #### Yajl шаблоны @@ -1296,7 +1258,7 @@ end ### Использование пользовательской логики для поиска шаблона -Для того, чтобы реализовать собственный механизм поиска шаблона, +Для того, чтобы реализовать собственный механизм поиска шаблона, необходимо написать метод `#find_template`: ```ruby @@ -1371,7 +1333,7 @@ end ## Методы-помощники -Используйте высокоуровневый метод `helpers` для того, чтобы определить +Используйте высокоуровневый метод `helpers` для того, чтобы определить методы-помощники, которые могут быть использованы в обработчиках маршрутов и шаблонах: @@ -1424,27 +1386,27 @@ end Для того, чтобы повысить безопасность, данные сессии в файле 'cookie' подписываются ключом сессии с использованием `HMAC-SHA1`. Этот ключ сессии -должен быть оптимальным криптографическим 'secure random' значением соответствующей -длины, которая для `HMAC-SHA1` больше или равна 64 байтам (512 бит, 128 +должен быть оптимальным криптографическим 'secure random' значением соответствующей +длины, которая для `HMAC-SHA1` больше или равна 64 байтам (512 бит, 128 шестнадцатеричных символов). Не рекомендуется использовать ключ, длина -которого менее 32 байт (256 бит, 64 шестнадцатеричных символа). Поэтому -**очень важно**, чтобы вы не просто составили значение ключа, а использовали +которого менее 32 байт (256 бит, 64 шестнадцатеричных символа). Поэтому +**очень важно**, чтобы вы не просто составили значение ключа, а использовали безопасный генератор случайных чисел для его создания. Люди очень плохо придумывают случайные значения. По умолчанию, Sinatra создаёт для вас безопасный случайный ключ сессии из 32 байт, однако он будет меняться при каждом перезапуске приложения. Если у -вас есть несколько экземпляров вашего приложения, и вы доверили Sinatra -генерацию ключа, то каждый экземпляр будет иметь отличный ключ сессии, +вас есть несколько экземпляров вашего приложения, и вы доверили Sinatra +генерацию ключа, то каждый экземпляр будет иметь отличный ключ сессии, что, вероятно, не совсем то, что вам необходимо. - + Для лучшей безопасности и удобства использования -[рекомендуется](https://12factor.net/config) генерировать случайный безопасный -ключ и хранить его в переменной среды на каждом хосте, на котором запущено -приложение, чтобы все экземпляры вашего приложения использовали один и тот -же ключ. Вы должны периодически менять значение ключа сессии на новое. +[рекомендуется](https://12factor.net/config) генерировать случайный безопасный +ключ и хранить его в переменной среды на каждом хосте, на котором запущено +приложение, чтобы все экземпляры вашего приложения использовали один и тот +же ключ. Вы должны периодически менять значение ключа сессии на новое. Вот несколько примеров того, как вы можете создать 64-байтный ключ -и установить его: +и установить его: **Генерация ключа сессии** @@ -1456,13 +1418,13 @@ $ ruby -e "require 'securerandom'; puts SecureRandom.hex(64)" **Генерация ключа сессии (бонусные пункты)** Используйте [гем 'sysrandom'](https://github.com/cryptosphere/sysrandom#readme). -Предпочтительнее использовать системные средства RNG для генерации случайных +Предпочтительнее использовать системные средства RNG для генерации случайных значений вместо пространства пользователя `OpenSSL`, который в настоящее время по умолчанию используется в MRI Ruby: ```text $ gem install sysrandom -Создание собственных расширений. Это может занять некоторое время... +Создание собственных расширений. Это может занять некоторое время... Успешно установлен sysrandom-1.x 1 gem установлен @@ -1472,10 +1434,10 @@ $ ruby -e "require 'sysrandom/securerandom'; puts SecureRandom.hex(64)" **Переменная среды для ключа сессии** -Задайте переменной среды `SESSION_SECRET` значение, которое вы +Задайте переменной среды `SESSION_SECRET` значение, которое вы сгенерировали. Данная переменная автоматически будет использована Sinatra. -Сделайте это значение постоянным при перезагрузке вашего -сервера. Поскольку метод для генерации будет различным в разных системах, +Сделайте это значение постоянным при перезагрузке вашего +сервера. Поскольку метод для генерации будет различным в разных системах, то код ниже приведён только в качестве примера: ```bash @@ -1488,7 +1450,7 @@ $ ruby -e "require 'sysrandom/securerandom'; puts SecureRandom.hex(64)" чтобы оно генерировало случайный безопасный ключ тогда, когда переменная среды `SESSION_SECRET` не доступна. -В качестве бонусных пунктов здесь тоже используйте +В качестве бонусных пунктов здесь тоже используйте [гем 'sysrandom'gem](https://github.com/cryptosphere/sysrandom): ```ruby @@ -1534,10 +1496,10 @@ set :session_store, Rack::Session::Pool ``` Вы также можете **не вызывать** `enable :sessions`, а вместо этого использовать -необходимую вам Rack прослойку так же, как вы это обычно делаете. +необходимую вам Rack прослойку так же, как вы это обычно делаете. -Очень важно обратить внимание на то, что когда вы используете этот метод, -основной способ защиты сессии **не будет включён по умолчанию**. +Очень важно обратить внимание на то, что когда вы используете этот метод, +основной способ защиты сессии **не будет включён по умолчанию**. Вам также потребуется добавить следующие Rack middleware для этого: @@ -1628,7 +1590,7 @@ end повысить производительность, перенеся `"bar"` в метод-помощник, используемый и в `/foo`, и в `/bar`. -Если вы хотите, чтобы запрос был отправлен в тот же экземпляр приложения, +Если вы хотите, чтобы запрос был отправлен в тот же экземпляр приложения, а не в его копию, используйте `call!` вместо `call`. Если хотите узнать больше о `call`, смотрите спецификацию Rack. @@ -1737,7 +1699,7 @@ post '/:message' do end ``` -Также клиент может закрыть соединение при попытке записи в сокет. В связи с +Также клиент может закрыть соединение при попытке записи в сокет. В связи с этим рекомендуется выполнить проверку `out.closed?` прежде, чем пытаться произвести запись. ### Логирование @@ -1996,8 +1958,8 @@ send_file 'foo.png', :type => :jpg
status
Код ответа. Полезно в том случае, когда отсылается статический файл в качестве - страницы с сообщением об ошибке. Если поддерживается обработчик Rack, будут использоваться - другие средства, кроме потоковой передачи из процесса Ruby. Если вы используете + страницы с сообщением об ошибке. Если поддерживается обработчик Rack, будут использоваться + другие средства, кроме потоковой передачи из процесса Ruby. Если вы используете этот вспомогательный метод, Sinatra автоматически обрабатывает запросы диапазона.
@@ -2164,8 +2126,8 @@ end файл на самом деле, а вызывает заданный блок для всех возможных путей. Дело тут не в производительности, а в том, что `render` вызовет `break` как только файл будет найден. Содержимое и местонахождение шаблонов будет закэшировано в том случае, -если приложение запущено не в режиме разработки (`set :environment, :development`). -Вы должны помнить об этих нюансах, если пишите по-настоящему "сумасшедший" +если приложение запущено не в режиме разработки (`set :environment, :development`). +Вы должны помнить об этих нюансах, если пишите по-настоящему "сумасшедший" метод. ## Конфигурация @@ -2247,7 +2209,7 @@ set :protection, :except => :path_traversal set :protection, :except => [:path_traversal, :session_hijacking] ``` -По умолчанию Sinatra будет устанавливать `session based` защиту только если +По умолчанию Sinatra будет устанавливать `session based` защиту только если включена опция `:sessions`. См. ["Использование сессий""](#Использование-сессий). Иногда вы захотите настроить сессии "вне" приложения Sinatra, например, в config.ru или при помощи отдельного экземпляра `Rack::Builder`. В таком случае @@ -2291,7 +2253,7 @@ set :protection, :session => true
bind
используемый IP-адрес (по умолчанию: 0.0.0.0 или - localhost если опция `environment` настроена на "development"). + localhost если опция `environment` настроена на "development"). Используется только встроенным сервером.
@@ -2328,13 +2290,13 @@ set :protection, :session => true
mustermann_opts
- хэш настроек по умолчанию для перехода к Mustermann.new при компиляции + хэш настроек по умолчанию для перехода к Mustermann.new при компиляции маршрутов маршрутизации.
port
- порт, на котором будет работать сервер. + порт, на котором будет работать сервер. Используется только встроенным сервером.
@@ -2361,7 +2323,7 @@ set :protection, :session => true
quiet
- отключает журналы, созданные командами запуска и остановки Sinatra. + отключает журналы, созданные командами запуска и остановки Sinatra. false по умолчанию.
@@ -2395,7 +2357,7 @@ set :protection, :session => true
server
сервер или список серверов, которые следует использовать в качестве - встроенного сервера. Порядок задаёт приоритет, по умолчанию зависит + встроенного сервера. Порядок задаёт приоритет, по умолчанию зависит от реализации Ruby.
@@ -2417,7 +2379,7 @@ set :protection, :session => true
session_store
- используемая Rack "прослойка" для сессии. По умолчанию Rack::Session::Cookie. + используемая Rack "прослойка" для сессии. По умолчанию Rack::Session::Cookie. Смотрите раздел "Использование сессий" выше.
@@ -2427,7 +2389,7 @@ set :protection, :session => true включено только в окружении "development".
- может также быть установлено в :after_handler для запуска специфичной + может также быть установлено в :after_handler для запуска специфичной для приложения обработки ошибок, перед показом трассировки стека в браузере.
@@ -2479,7 +2441,7 @@ set :protection, :session => true `not_found` и `error`, чтобы вы могли увидеть стек вызовов. В окружениях `"production"` и `"test"` шаблоны по умолчанию кэшируются. -Для запуска приложения в определённом окружении установите переменную +Для запуска приложения в определённом окружении установите переменную окружения `APP_ENV`: ```shell @@ -2520,7 +2482,7 @@ end Обработчик ошибок `error` будет вызван тогда, когда исключение выброшено из блока маршрута либо из фильтра. Тем не менее, обратите внимание на то, что в режиме разработки -он будет запускаться только в том случае, если вы установите опцию "show exceptions" +он будет запускаться только в том случае, если вы установите опцию "show exceptions" на `: after_handler`: ```ruby @@ -2578,8 +2540,8 @@ end ``` Sinatra устанавливает специальные обработчики `not_found` и `error`, когда -приложение запущено в режиме разработки (окружение `:development`) чтобы -отображать информативные трассировки стека и дополнительную информацию об отладке +приложение запущено в режиме разработки (окружение `:development`) чтобы +отображать информативные трассировки стека и дополнительную информацию об отладке в вашем браузере. ## Rack "прослойки" @@ -2662,17 +2624,17 @@ class MyAppTest < Minitest::Test end ``` -Примечание: если вы используете Sinatra в модульном стиле, замените +Примечание: если вы используете Sinatra в модульном стиле, замените `Sinatra::Application` в примере выше на имя класса вашего приложения. ## Sinatra::Base — "прослойки", библиотеки и модульные приложения -Описание вашего приложения на верхнем уровне хорошо работает для микроприложений, -но имеет значительные недостатки при создании многоразовых компонентов, таких как -Rack "прослойка", Rails metal, простые библиотеки с серверным компонентом или -даже расширения Sinatra. Верхний уровень предполагает конфигурацию стиля -микроприложений (например, одиночный файл приложения, `./public` и `./views`, -каталоги, логирование, страницу подробных сведений об исключениях и т.д.). +Описание вашего приложения на верхнем уровне хорошо работает для микроприложений, +но имеет значительные недостатки при создании многоразовых компонентов, таких как +Rack "прослойка", Rails metal, простые библиотеки с серверным компонентом или +даже расширения Sinatra. Верхний уровень предполагает конфигурацию стиля +микроприложений (например, одиночный файл приложения, `./public` и `./views`, +каталоги, логирование, страницу подробных сведений об исключениях и т.д.). И тут на помощь приходит `Sinatra::Base`: ```ruby @@ -2699,11 +2661,11 @@ end `Sinatra::Base`. `Sinatra::Base` — это чистый лист. Большинство опций, включая встроенный -сервер, по умолчанию отключены. Смотрите -[Опции и конфигурация](http://www.sinatrarb.com/configuration.html) -для детальной информации об опциях и их поведении. Если вы хотите, чтобы -поведение было более похоже на то, когда вы определяете своё приложение -на верхнем уровне (также известно как классический стиль), вы можете +сервер, по умолчанию отключены. Смотрите +[Опции и конфигурация](http://www.sinatrarb.com/configuration.html) +для детальной информации об опциях и их поведении. Если вы хотите, чтобы +поведение было более похоже на то, когда вы определяете своё приложение +на верхнем уровне (также известно как классический стиль), вы можете унаследоваться от `Sinatra::Application`: ```ruby @@ -3091,7 +3053,7 @@ thin --threaded start
Ruby 2.3
- Версия 2.3 полностью поддерживается и рекомендуется. В настоящее время нет + Версия 2.3 полностью поддерживается и рекомендуется. В настоящее время нет планов отказаться от официальной поддержки.
@@ -3103,7 +3065,7 @@ thin --threaded start
JRuby
- Официально поддерживается последний стабильный релиз JRuby. Не + Официально поддерживается последний стабильный релиз JRuby. Не рекомендуется использовать расширений на C в JRuby. Рекомендуется выполнить gem install trinidad.
@@ -3125,8 +3087,8 @@ thin --threaded start работает на этой версии, а на поддерживаемой работает — это не наша проблема, а их. -Мы также запускаем наши CI-тесты на ruby-head (будущие версии MRI), но мы не -можем ничего гарантировать, так как ведётся постоянная разработка. +Мы также запускаем наши CI-тесты на ruby-head (будущие версии MRI), но мы не +можем ничего гарантировать, так как ведётся постоянная разработка. Предполагается, что предстоящие релизы 2.x будут полностью поддерживаться. Sinatra должна работать на любой операционной системе, в которой есть одна из diff --git a/README.zh.md b/README.zh.md index 483ab256..8dcc7214 100644 --- a/README.zh.md +++ b/README.zh.md @@ -61,7 +61,6 @@ ruby myapp.rb * [Creole 模板](#creole-模板) * [MediaWiki 模板](#mediawiki-模板) * [CoffeeScript 模板](#coffeescript-模板) - * [Stylus 模板](#stylus-模板) * [Yajl 模板](#yajl-模板) * [WLang 模板](#wlang-模板) * [在模板中访问变量](#在模板中访问变量) @@ -221,7 +220,7 @@ end 路由范式可以包含可选参数: -```ruby +```ruby get '/posts/:format?' do # 匹配 "GET /posts/" 和任意扩展 "GET /posts/json"、"GET /posts/xml" 等 end @@ -966,42 +965,6 @@ erb :overview, :locals => { :text => mediawiki(:introduction) }
-#### Stylus 模板 - - - - - - - - - - - - - - -
依赖项 - - Stylus - 以及一种 - - 执行 JavaScript 的方式 - -
文件扩展名.styl
例子stylus :index
- -在使用 Stylus 模板之前,你需要先加载 `stylus` 和 `stylus/tilt`: - -```ruby -require 'sinatra' -require 'stylus' -require 'stylus/tilt' - -get '/' do - stylus :example -end -``` - #### Yajl 模板 @@ -2823,7 +2786,7 @@ thin --threaded start 以下 Ruby 实现不受 Sinatra 官方支持,但可以运行 Sinatra: * 老版本 JRuby 和 Rubinius -* Ruby 企业版 +* Ruby 企业版 * MacRuby、Maglev、IronRuby * Ruby 1.9.0 和 1.9.1 (不推荐使用) diff --git a/lib/sinatra/base.rb b/lib/sinatra/base.rb index 6ced0a6d..fd3ab4bc 100644 --- a/lib/sinatra/base.rb +++ b/lib/sinatra/base.rb @@ -729,11 +729,6 @@ module Sinatra render :less, template, options, locals end - def stylus(template, options = {}, locals = {}) - options.merge! :layout => false, :default_content_type => :css - render :styl, template, options, locals - end - def builder(template = nil, options = {}, locals = {}, &block) options[:default_content_type] = :xml render_ruby(:builder, template, options, locals, &block) diff --git a/sinatra-contrib/lib/sinatra/namespace.rb b/sinatra-contrib/lib/sinatra/namespace.rb index 1b0c58ab..fe07a649 100644 --- a/sinatra-contrib/lib/sinatra/namespace.rb +++ b/sinatra-contrib/lib/sinatra/namespace.rb @@ -227,7 +227,7 @@ module Sinatra ALLOWED_ENGINES = [ :erb, :erubi, :erubis, :haml, :hamlit, :builder, :nokogiri, :sass, :scss, :less, :liquid, :markdown, :textile, :rdoc, :asciidoc, :radius, :markaby, - :rabl, :slim, :creole, :mediawiki, :coffee, :stylus, :yajl, :wlang + :rabl, :slim, :creole, :mediawiki, :coffee, :yajl, :wlang ] def self.prefixed(*names) diff --git a/test/stylus_test.rb b/test/stylus_test.rb deleted file mode 100644 index bd3f49de..00000000 --- a/test/stylus_test.rb +++ /dev/null @@ -1,90 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -begin - require 'stylus' - require 'stylus/tilt' - - begin - Stylus.compile '1' - rescue RuntimeError - raise LoadError, 'unable to find Stylus compiler' - end - - class StylusTest < Minitest::Test - def stylus_app(options = {}, &block) - mock_app do - set :views, __dir__ + '/views' - set(options) - get('/', &block) - end - get '/' - end - - it 'renders inline Stylus strings' do - stylus_app { stylus "a\n margin auto\n" } - assert ok? - assert body.include?("a {\n margin: auto;\n}\n") - end - - it 'defaults content type to css' do - stylus_app { stylus :hello } - assert ok? - assert_equal "text/css;charset=utf-8", response['Content-Type'] - end - - it 'defaults allows setting content type per route' do - stylus_app do - content_type :html - stylus :hello - end - assert ok? - assert_equal "text/html;charset=utf-8", response['Content-Type'] - end - - it 'defaults allows setting content type globally' do - stylus_app(:styl => { :content_type => 'html' }) do - stylus :hello - end - assert ok? - assert_equal "text/html;charset=utf-8", response['Content-Type'] - end - - it 'renders .styl files in views path' do - stylus_app { stylus :hello } - assert ok? - assert_include body, "a {\n margin: auto;\n}\n" - end - - it 'ignores the layout option' do - stylus_app { stylus :hello, :layout => :layout2 } - assert ok? - assert_include body, "a {\n margin: auto;\n}\n" - end - - it "raises error if template not found" do - mock_app { - get('/') { stylus :no_such_template } - } - assert_raises(Errno::ENOENT) { get('/') } - end - - it "passes stylus options to the stylus engine" do - stylus_app { stylus :hello, :no_wrap => true } - assert ok? - assert_body "a {\n margin: auto;\n}\n" - end - - it "passes default stylus options to the stylus engine" do - mock_app do - set :stylus, :no_wrap => true # default stylus style is :nested - get('/') { stylus :hello } - end - get '/' - assert ok? - assert_body "a {\n margin: auto;\n}\n" - end - end - -rescue LoadError - warn "#{$!}: skipping stylus tests" -end