sinatra 1.1.2 → 1.1.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of sinatra might be problematic. Click here for more details.

data/AUTHORS CHANGED
@@ -36,6 +36,15 @@ Sinatra would not be possible:
36
36
  * Rick Olson (technoweenie) for the killer plug at RailsConf '08.
37
37
  * Steven Garcia for the amazing custom artwork you see on 404's and 500's
38
38
  * Pat Nakajima (nakajima) for fixing non-nested params in nested params Hash's.
39
+ * Konstantin Haase for his hard work and ongoing commitment to improving
40
+ Sinatra, for 1.1.0, 1.2.0 and beyond..
41
+ * Zachary Scott for adding Konstantin to the AUTHORS file. He also did help
42
+ writing the book, but mainly for adding Konstantin.
43
+ * Gabriel Andretta for having people wonder whether our documentation is
44
+ actually in English or in Spanish.
45
+ * Vasily Polovnyov, Nickolay Schwarz, Luciano Sousa, Wu Jiang, Mickael Riga,
46
+ Bernhard Essl, Janos Hardi, Kouhei Yanagita and "burningTyger" for willingly
47
+ translating whatever ends up in the README.
39
48
 
40
49
  and last but not least:
41
50
 
data/CHANGES CHANGED
@@ -1,3 +1,22 @@
1
+ = 1.1.3 / 2011-02-20
2
+
3
+ * Fixed issues with `user_agent` condition if the user agent header is missing.
4
+ (Konstantin Haase)
5
+
6
+ * Fix some routing tests that have been skipped by accident (Ross A. Baker)
7
+
8
+ * Fix rendering issues with Builder and Nokogiri (Konstantin Haase)
9
+
10
+ * Replace last_modified helper with better implementation. (cactus,
11
+ Konstantin Haase)
12
+
13
+ * Fix issue with charset not being set when using `provides` condition.
14
+ (Konstantin Haase)
15
+
16
+ * Fix issue with `render` not picking up all alternative file extensions for
17
+ a rendering engine - it was not possible to register ".html.erb" without
18
+ tricks. (Konstantin Haase)
19
+
1
20
  = 1.1.2 / 2010-10-25
2
21
 
3
22
  Like 1.1.1, but with proper CHANGES file.
@@ -146,7 +146,7 @@ De esa manera podemos, por ejemplo, implementar fácilmente un streaming:
146
146
 
147
147
  get('/') { Stream.new }
148
148
 
149
- == Archivos estáticos
149
+ == Archivos Estáticos
150
150
 
151
151
  Los archivos estáticos son servidos desde el directorio público
152
152
  <tt>./public</tt>. Podés especificar una ubicación diferente ajustando la
@@ -173,7 +173,7 @@ les pase como argumento.
173
173
 
174
174
  === Plantillas Haml
175
175
 
176
- La gem/librería haml es necesaria para para renderizar plantillas HAML:
176
+ La gem/librería <tt>haml</tt> es necesaria para para renderizar plantillas HAML:
177
177
 
178
178
  ## Vas a necesitar requerir haml en tu app
179
179
  require 'haml'
@@ -206,9 +206,9 @@ y reemplazadas individualmente.
206
206
 
207
207
  Renderiza <tt>./views/index.erb</tt>
208
208
 
209
- === Erubis
209
+ === Plantillas Erubis
210
210
 
211
- La gem/librería erubis es necesaria para renderizar plantillas erubis:
211
+ La gem/librería <tt>erubis</tt> es necesaria para renderizar plantillas Erubis:
212
212
 
213
213
  ## Vas a necesitar requerir erubis en tu app
214
214
  require 'erubis'
@@ -217,11 +217,23 @@ La gem/librería erubis es necesaria para renderizar plantillas erubis:
217
217
  erubis :index
218
218
  end
219
219
 
220
- Renderiza <tt>./views/index.erubis</tt>
220
+ Renderiza <tt>./views/index.erubis</tt>.
221
+
222
+ También es posible reemplazar Erb con Erubis:
223
+
224
+ require 'erubis'
225
+ Tilt.register :erb, Tilt[:erubis]
226
+
227
+ get '/' do
228
+ erb :index
229
+ end
230
+
231
+ Renderiza <tt>./views/index.erb</tt> con Erubis.
221
232
 
222
233
  === Plantillas Builder
223
234
 
224
- La gem/librería builder es necesaria para renderizar plantillas builder:
235
+ La gem/librería <tt>builder</tt> es necesaria para renderizar plantillas
236
+ builder:
225
237
 
226
238
  ## Vas a necesitar requerir builder en tu app
