Drop support for Stylus (#1697)
This commit is contained in:
parent
44ce685218
commit
9dede30f5d
1
Gemfile
1
Gemfile
|
@ -54,7 +54,6 @@ if RUBY_ENGINE == "ruby"
|
|||
gem 'radius'
|
||||
gem 'asciidoctor'
|
||||
gem 'liquid'
|
||||
gem 'stylus'
|
||||
gem 'rabl'
|
||||
gem 'builder'
|
||||
gem 'erubi'
|
||||
|
|
38
README.de.md
38
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.
|
|||
</tr>
|
||||
</table>
|
||||
|
||||
#### Stylus Templates
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>Abhängigkeit</td>
|
||||
<td>
|
||||
<a href="https://github.com/forgecrafted/ruby-stylus" title="Ruby Stylus">
|
||||
Stylus
|
||||
</a> und eine Möglichkeit
|
||||
<a href="https://github.com/sstephenson/execjs/blob/master/README.md#readme" title="ExecJS">
|
||||
JavaScript auszuführen
|
||||
</a>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Dateierweiterung</td>
|
||||
<td><tt>.styl</tt></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Beispiel</td>
|
||||
<td><tt>stylus :index</tt></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
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
|
||||
|
||||
<table>
|
||||
|
|
69
README.es.md
69
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: <tt>set :rdoc, :layout_engine => :erb</tt>
|
||||
</dd>
|
||||
|
||||
|
||||
<dt>layout_options</dt>
|
||||
<dd>
|
||||
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
|
|||
</tr>
|
||||
</table>
|
||||
|
||||
#### Plantillas Stylus
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>Dependencias</td>
|
||||
<td>
|
||||
<a href="https://github.com/forgecrafted/ruby-stylus" title="Ruby Stylus">
|
||||
Stylus
|
||||
</a> y un
|
||||
<a href="https://github.com/sstephenson/execjs/blob/master/README.md#readme" title="ExecJS">
|
||||
mecanismo para ejecutar javascript
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Extensiones de Archivo</td>
|
||||
<td><tt>.styl</tt></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Ejemplo</td>
|
||||
<td><tt>stylus :index</tt></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
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
|
||||
|
||||
<table>
|
||||
|
@ -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:
|
|||
<dl>
|
||||
<dt>filename</dt>
|
||||
<dd>Nombre del archivo devuelto, por defecto es el nombre real del archivo.</dd>
|
||||
|
||||
|
||||
<dt>last_modified</dt>
|
||||
<dd>Valor para el encabezado Last-Modified, por defecto toma el mtime del archivo.</dd>
|
||||
|
||||
|
@ -2333,13 +2296,13 @@ set :protection, :except => [:path_traversal, :session_hijacking]
|
|||
formularios put/delete en navegadores que no los
|
||||
soportan.
|
||||
</dd>
|
||||
|
||||
|
||||
<dt>mustermann_opts</dt>
|
||||
<dd>
|
||||
Un hash predeterminado de opciones para pasar a Mustermann.new
|
||||
al compilar las rutas.
|
||||
</dd>
|
||||
|
||||
|
||||
<dt>port</dt>
|
||||
<dd>
|
||||
Puerto en el que escuchará el servidor integrado.
|
||||
|
@ -2357,7 +2320,7 @@ set :protection, :except => [:path_traversal, :session_hijacking]
|
|||
|
||||
<dt>protection</dt>
|
||||
<dd>
|
||||
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.
|
||||
</dd>
|
||||
|
||||
|
@ -2369,7 +2332,7 @@ set :protection, :except => [:path_traversal, :session_hijacking]
|
|||
está presente, se infiere del valor de la opción
|
||||
<tt>app_file</tt>.
|
||||
</dd>
|
||||
|
||||
|
||||
<dt>quiet</dt>
|
||||
<dd>
|
||||
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.
|
||||
</dd>
|
||||
|
||||
|
||||
<dt>server_settings</dt>
|
||||
<dd>
|
||||
Si está utilizando un servidor web WEBrick, presumiblemente para su entorno de desarrollo, puede pasar un hash de opciones a <tt> server_settings </tt>, como <tt> SSLEnable </tt> o <tt> SSLVerifyClient </tt>. Sin embargo, los servidores web como Puma no son compatibles, por lo que puede establecer <tt> server_settings </tt> definiéndolo como un método cuando llame a <tt> configure </tt>.
|
||||
|
@ -2428,7 +2391,7 @@ set :protection, :except => [:path_traversal, :session_hijacking]
|
|||
través de <tt>Rack::Session::Cookie</tt>. Ver la
|
||||
sección 'Usando Sesiones' para más información.
|
||||
</dd>
|
||||
|
||||
|
||||
<dt>session_store</dt>
|
||||
<dd>
|
||||
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:
|
||||
<tt>set :static_cache_control, [:public, :max_age => 300]</tt>.
|
||||
</dd>
|
||||
|
||||
|
||||
<dt>threaded</dt>
|
||||
<dd>
|
||||
Si se establece en <tt> true </tt>, le dirá al servidor que use
|
||||
|
@ -3120,7 +3083,7 @@ Las siguientes versiones de Ruby son soportadas oficialmente:
|
|||
|
||||
<dt>Rubinius</dt>
|
||||
<dd>
|
||||
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
|
||||
<tt>gem install puma</tt>.
|
||||
</dd>
|
||||
|
||||
|
@ -3132,7 +3095,7 @@ Las siguientes versiones de Ruby son soportadas oficialmente:
|
|||
</dd>
|
||||
</dl>
|
||||
|
||||
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.
|
||||
|
||||
|
|
39
README.fr.md
39
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`.
|
|||
</tr>
|
||||
</table>
|
||||
|
||||
#### Templates Stylus
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>Dépendances</td>
|
||||
<td>
|
||||
<a href="https://github.com/forgecrafted/ruby-stylus" title="Ruby Stylus">
|
||||
Stylus
|
||||
</a>
|
||||
et un
|
||||
<a href="https://github.com/sstephenson/execjs/blob/master/README.md#readme" title="ExecJS">
|
||||
moyen d'exécuter javascript
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Extensions de fichier</td>
|
||||
<td><tt>.styl</tt></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Exemple</td>
|
||||
<td><tt>stylus :index</tt></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
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
|
||||
|
||||
<table>
|
||||
|
|
37
README.ja.md
37
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) }
|
|||
</tr>
|
||||
</table>
|
||||
|
||||
#### Stylus テンプレート
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>依存</td>
|
||||
<td>
|
||||
<a href="https://github.com/forgecrafted/ruby-stylus" title="Ruby Stylus">
|
||||
Stylus
|
||||
</a> および
|
||||
<a href="https://github.com/sstephenson/execjs/blob/master/README.md#readme" title="ExecJS">
|
||||
JavaScriptの起動方法
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ファイル拡張子</td>
|
||||
<td><tt>.styl</tt></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>例</td>
|
||||
<td><tt>stylus :index</tt></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
Stylusテンプレートを使えるようにする前に、まず`stylus`と`stylus/tilt`を読み込む必要があります。
|
||||
|
||||
```ruby
|
||||
require 'sinatra'
|
||||
require 'stylus'
|
||||
require 'stylus/tilt'
|
||||
|
||||
get '/' do
|
||||
stylus :example
|
||||
end
|
||||
```
|
||||
|
||||
#### Yajl テンプレート
|
||||
|
||||
<table>
|
||||
|
|
38
README.ko.md
38
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으로 작성
|
|||
</tr>
|
||||
</table>
|
||||
|
||||
#### Stylus 템플릿
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>의존성</td>
|
||||
<td>
|
||||
<a href="https://github.com/forgecrafted/ruby-stylus" title="Ruby Stylus">
|
||||
Stylus
|
||||
</a> 와
|
||||
<a href="https://github.com/sstephenson/execjs/blob/master/README.md#readme" title="ExecJS">
|
||||
자바스크립트 실행법
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>파일 확장자</td>
|
||||
<td><tt>.styl</tt></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>예제</td>
|
||||
<td><tt>stylus :index</tt></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
Stylus 템플릿을 사용가능하게 하려면, 먼저 `stylus`와 `stylus/tilt`를 로드
|
||||
해야합니다.
|
||||
|
||||
```ruby
|
||||
require 'sinatra'
|
||||
require 'stylus'
|
||||
require 'stylus/tilt'
|
||||
|
||||
get '/' do
|
||||
stylus :example
|
||||
end
|
||||
```
|
||||
|
||||
#### Yajl 템플릿
|
||||
|
||||
<table>
|
||||
|
|
|
@ -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.
|
|||
</tr>
|
||||
</table>
|
||||
|
||||
#### Stylus Templates
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>Dependency</td>
|
||||
<td>
|
||||
<a href="https://github.com/forgecrafted/ruby-stylus" title="Ruby Stylus">
|
||||
Stylus
|
||||
</a> and a
|
||||
<a href="https://github.com/sstephenson/execjs" title="ExecJS">
|
||||
way to execute javascript
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>File Extension</td>
|
||||
<td><tt>.styl</tt></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Example</td>
|
||||
<td><tt>stylus :index</tt></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
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
|
||||
|
||||
<table>
|
||||
|
|
38
README.md
38
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.
|
|||
</tr>
|
||||
</table>
|
||||
|
||||
#### Stylus Templates
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>Dependency</td>
|
||||
<td>
|
||||
<a href="https://github.com/forgecrafted/ruby-stylus" title="Ruby Stylus">
|
||||
Stylus
|
||||
</a> and a
|
||||
<a href="https://github.com/sstephenson/execjs" title="ExecJS">
|
||||
way to execute javascript
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>File Extension</td>
|
||||
<td><tt>.styl</tt></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Example</td>
|
||||
<td><tt>stylus :index</tt></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
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
|
||||
|
||||
<table>
|
||||
|
|
|
@ -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.
|
|||
</tr>
|
||||
</table>
|
||||
|
||||
#### Stylus Templates
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>Dependência</td>
|
||||
<td>
|
||||
<a href="https://github.com/forgecrafted/ruby-stylus" title="Ruby Stylus">
|
||||
Stylus
|
||||
</a> and a
|
||||
<a href="https://github.com/sstephenson/execjs/blob/master/README.md#readme" title="ExecJS">
|
||||
way to execute javascript
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Extensão do Arquivo</td>
|
||||
<td><tt>.styl</tt></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Exemplo</td>
|
||||
<td><tt>stylus :index</tt></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
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
|
||||
|
||||
<table>
|
||||
|
|
154
README.ru.md
154
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) }
|
|||
</tr>
|
||||
</table>
|
||||
|
||||
#### Stylus шаблоны
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>Зависимости</td>
|
||||
<td>
|
||||
<a href="https://github.com/forgecrafted/ruby-stylus" title="Ruby Stylus">
|
||||
Stylus
|
||||
</a> и
|
||||
<a href="https://github.com/sstephenson/execjs" title="ExecJS">
|
||||
способ запускать JavaScript
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Расширение файла</td>
|
||||
<td><tt>.styl</tt></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Пример</td>
|
||||
<td><tt>stylus :index</tt></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
Перед тем, как использовать шаблоны Stylus, необходимо сперва подключить
|
||||
`stylus` и `stylus/tilt`:
|
||||
|
||||
```ruby
|
||||
require 'sinatra'
|
||||
require 'stylus'
|
||||
require 'stylus/tilt'
|
||||
|
||||
get '/' do
|
||||
stylus :example
|
||||
end
|
||||
```
|
||||
|
||||
#### Yajl шаблоны
|
||||
|
||||
<table>
|
||||
|
@ -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
|
|||
<dt>status</dt>
|
||||
<dd>
|
||||
Код ответа. Полезно в том случае, когда отсылается статический файл в качестве
|
||||
страницы с сообщением об ошибке. Если поддерживается обработчик Rack, будут использоваться
|
||||
другие средства, кроме потоковой передачи из процесса Ruby. Если вы используете
|
||||
страницы с сообщением об ошибке. Если поддерживается обработчик Rack, будут использоваться
|
||||
другие средства, кроме потоковой передачи из процесса Ruby. Если вы используете
|
||||
этот вспомогательный метод, Sinatra автоматически обрабатывает запросы диапазона.
|
||||
</dd>
|
||||
</dl>
|
||||
|
@ -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
|
|||
<dt>bind</dt>
|
||||
<dd>
|
||||
используемый IP-адрес (по умолчанию: <tt>0.0.0.0</tt> <em>или</em>
|
||||
<tt>localhost</tt> если опция `environment` настроена на "development").
|
||||
<tt>localhost</tt> если опция `environment` настроена на "development").
|
||||
Используется только встроенным сервером.
|
||||
</dd>
|
||||
|
||||
|
@ -2328,13 +2290,13 @@ set :protection, :session => true
|
|||
|
||||
<dt>mustermann_opts</dt>
|
||||
<dd>
|
||||
хэш настроек по умолчанию для перехода к Mustermann.new при компиляции
|
||||
хэш настроек по умолчанию для перехода к Mustermann.new при компиляции
|
||||
маршрутов маршрутизации.
|
||||
</dd>
|
||||
|
||||
<dt>port</dt>
|
||||
<dd>
|
||||
порт, на котором будет работать сервер.
|
||||
порт, на котором будет работать сервер.
|
||||
Используется только встроенным сервером.
|
||||
</dd>
|
||||
|
||||
|
@ -2361,7 +2323,7 @@ set :protection, :session => true
|
|||
|
||||
<dt>quiet</dt>
|
||||
<dd>
|
||||
отключает журналы, созданные командами запуска и остановки Sinatra.
|
||||
отключает журналы, созданные командами запуска и остановки Sinatra.
|
||||
<tt>false</tt> по умолчанию.
|
||||
</dd>
|
||||
|
||||
|
@ -2395,7 +2357,7 @@ set :protection, :session => true
|
|||
<dt>server</dt>
|
||||
<dd>
|
||||
сервер или список серверов, которые следует использовать в качестве
|
||||
встроенного сервера. Порядок задаёт приоритет, по умолчанию зависит
|
||||
встроенного сервера. Порядок задаёт приоритет, по умолчанию зависит
|
||||
от реализации Ruby.
|
||||
</dd>
|
||||
|
||||
|
@ -2417,7 +2379,7 @@ set :protection, :session => true
|
|||
|
||||
<dt>session_store</dt>
|
||||
<dd>
|
||||
используемая Rack "прослойка" для сессии. По умолчанию <tt>Rack::Session::Cookie</tt>.
|
||||
используемая Rack "прослойка" для сессии. По умолчанию <tt>Rack::Session::Cookie</tt>.
|
||||
Смотрите раздел "Использование сессий" выше.
|
||||
</dd>
|
||||
|
||||
|
@ -2427,7 +2389,7 @@ set :protection, :session => true
|
|||
включено только в окружении <tt>"development"</tt>.
|
||||
</dd>
|
||||
<dd>
|
||||
может также быть установлено в <tt>:after_handler</tt> для запуска специфичной
|
||||
может также быть установлено в <tt>:after_handler</tt> для запуска специфичной
|
||||
для приложения обработки ошибок, перед показом трассировки стека в браузере.
|
||||
</dd>
|
||||
|
||||
|
@ -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
|
|||
<dl>
|
||||
<dt>Ruby 2.3</dt>
|
||||
<dd>
|
||||
Версия 2.3 полностью поддерживается и рекомендуется. В настоящее время нет
|
||||
Версия 2.3 полностью поддерживается и рекомендуется. В настоящее время нет
|
||||
планов отказаться от официальной поддержки.
|
||||
</dd>
|
||||
|
||||
|
@ -3103,7 +3065,7 @@ thin --threaded start
|
|||
|
||||
<dt>JRuby</dt>
|
||||
<dd>
|
||||
Официально поддерживается последний стабильный релиз JRuby. Не
|
||||
Официально поддерживается последний стабильный релиз JRuby. Не
|
||||
рекомендуется использовать расширений на C в JRuby. Рекомендуется
|
||||
выполнить <tt>gem install trinidad</tt>.
|
||||
</dd>
|
||||
|
@ -3125,8 +3087,8 @@ thin --threaded start
|
|||
работает на этой версии, а на поддерживаемой работает — это не наша проблема,
|
||||
а их.
|
||||
|
||||
Мы также запускаем наши CI-тесты на ruby-head (будущие версии MRI), но мы не
|
||||
можем ничего гарантировать, так как ведётся постоянная разработка.
|
||||
Мы также запускаем наши CI-тесты на ruby-head (будущие версии MRI), но мы не
|
||||
можем ничего гарантировать, так как ведётся постоянная разработка.
|
||||
Предполагается, что предстоящие релизы 2.x будут полностью поддерживаться.
|
||||
|
||||
Sinatra должна работать на любой операционной системе, в которой есть одна из
|
||||
|
|
41
README.zh.md
41
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) }
|
|||
</tr>
|
||||
</table>
|
||||
|
||||
#### Stylus 模板
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>依赖项</td>
|
||||
<td>
|
||||
<a href="https://github.com/forgecrafted/ruby-stylus" title="Ruby Stylus">
|
||||
Stylus
|
||||
</a> 以及一种
|
||||
<a href="https://github.com/sstephenson/execjs/blob/master/README.md#readme" title="ExecJS">
|
||||
执行 JavaScript 的方式
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>文件扩展名</td>
|
||||
<td><tt>.styl</tt></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>例子</td>
|
||||
<td><tt>stylus :index</tt></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
在使用 Stylus 模板之前,你需要先加载 `stylus` 和 `stylus/tilt`:
|
||||
|
||||
```ruby
|
||||
require 'sinatra'
|
||||
require 'stylus'
|
||||
require 'stylus/tilt'
|
||||
|
||||
get '/' do
|
||||
stylus :example
|
||||
end
|
||||
```
|
||||
|
||||
#### Yajl 模板
|
||||
|
||||
<table>
|
||||
|
@ -2823,7 +2786,7 @@ thin --threaded start
|
|||
以下 Ruby 实现不受 Sinatra 官方支持,但可以运行 Sinatra:
|
||||
|
||||
* 老版本 JRuby 和 Rubinius
|
||||
* Ruby 企业版
|
||||
* Ruby 企业版
|
||||
* MacRuby、Maglev、IronRuby
|
||||
* Ruby 1.9.0 和 1.9.1 (不推荐使用)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
Loading…
Reference in New Issue