227
239
  require 'builder'
@@ -234,7 +246,8 @@ Renderiza <tt>./views/index.builder</tt>.
234
246
 
235
247
  === Plantillas Nokogiri
236
248
 
237
- La gem/librería nokogiri es necesaria para renderizar plantillas nokogiri:
249
+ La gem/librería <tt>nokogiri</tt> es necesaria para renderizar plantillas
250
+ nokogiri:
238
251
 
239
252
  ## Vas a necesitar requerir nokogiri en tu app
240
253
  require 'nokogiri'
@@ -247,7 +260,8 @@ Renderiza <tt>./views/index.nokogiri</tt>.
247
260
 
248
261
  === Plantillas Sass
249
262
 
250
- La gem/librería haml es necesaria para renderizar plantillas Sass:
263
+ La gem/librería <tt>haml</tt> o <tt>sass</tt> es necesaria para renderizar
264
+ plantillas Sass:
251
265
 
252
266
  ## Vas a necesitar requerir haml o sass en tu app
253
267
  require 'sass'
@@ -271,7 +285,8 @@ y reemplazadas individualmente.
271
285
 
272
286
  === Plantillas Scss
273
287
 
274
- La gem/librería haml es necesaria para renderizar plantillas Scss:
288
+ La gem/librería <tt>haml</tt> o <tt>sass</tt>es necesaria para renderizar
289
+ plantillas Scss:
275
290
 
276
291
  ## Vas a necesitar requerir haml o sass en tu app
277
292
  require 'sass'
@@ -295,7 +310,7 @@ y reemplazadas individualmente.
295
310
 
296
311
  === Plantillas Less
297
312
 
298
- La gem/librería less es necesaria para renderizar plantillas Less:
313
+ La gem/librería <tt>less</tt> es necesaria para renderizar plantillas Less:
299
314
 
300
315
  ## Vas a necesitar requerir less en tu app
301
316
  require 'less'
@@ -308,7 +323,7 @@ Renderiza <tt>./views/stylesheet.less</tt>.
308
323
 
309
324
  === Plantillas Liquid
310
325
 
311
- La gem/librería liquid es necesaria para renderizar plantillas Liquid:
326
+ La gem/librería <tt>liquid</tt> es necesaria para renderizar plantillas Liquid:
312
327
 
313
328
  ## Vas a necesitar requerir liquid en tu app
314
329
  require 'liquid'
@@ -326,7 +341,8 @@ plantilla Liquid, casi siempre vas a querer pasarle locales:
326
341
 
327
342
  === Plantillas Markdown
328
343
 
329
- La gem/librería rdiscount es necesaria para renderizar plantillas Markdown:
344
+ La gem/librería <tt>rdiscount</tt> es necesaria para renderizar plantillas
345
+ Markdown:
330
346
 
331
347
  ## Vas a necesitar requerir rdiscount en tu app
332
348
  require "rdiscount"
@@ -343,15 +359,30 @@ generalmente vas a usarlo en combinación con otro motor de renderizado:
343
359
 
344
360
  erb :resumen, :locals => { :texto => markdown(:introduccion) }
345
361
 
346
- Tené en cuenta que también podés llamar al método markdown desde otras
362
+ Tené en cuenta que también podés llamar al método +markdown+ desde otras
347
363
  plantillas:
348
364
 
349
365
  %h1 Hola Desde Haml!
350
366
  %p= markdown(:saludos)
351
367
 
352
- === Plantilla Textile
368
+ También es posible parsear Markdown con BlueCloth en lugar de RDiscount:
369
+
370
+ require 'bluecloth'
371
+
372
+ Tilt.register 'markdown', BlueClothTemplate
373
+ Tilt.register 'mkd', BlueClothTemplate
374
+ Tilt.register 'md', BlueClothTemplate
375
+
376
+ get '/' do
377
+ markdown :index
378
+ end
353
379
 
354
- La gem/librería RedCloth es necesaria para renderizar plantillas Textile:
380
+ Renderiza <tt>./views/index.md</tt> con BlueCloth.
381
+
382
+ === Plantillas Textile
383
+
384
+ La gem/librería <tt>RedCloth</tt> es necesaria para renderizar plantillas
385
+ Textile:
355
386
 
356
387
  ## Vas a necesitar requerir redcloth en tu app
357
388
  require "redcloth"
@@ -367,7 +398,7 @@ generalmente vas a usarlo en combinación con otro motor de renderizado:
367
398
 
368
399
  erb :resumen, :locals => { :texto => textile(:introduccion) }
369
400
 
370
- Tené en cuenta que también podés llamar al método textile desde otras
401
+ Tené en cuenta que también podés llamar al método +textile+ desde otras
371
402
  plantillas:
372
403
 
373
404
  %h1 Hola Desde Haml!
@@ -375,7 +406,7 @@ plantillas:
375
406
 
376
407
  === Plantillas RDoc
377
408
 
378
- La gem/librería RDoc es necesaria para renderizar plantillas RDoc:
409
+ La gem/librería <tt>rdoc</tt> es necesaria para renderizar plantillas RDoc:
379
410
 
380
411
  ## Vas a necesitar requerir rdoc en tu app
381
412
  require "rdoc"
@@ -391,7 +422,7 @@ generalmente vas a usarlo en combinación con otro motor de renderizado:
391
422
 
392
423
  erb :resumen, :locals => { :texto => rdoc(:introduccion) }
393
424
 
394
- Tené en cuenta que también podés llamar al método rdoc desde otras
425
+ Tené en cuenta que también podés llamar al método +rdoc+ desde otras
395
426
  plantillas:
396
427
 
397
428
  %h1 Hola Desde Haml!
@@ -399,7 +430,7 @@ plantillas:
399
430
 
400
431
  === Plantillas Radius
401
432
 
402
- La gem/librería radius es necesaria para renderizar plantillas Radius:
433
+ La gem/librería <tt>radius</tt> es necesaria para renderizar plantillas Radius:
403
434
 
404
435
  ## Vas a necesitar requerir radius en tu app
405
436
  require 'radius'
@@ -417,7 +448,8 @@ plantilla Radius, casi siempre vas a querer pasarle locales:
417
448
 
418
449
  === Plantillas Markaby
419
450
 
420
- La gem/librería markaby es necesaria para renderizar plantillas Markaby:
451
+ La gem/librería <tt>markaby</tt> es necesaria para renderizar plantillas
452
+ Markaby:
421
453
 
422
454
  ## Vas a necesitar requerir markaby en tu app
423
455
  require 'markaby'
@@ -430,8 +462,14 @@ Renderiza <tt>./views/index.mab</tt>.
430
462
 
431
463
  === Plantillas CoffeeScript
432
464
 
433
- La gem/librería coffee-script y el binario `coffee` son necesarios para
434
- renderizar plantillas CoffeeScript:
465
+ La gem/librería <tt>coffee-script</tt> y al menos <b>una</b> de las siguientes
466
+ opciones para ejecutar JavaScript:
467
+
468
+ * +node+ (de Node.js) en tu path
469
+ * utilizar OSX
470
+ * la gem/librería +therubyracer+
471
+
472
+ son necesarios para renderizar plantillas CoffeeScript:
435
473
 
436
474
  ## Vas a necesitar requerir coffee-script en tu app
437
475
  require 'coffee-script'
@@ -442,13 +480,13 @@ renderizar plantillas CoffeeScript:
442
480
 
443
481
  Renderiza <tt>./views/application.coffee</tt>.
444
482
 
445
- === Plantillas Inline
483
+ === Plantillas Embebidas
446
484
 
447
485
  get '/' do
448
486
  haml '%div.titulo Hola Mundo'
449
487
  end
450
488
 
451
- Renderiza el template contenido en el string.
489
+ Renderiza el template embebido en el string.
452
490
 
453
491
  === Accediendo a Variables en Plantillas
454
492
 
@@ -514,13 +552,39 @@ Las plantillas también pueden ser definidas usando el método top-level
514
552
  end
515
553
 
516
554
  Si existe una plantilla con el nombre "layout", va a ser usada cada vez que
517
- una plantilla es renderizada. Podés desactivar los layouts pasando
518
- <tt>:layout => false</tt>.
555
+ una plantilla es renderizada. Podés desactivar los layouts individualmente
556
+ pasando <tt>:layout => false</tt> o globalmente con
557
+ <tt>set :haml, :layout => false</tt>.
519
558
 
520
559
  get '/' do
521
560
  haml :index, :layout => !request.xhr?
522
561
  end
523
562
 
563
+ === Asociando Extensiones de Archivo
564
+
565
+ Para asociar una extensión de archivo con un motor de renderizado, usá
566
+ <tt>Tilt.register</tt>. Por ejemplo, si querés usar la extensión +tt+ para
567
+ las plantillas Textile, podés hacer lo siguiente:
568
+
569
+ Tilt.register :tt, Tilt[:textile]
570
+
571
+ === Agregando Tu Propio Motor de Renderizado
572
+
573
+ Primero, registrá tu motor con Tilt, y después, creá tu método de renderizado:
574
+
575
+ Tilt.register :mipg, MiMotorParaPlantillaGenial
576
+
577
+ helpers do
578
+ def mypg(*args) render(:mypg, *args) end
579
+ end
580
+
581
+ get '/' do
582
+ mypg :index
583
+ end
584
+
585
+ Renderiza <tt>./views/index.mypg</tt>. Mirá https://github.com/rtomayko/tilt
586
+ para aprender más de Tilt.
587
+
524
588
  == Ayudantes
525
589
 
526
590
  Usá el método top-level <tt>helpers</tt> para definir métodos ayudantes que
@@ -683,7 +747,7 @@ Ejecutar cuando el entorno es <tt>:production</tt> o <tt>:test</tt>:
683
747
  ...
684
748
  end
685
749
 
686
- == Manejo de errores
750
+ == Manejo de Errores
687
751
 
688
752
  Los manejadores de errores se ejecutan dentro del mismo contexto que las rutas
689
753
  y los filtros before, lo que significa que podés usar, por ejemplo,
@@ -849,13 +913,6 @@ etc.). Ahí es donde Sinatra::Base entra en el juego:
849
913
  end
850
914
  end
851
915
 
852
- La clase MiApp es un componente Rack independiente que puede actuar como Rack
853
- middleware, una aplicación Rack, o Rails metal. Podés usar (con +use+) o
854
- ejecutar (con +run+) esta clase desde un archivo rackup +config.ru+; o,
855
- controlar un componente de servidor provisto como una librería:
856
-
857
- MiApp.run! :host => 'localhost', :port => 9090
858
-
859
916
  Las subclases de Sinatra::Base tienen disponibles exactamente los mismos
860
917
  métodos que los provistos por el DSL de top-level. La mayoría de las
861
918
  aplicaciones top-level se pueden convertir en componentes Sinatra::Base con
@@ -872,6 +929,64 @@ desactivadas por defecto, incluyendo el servidor incorporado. Mirá
872
929
  {Opciones y Configuraciones}[http://sinatra.github.com/configuration.html]
873
930
  para detalles sobre las opciones disponibles y su comportamiento.
874
931
 
932
+ === Sirviendo una Aplicación Modular
933
+
934
+ Las dos opciones más comunes para iniciar una aplicación modular son, iniciarla
935
+ activamente con <tt>run!</tt>:
936
+
937
+ # mi_app.rb
938
+ require 'sinatra/base'
939
+
940
+ class MiApp < Sinatra::Base
941
+ # ... código de la app ...
942
+
943
+ # iniciar el servidor si el archivo fue ejecutado directamente
944
+ run! if app_file == $0
945
+ end
946
+
947
+ Iniciar con:
948
+
949
+ ruby mi_app.rb
950
+
951
+ O, con un archivo <tt>config.ru</tt>, que permite usar cualquier handler Rack:
952
+
953
+ # config.ru
954
+ require 'mi_app'
955
+ run MiApp
956
+
957
+ Después ejecutar:
958
+
959
+ rackup -p 4567
960
+
961
+ === Usando una Aplicación Clásica con un Archivo config.ru
962
+
963
+ Escribí el archivo de tu aplicación:
964
+
965
+ # app.rb
966
+ require 'sinatra'
967
+
968
+ get '/' do
969
+ 'Hola mundo!'
970
+ end
971
+
972
+ Y el <tt>config.ru</tt> correspondiente:
973
+
974
+ require 'app'
975
+ run Sinatra::Application
976
+
977
+ === ¿Cuándo Usar config.ru?
978
+
979
+ Indicadores de que probablemente querés usar <tt>config.ru</tt>:
980
+
981
+ * Querés realizar el deploy con un hanlder Rack distinto (Passenger, Unicorn,
982
+ Heroku, ...).
983
+ * Querés usar más de una subclase de <tt>Sinatra::Base</tt>.
984
+ * Querés usar Sinatra únicamente para middleware, pero no como un endpoint.
985
+
986
+ <b>No hay necesidad de utilizar un archivo <tt>config.ru</tt> exclusivamente
987
+ porque tenés una aplicación modular, y no necesitás una aplicación modular para
988
+ iniciarla con <tt>config.ru</tt>.</b>
989
+
875
990
  === Utilizando Sinatra como Middleware
876
991
 
877
992
  Sinatra no solo es capaz de usar otro Rack middleware, sino que a su vez,
@@ -994,7 +1109,7 @@ Pegale una mirada al código: acá está el
994
1109
  {Sinatra::Delegator mixin}[http://github.com/sinatra/sinatra/blob/ceac46f0bc129a6e994a06100aa854f606fe5992/lib/sinatra/base.rb#L1128]
995
1110
  que es {incluido en el espacio de nombres principal}[http://github.com/sinatra/sinatra/blob/ceac46f0bc129a6e994a06100aa854f606fe5992/lib/sinatra/main.rb#L28].
996
1111
 
997
- == Línea de comandos
1112
+ == Línea de Comandos
998
1113
 
999
1114
  Las aplicaciones Sinatra pueden ser ejecutadas directamente:
1000
1115
 
@@ -1009,33 +1124,71 @@ Las opciones son:
1009
1124
  -s # especifica el servidor/manejador rack (thin es usado por defecto)
1010
1125
  -x # activa el mutex lock (está desactivado por defecto)
1011
1126
 
1012
- == A la vanguardia
1127
+ == A la Vanguardia
1128
+
1129
+ Si querés usar el código de Sinatra más reciente, sentite libre de ejecutar
1130
+ tu aplicación sobre la rama master, en general es bastante estable.
1131
+
1132
+ También liberamos prereleases de vez en cuando, así, podés hacer
1133
+
1134
+ gem install sinatra --pre
1135
+
1136
+ Para obtener algunas de las últimas características.
1013
1137
 
1014
- Si querés usar el código de Sinatra más reciente, cloná el repositorio
1015
- localmente y ejecutá tu aplicación, asegurándote que el directorio
1016
- <tt>sinatra/lib</tt> esté en el <tt>LOAD_PATH</tt>:
1138
+ === Con Bundler
1139
+
1140
+ Esta es la manera recomendada para ejecutar tu aplicación sobre la última
1141
+ versión de Sinatra usando {Bundler}[http://gembundler.com/].
1142
+
1143
+ Primero, instalá bundler si no lo hiciste todavía:
1144
+
1145
+ gem install bundler
1146
+
1147
+ Después, en el directorio de tu proyecto, creá un archivo +Gemfile+:
1148
+
1149
+ source :rubygems
1150
+ gem 'sinatra', :git => "git://github.com/sinatra/sinatra.git"
1151
+
1152
+ # otras dependencias
1153
+ gem 'haml' # por ejemplo, si usás haml
1154
+ gem 'activerecord', '~> 3.0' # quizás también necesités ActiveRecord 3.x
1155
+
1156
+ Tené en cuenta que tenés que listar todas las dependencias directas de tu
1157
+ aplicación. No es necesario listar las dependencias de Sinatra (Rack y Tilt)
1158
+ porque Bundler las agrega directamente.
1159
+
1160
+ Ahora podés arrancar tu aplicación así:
1161
+
1162
+ bundle exec ruby miapp.rb
1163
+
1164
+ === Con Git
1165
+
1166
+ Cloná el repositorio localmente y ejecutá tu aplicación, asegurándote que el
1167
+ directorio <tt>sinatra/lib</tt> esté en el <tt>LOAD_PATH</tt>:
1017
1168
 
1018
1169
  cd miapp
1019
1170
  git clone git://github.com/sinatra/sinatra.git
1020
1171
  ruby -Isinatra/lib miapp.rb
1021
1172
 
1022
- Otra opción consiste en agregar el directorio <tt>sinatra/lib</tt> al
1023
- <tt>LOAD_PATH</tt> dentro de tu aplicación:
1173
+ Para actualizar el código fuente de Sinatra en el futuro:
1024
1174
 
1025
- $LOAD_PATH.unshift File.dirname(__FILE__) + '/sinatra/lib'
1026
- require 'rubygems'
1027
- require 'sinatra'
1175
+ cd miapp/sinatra
1176
+ git pull
1028
1177
 
1029
- get '/acerca-de' do
1030
- "Estoy usando la versión " + Sinatra::VERSION
1031
- end
1178
+ === Instalación Global
1032
1179
 
1033
- Para actualizar el código fuente de Sinatra en el futuro:
1180
+ Podés construir la gem vos mismo:
1034
1181
 
1035
- cd miproyecto/sinatra
1036
- git pull
1182
+ git clone git://github.com/sinatra/sinatra.git
1183
+ cd sinatra
1184
+ rake sinatra.gemspec
1185
+ rake install
1186
+
1187
+ Si instalás tus gems como root, el último paso debería ser
1188
+
1189
+ sudo rake install
1037
1190
 
1038
- == Más
1191
+ == Lecturas Recomendadas
1039
1192
 
1040
1193
  * {Sito web del proyecto}[http://www.sinatrarb.com/] - Documentación
1041
1194
  adicional, noticias, y enlaces a otros recursos.