sinatra 1.2.9 → 1.3.0.a

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/CHANGES CHANGED
@@ -1,127 +1,25 @@
1
- = 1.2.9 (backports release) / 2013-03-15
1
+ = 1.3.0 / Not Yet Released
2
2
 
3
- IMPORTANT: THIS IS THE LAST 1.2.x RELEASE, PLEASE UPGRADE.
3
+ * Added support for HTTP PATCH requests. (Konstantin Haase)
4
4
 
5
- * Display EOL warning when loading Sinatra. (Konstantin Haase)
5
+ * Set up `Rack::Logger` or `Rack::NullLogger` depending on whether logging
6
+ was enabled or not. Also, expose that logger with the `logger` helper
7
+ method. (Konstantin Haase)
6
8
 
7
- * Improve documentation. (Anurag Priyam, Konstantin Haase)
9
+ * The sessions setting now may be an options hash. (Konstantin Haase)
8
10
 
9
- * Do not modify the load path. (Konstantin Haase)
11
+ * Important: 1.8.6 support has been dropped. It is still usable if you use the
12
+ backports gem, but no longer officially supported. (Konstantin Haase)
10
13
 
11
- * Display deprecation warning if RUBY_IGNORE_CALLERS is used. (Konstantin Haase)
14
+ * It is now possible to use a different target class for the top level DLS (aka
15
+ classic style) than `Sinatra::Application` by setting `Delegator.target`.
16
+ This was mainly introduced to ease testing. (Konstantin Haase)
12
17
 
13
- * Add backports library so we can still run on Ruby 1.8.6. (Konstantin Haase)
14
-
15
- = 1.2.8 (backports release) / 2011-12-30
16
-
17
- Backported from 1.3.2:
18
-
19
- * Fix bug where rendering a second template in the same request after the
20
- first one raised an exception skipped the default layout (Nathan Baum)
21
-
22
- = 1.2.7 (backports release) / 2011-09-30
23
-
24
- Custom changes:
25
-
26
- * Fix Ruby 1.8.6 issue with Accept header parsing. (Konstantin Haase)
27
-
28
- Backported from 1.3.0:
29
-
30
- * Ignore `to_ary` on response bodies. Fixes compatibility to Rails 3.1.
31
- (Konstantin Haase)
32
-
33
- * `Sinatra.run!` now prints to stderr rather than stdout. (Andrew Armenia)
34
-
35
- * Automatic `app_file` detection now works in directories containing brackets
36
- (Konstantin Haase)
37
-
38
- * Improved documentation. (Emanuele Vicentini, Peter Higgins, Takanori
39
- Ishikawa, Konstantin Haase)
40
-
41
- * Also specify charset in Content-Type header for JSON. (Konstantin Haase)
42
-
43
- * Rack handler names will not be converted to lower case internally, this
44
- allows you to run Sinatra with custom Rack handlers, like Kirk or Mongrel2.
45
- Example: `ruby app.rb -s Mongrel2` (Konstantin Haase)
46
-
47
- * Fix uninitialized instance variable warning. (David Kellum)
48
-
49
- * Command line options now complain if value passed to `-p` is not a valid
50
- integer. (Konstantin Haase)
51
-
52
- * Fix handling of broken query params when displaying exceptions. (Luke
53
- Jahnke)
54
-
55
- = 1.2.6 / 2011-05-01
56
-
57
- * Fix broken delegation, backport delegation tests from Sinatra 1.3.
58
- (Konstantin Haase)
59
-
60
- = 1.2.5 / 2011-04-30
61
-
62
- * Restore compatibility with Ruby 1.8.6. (Konstantin Haase)
63
-
64
- = 1.2.4 / 2011-04-30
65
-
66
- * Sinatra::Application (classic style) does not use a session secret in
67
- development mode, so sessions are not invalidated after every request when
68
- using Shotgun. (Konstantin Haase)
69
-
70
- * The request object was shared between multiple Sinatra instances in the
71
- same middleware chain. This caused issues if any non-sinatra routing
72
- happend in-between two of those instances, or running a request twice
73
- against an application (described in the README). The caching was reverted.
74
- See GH#239 and GH#256 for more infos. (Konstantin Haase)
75
-
76
- * Fixes issues where the top level DSL was interfering with method_missing
77
- proxies. This issue surfaced when Rails 3 was used with older Sass versions
78
- and Sinatra >= 1.2.0. (Konstantin Haase)
79
-
80
- * Sinatra::Delegator.delegate is now able to delegate any method names, even
81
- those containing special characters. This allows better integration into
82
- other programming languages on Rubinius (probably on the JVM, too), like
83
- Fancy. (Konstantin Haase)
84
-
85
- * Remove HEAD request logic and let Rack::Head handle it instead. (Paolo
86
- "Nusco" Perrotta)
87
-
88
- = 1.2.3 / 2011-04-13
89
-
90
- * This release is compatible with Tilt 1.3, it will still work with Tilt 1.2.2,
91
- however, if you want to use a newer Tilt version, you have to upgrade to at
92
- least this version of Sinatra. (Konstantin Haase)
93
-
94
- * Helpers dealing with time, like `expires`, handle objects that pretend to be
95
- numbers, like `ActiveSupport::Duration`, better. (Konstantin Haase)
96
-
97
- = 1.2.2 / 2011-04-08
98
-
99
- * The `:provides => :js` condition now matches both `application/javascript`
100
- and `text/javascript`. The `:provides => :xml` condition now matches both
101
- `application/xml` and `text/xml`. The `Content-Type` header is set
102
- accordingly. If the client accepts both, the `application/*` version is
103
- preferred, since the `text/*` versions are deprecated. (Konstantin Haase)
104
-
105
- * The `provides` condition now handles wildcards in `Accept` headers correctly.
106
- Thus `:provides => :html` matches `text/html`, `text/*` and `*/*`.
107
- (Konstantin Haase)
108
-
109
- * When parsing `Accept` headers, `Content-Type` preferences are honored
110
- according to RFC 2616 section 14.1. (Konstantin Haase)
18
+ = 1.2.2 / Not Yet Released
111
19
 
112
20
  * URIs passed to the `url` helper or `redirect` may now use any schema to be
113
21
  identified as absolute URIs, not only `http` or `https`. (Konstantin Haase)
114
22
 
115
- * Handles `Content-Type` strings that already contain parameters correctly in
116
- `content_type` (example: `content_type "text/plain; charset=utf-16"`).
117
- (Konstantin Haase)
118
-
119
- * If a route with an empty pattern is defined (`get("") { ... }`) requests with
120
- an empty path info match this route instead of "/". (Konstantin Haase)
121
-
122
- * In development environment, when running under a nested path, the image URIs
123
- on the error pages are set properly. (Konstantin Haase)
124
-
125
23
  = 1.2.1 / 2011-03-17
126
24
 
127
25
  * Use a generated session secret when using `enable :sessions`. (Konstantin
@@ -184,10 +82,6 @@ Backported from 1.3.0:
184
82
  * Sinatra now ships with a Gemfile for development dependencies, since it eases
185
83
  supporting different platforms, like JRuby. (Konstantin Haase)
186
84
 
187
- = 1.1.4 (backports release) / 2011-04-13
188
-
189
- * Compatible with Tilt 1.3. (Konstantin Haase)
190
-
191
85
  = 1.1.3 / 2011-02-20
192
86
 
193
87
  * Fixed issues with `user_agent` condition if the user agent header is missing.
data/Gemfile CHANGED
@@ -1,5 +1,5 @@
1
1
  # Why use bundler?
2
- # Well, not all development dependencies install on all rubies. Moreover, `gem
2
+ # Well, not all development dependencies install on all rubies. Moreover, `gem
3
3
  # install sinatra --development` doesn't work, as it will also try to install
4
4
  # development dependencies of our dependencies, and those are not conflict free.
5
5
  # So, here we are, `bundle install`.
@@ -7,50 +7,36 @@
7
7
  # If you have issues with a gem: `bundle install --without-coffee-script`.
8
8
 
9
9
  RUBY_ENGINE = 'ruby' unless defined? RUBY_ENGINE
10
+
10
11
  source :rubygems unless ENV['QUICK']
11
12
  gemspec
12
13
 
13
- gem 'rake', '~> 0.8.7'
14
+ gem 'rake'
14
15
  gem 'rack-test', '>= 0.5.6'
15
- gem 'ci_reporter', :group => :ci
16
-
17
- # Allows stuff like `tilt=1.2.2 bundle install` or `tilt=master ...`.
18
- # Used by the CI.
19
- github = "git://github.com/%s.git"
20
- repos = { 'tilt' => github % "rtomayko/tilt", 'rack' => github % "rack/rack" }
21
- %w[tilt rack].each do |lib|
22
- dep = (ENV[lib] || 'stable').sub "#{lib}-", ''
23
- dep = nil if dep == 'stable'
24
- dep = {:git => repos[lib], :branch => dep} if dep and dep !~ /(\d+\.)+\d+/
25
- dep ||= '~> 1.1.0' if lib == 'rack' and RUBY_VERSION == '1.8.6'
26
- gem lib, dep
27
- end
28
16
 
29
- gem 'haml', '~> 3.0.0', :group => 'haml'
17
+ gem 'haml', '>= 3.0', :group => 'haml'
30
18
  gem 'builder', :group => 'builder'
31
19
  gem 'erubis', :group => 'erubis'
20
+ gem 'less', :group => 'less'
32
21
  gem 'liquid', :group => 'liquid'
22
+ gem 'nokogiri', :group => 'nokogiri'
23
+ gem 'slim', :group => 'slim'
24
+ gem 'RedCloth', :group => 'redcloth'
25
+ gem 'coffee-script', '>= 2.0', :group => 'coffee-script'
26
+ gem 'rdoc', :group => 'rdoc'
27
+
28
+ platforms :ruby do
29
+ gem 'rdiscount', :group => 'rdiscount'
30
+ end
33
31
 
34
- if RUBY_VERSION > '1.8.6'
35
- #gem 'less', '~> 1.0', :group => 'less'
36
- gem 'slim', :group => 'slim'
37
- gem 'RedCloth', :group => 'redcloth' if RUBY_VERSION < "1.9.3" and RUBY_ENGINE != 'macruby'
38
-
39
- if RUBY_ENGINE == 'jruby'
40
- gem 'nokogiri', '!= 1.5.0'
41
- elsif RUBY_ENGINE != 'maglev'
42
- gem 'nokogiri'
43
- end
44
- gem 'coffee-script', '>= 2.0', :group => 'coffee-script'
45
- gem 'rdoc', '< 3.10', :group => 'rdoc'
46
-
47
- platforms :ruby do
48
- gem 'rdiscount', :group => 'rdiscount'
49
- end
32
+ platforms :ruby_18, :jruby do
33
+ gem 'json', :group => 'coffee-script'
34
+ gem 'markaby', :group => 'markaby'
35
+ gem 'radius', :group => 'radius'
36
+ end
50
37
 
51
- if RUBY_VERSION < '1.9'
52
- gem 'json', :group => 'coffee-script'
53
- gem 'markaby', :group => 'markaby'
54
- gem 'radius', :group => 'radius'
55
- end
38
+ platforms :mri_18 do
39
+ # bundler platforms are broken
40
+ next if RUBY_ENGINE != 'ruby' or RUBY_VERSION > "1.8"
41
+ gem 'rcov', :group => 'rcov'
56
42
  end
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2007, 2008, 2009, 2010, 2011 Blake Mizerany
1
+ Copyright (c) 2007, 2008, 2009, 2010 Blake Mizerany
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person
4
4
  obtaining a copy of this software and associated documentation
@@ -903,8 +903,8 @@ Manchmal entspricht +pass+ nicht den Anforderungen, wenn das Ergebnis einer
903
903
  anderen Route gefordert wird. Um das zu erreichen, lässt sich +call+ nutzen:
904
904
 
905
905
  get '/foo' do
906
- status, headers, body = call env.merge("PATH_INFO" => '/bar')
907
- [status, headers, body.map(&:upcase)]
906
+ status, headers, body = call request.env.merge("PATH_INFO" => '/bar')
907
+ [status, body.upcase]
908
908
  end
909
909
 
910
910
  get '/bar' do
@@ -947,7 +947,7 @@ Vergleichbar mit +body+ lassen sich auch Status-Code und Header setzen:
947
947
  get '/foo' do
948
948
  status 418
949
949
  headers \
950
- "Allow" => "BREW, POST, GET, PROPFIND, WHEN",
950
+ "Allow" => "BREW, POST, GET, PROPFIND, WHEN"
951
951
  "Refresh" => "Refresh: 20; http://www.ietf.org/rfc/rfc2324.txt"
952
952
  halt "Ich bin ein Teekesselchen"
953
953
  end
@@ -1018,7 +1018,7 @@ Um Argumente an ein Redirect weiterzugeben, können sie entweder dem Query
1018
1018
 
1019
1019
  oder eine Session verwendet werden:
1020
1020
 
1021
- enable :sessions
1021
+ enable :session
1022
1022
 
1023
1023
  get '/foo' do
1024
1024
  session[:secret] = 'foo'
@@ -1357,7 +1357,7 @@ Routen-Block oder in einem Filter geworfen wurde. Die Exception kann über die
1357
1357
  Benutzerdefinierte Fehler:
1358
1358
 
1359
1359
  error MeinFehler do
1360
- 'Au weia, ' + env['sinatra.error'].message
1360
+ 'Au weia, ' + request.env['sinatra.error'].message
1361
1361
  end
1362
1362
 
1363
1363
  Dann, wenn das passiert:
@@ -1561,7 +1561,7 @@ Oder über eine <tt>config.ru</tt>-Datei, die es erlaubt, einen beliebigen
1561
1561
  Rack-Handler zu verwenden:
1562
1562
 
1563
1563
  # config.ru
1564
- require './mein_app'
1564
+ require 'mein_app'
1565
1565
  run MeineApp
1566
1566
 
1567
1567
  Starte:
@@ -1582,7 +1582,7 @@ Schreibe eine Anwendungsdatei:
1582
1582
 
1583
1583
  sowie eine dazugehörige <tt>config.ru</tt>-Datei:
1584
1584
 
1585
- require './app'
1585
+ require 'app'
1586
1586
  run Sinatra::Application
1587
1587
 
1588
1588
 
@@ -1819,10 +1819,10 @@ die so installiert werden:
1819
1819
  === Mit Bundler
1820
1820
 
1821
1821
  Wenn die Applikation mit der neuesten Version von Sinatra und
1822
- {Bundler}[http://gembundler.com/] genutzt werden soll, empfehlen wir den
1823
- nachfolgenden Weg.
1822
+ {Bundler}[http://gembundler.com/] genutzt werden soll, schlagen wir folgenden
1823
+ Weg vor:
1824
1824
 
1825
- Soweit Bundler noch nicht installiert ist:
1825
+ Soweit Bundler noch nicht installiert ist, folgendes:
1826
1826
 
1827
1827
  gem install bundler
1828
1828
 
@@ -1897,13 +1897,9 @@ SemVer und SemVerTag.
1897
1897
  * {Projekt-Website}[http://sinatra.github.com/] - Ergänzende Dokumentation,
1898
1898
  News und Links zu anderen Ressourcen.
1899
1899
  * {Hilfe beisteuern}[http://sinatra.github.com/contributing.html] - Einen
1900
- Fehler gefunden? Brauchst du Hilfe? Hast du einen Patch?
1900
+ Fehler gefunden? Brauchst du Hilfe? Hast du einen Patch?
1901
1901
  * {Issue-Tracker}[http://github.com/sinatra/sinatra/issues]
1902
1902
  * {Twitter}[http://twitter.com/sinatra]
1903
1903
  * {Mailing-Liste}[http://groups.google.com/group/sinatrarb]
1904
1904
  * {IRC: #sinatra}[irc://chat.freenode.net/#sinatra] auf http://freenode.net
1905
1905
 
1906
- * API Dokumentation für die {aktuelle Version}[http://rubydoc.info/gems/sinatra]
1907
- oder für {HEAD}[http://rubydoc.info/github/sinatra/sinatra] auf
1908
- http://rubydoc.info
1909
-
@@ -35,7 +35,11 @@ Cada ruta se asocia con un bloque:
35
35
  end
36
36
 
37
37
  put '/' do
38
- .. actualizar algo ..
38
+ .. reemplazar algo ..
39
+ end
40
+
41
+ patch '/' do
42
+ .. modificar algo ..
39
43
  end
40
44
 
41
45
  delete '/' do
@@ -825,6 +829,11 @@ compartan un único secreto, tenés que definirlo vos:
825
829
 
826
830
  set :session_secret, 'super secreto'
827
831
 
832
+ Si necesitás una configuración más específica, +sessions+ acepta un
833
+ Hash con opciones:
834
+
835
+ set :sessions, :domain => 'foo.com'
836
+
828
837
  === Interrupción
829
838
 
830
839
  Para detener inmediatamente una petición dentro de un filtro o una ruta usá:
@@ -874,8 +883,8 @@ Cuando querés obtener el resultado de la llamada a una ruta, +pass+ no te va a
874
883
  servir. Para lograr esto, podés usar +call+:
875
884
 
876
885
  get '/foo' do
877
- status, headers, body = call env.merge("PATH_INFO" => '/bar')
878
- [status, headers, body.map(&:upcase)]
886
+ status, headers, body = call request.env.merge("PATH_INFO" => '/bar')
887
+ [status, body.upcase]
879
888
  end
880
889
 
881
890
  get '/bar' do
@@ -916,7 +925,7 @@ De manera similar, también podés asignar el código de estado y encabezados:
916
925
  get '/foo' do
917
926
  status 418
918
927
  headers \
919
- "Allow" => "BREW, POST, GET, PROPFIND, WHEN",
928
+ "Allow" => "BREW, POST, GET, PROPFIND, WHEN"
920
929
  "Refresh" => "Refresh: 20; http://www.ietf.org/rfc/rfc2324.txt"
921
930
  body "I'm a tea pot!"
922
931
  end
@@ -924,6 +933,31 @@ De manera similar, también podés asignar el código de estado y encabezados:
924
933
  También, al igual que +body+, tanto +status+ como +headers+ pueden utilizarse
925
934
  para obtener sus valores cuando no se les pasa argumentos.
926
935
 
936
+ === Log (Registro)
937
+
938
+ En el ámbito de la petición, el helper +logger+ (registrador) expone
939
+ una instancia de +Logger+:
940
+
941
+ get '/' do
942
+ logger.info "cargando datos"
943
+ # ...
944
+ end
945
+
946
+ Este logger tiene en cuenta la configuración de logueo de tu Rack
947
+ handler. Si el logueo está desactivado, este método va a devolver un
948
+ objeto que se comporta como un logger pero que en realidad no hace
949
+ nada. Así, no vas a tener que preocuparte por esta situación.
950
+
951
+ Tené en cuenta que el logueo está habilitado por defecto únicamente
952
+ para <tt>Sinatra::Application</tt>. Si heredaste de
953
+ <tt>Sinatra::Base</tt>, probablemente quieras habilitarlo manualmente:
954
+
955
+ class MiApp < Sinatra::Base
956
+ configure(:production, :development) do
957
+ enable :logging
958
+ end
959
+ end
960
+
927
961
  === Tipos Mime
928
962
 
929
963
  Cuando usás <tt>send_file</tt> o archivos estáticos tal vez tengas tipos mime
@@ -983,7 +1017,7 @@ búsqueda:
983
1017
 
984
1018
  O usar una sesión:
985
1019
 
986
- enable :sessions
1020
+ enable :session
987
1021
 
988
1022
  get '/foo' do
989
1023
  session[:secreto] = 'foo'
@@ -1305,9 +1339,7 @@ Podés acceder a estas opciones utilizando el método <tt>settings</tt>:
1305
1339
 
1306
1340
  [reload_templates] define si se recargan las plantillas entre peticiones.
1307
1341
 
1308
- Se encuentra activado en el entorno de desarrollo y en
1309
- Ruby 1.8.6 (para compoensar un bug en Ruby que provoca una
1310
- pérdida de memoria).
1342
+ Se encuentra activado en el entorno de desarrollo.
1311
1343
 
1312
1344
  [root] directorio raíz del proyecto.
1313
1345
 
@@ -1331,11 +1363,9 @@ Podés acceder a estas opciones utilizando el método <tt>settings</tt>:
1331
1363
  [static] define si Sinatra debe encargarse de servir archivos
1332
1364
  estáticos.
1333
1365
 
1334
- Deshabilitala cuando usés un servidor capaz de
1335
- hacerlo por sí solo, porque mejorará el
1336
- rendimiento. Se encuentra habilitada por
1337
- defecto en el estilo clásico y desactivado en el
1338
- el modular.
1366
+ Deshabilitala cuando usés un servidor capaz de hacerlo
1367
+ por sí solo, porque mejorará el rendimiento. Se encuentra
1368
+ habilitada por defecto.
1339
1369
 
1340
1370
  [views] directorio de las vistas.
1341
1371
 
@@ -1367,7 +1397,7 @@ obtener de la variable Rack <tt>sinatra.error</tt>:
1367
1397
  Errores personalizados:
1368
1398
 
1369
1399
  error MiErrorPersonalizado do
1370
- 'Lo que pasó fue...' + env['sinatra.error'].message
1400
+ 'Lo que pasó fue...' request.env['sinatra.error'].message
1371
1401
  end
1372
1402
 
1373
1403
  Entonces, si pasa esto:
@@ -1536,7 +1566,6 @@ entre sus configuraciones:
1536
1566
  logging true false
1537
1567
  method_override true false
1538
1568
  inline_templates true false
1539
- static true false
1540
1569
 
1541
1570
  === Sirviendo una Aplicación Modular
1542
1571
 
@@ -1560,7 +1589,7 @@ Iniciar con:
1560
1589
  O, con un archivo <tt>config.ru</tt>, que permite usar cualquier handler Rack:
1561
1590
 
1562
1591
  # config.ru
1563
- require './mi_app'
1592
+ require 'mi_app'
1564
1593
  run MiApp
1565
1594
 
1566
1595
  Después ejecutar:
@@ -1580,7 +1609,7 @@ Escribí el archivo de tu aplicación:
1580
1609
 
1581
1610
  Y el <tt>config.ru</tt> correspondiente:
1582
1611
 
1583
- require './app'
1612
+ require 'app'
1584
1613
  run Sinatra::Application
1585
1614
 
1586
1615
  === ¿Cuándo Usar config.ru?
@@ -1632,48 +1661,6 @@ aplicación basada en Rack (Rails/Ramaze/Camping/...):
1632
1661
  get('/') { "Hola #{session['nombre_de_usuario']}." }
1633
1662
  end
1634
1663
 
1635
- === Creación Dinámica de Aplicaciones
1636
-
1637
- Puede que en algunas ocasiones quieras crear nuevas aplicaciones en
1638
- tiempo de ejecución sin tener que asignarlas a una constante. Para
1639
- esto tenés <tt>Sinatra.new</tt>:
1640
-
1641
- require 'sinatra/base'
1642
- mi_app = Sinatra.new { get('/') { "hola" } }
1643
- mi_app.run!
1644
-
1645
- Acepta como argumento opcional una aplicación desde la que se
1646
- heredará:
1647
-
1648
- require 'sinatra/base'
1649
-
1650
- controller = Sinatra.new do
1651
- enable :logging
1652
- helpers MisHelpers
1653
- end
1654
-
1655
- map('/a') do
1656
- run Sinatra.new(controller) { get('/') { 'a' } }
1657
- end
1658
-
1659
- map('/b') do
1660
- run Sinatra.new(controller) { get('/') { 'b' } }
1661
- end
1662
-
1663
- Construir aplicaciones de esta forma resulta especialmente útil para
1664
- testear extensiones Sinatra o para usar Sinatra en tus librerías.
1665
-
1666
- Por otro lado, hace extremadamente sencillo usar Sinatra como
1667
- middleware:
1668
-
1669
- require 'sinatra/base'
1670
-
1671
- use Sinatra do
1672
- get('/') { ... }
1673
- end
1674
-
1675
- run ProyectoRails::Application
1676
-
1677
1664
  == Ámbitos y Ligaduras
1678
1665
 
1679
1666
  El ámbito en el que te encontrás determina que métodos y variables están
@@ -1775,22 +1762,10 @@ Las opciones son:
1775
1762
  -s # especifica el servidor/manejador rack (thin es usado por defecto)
1776
1763
  -x # activa el mutex lock (está desactivado por defecto)
1777
1764
 
1778
- == Requerimientos
1779
-
1780
- Se recomienda instalar Sinatra en Ruby 1.8.7, 1.9.2, JRuby o Rubinius.
1765
+ == Versiones de Ruby Soportadas
1781
1766
 
1782
1767
  Las siguientes versiones de Ruby son soportadas oficialmente:
1783
1768
 
1784
- [ Ruby 1.8.6 ]
1785
- No se recomienda utilizar Sinatra en 1.8.6. Sin embargo, esta versión será
1786
- soportada oficialmente hasta que se libere Sinatra 1.3.0. RDoc y CoffeeScript
1787
- no son soportadas por esta versión de Ruby. 1.8.6 contiene una falla
1788
- importante de pérdida de memoria en su implementación de Hash, que afecta a
1789
- las versiones de Sinatra anteriores a 1.1.1. La versión actual evita
1790
- explícitamente esta falla a expensas de una disminución del rendimiento. Por
1791
- último, Rack >= 1.2 dejó de soportar 1.8.6, por lo que vas a tener que usar
1792
- alguna versión 1.1.x.
1793
-
1794
1769
  [ Ruby 1.8.7 ]
1795
1770
  1.8.7 es soportado completamente. Sin embargo, si no hay nada que te lo
1796
1771
  prohíba, te recomendamos que usés 1.9.2 o cambies a JRuby o Rubinius.
@@ -1812,6 +1787,8 @@ Las siguientes versiones de Ruby son soportadas oficialmente:
1812
1787
  soporte de JRuby para extensiones C se encuentra en una etapa
1813
1788
  experimental, sin embargo, de momento solo RDiscount se ve afectada.
1814
1789
 
1790
+ <b>Hemos dejado de soportar Ruby 1.8.6.</b>
1791
+
1815
1792
  Siempre le prestamos atención a las nuevas versiones de Ruby.
1816
1793
 
1817
1794
  Las siguientes implementaciones de Ruby no se encuentran soportadas
@@ -1820,6 +1797,7 @@ oficialmente. De cualquier manera, pueden ejecutar Sinatra:
1820
1797
  * Versiones anteriores de JRuby y Rubinius
1821
1798
  * MacRuby, Maglev e IronRuby
1822
1799
  * Ruby 1.9.0 y 1.9.1
1800
+ * Ruby 1.8.6 con {backports}[https://github.com/marcandre/backports/#readme]
1823
1801
 
1824
1802
  No estar soportada oficialmente, significa que si las cosas solamente se rompen
1825
1803
  ahí y no en una plataforma soportada, asumimos que no es nuestro problema sino
@@ -1912,7 +1890,3 @@ siguiendo las especificaciones SemVer y SemVerTag.
1912
1890
  * {Twitter}[http://twitter.com/sinatra]
1913
1891
  * {Lista de Correo}[http://groups.google.com/group/sinatrarb/topics]
1914
1892
  * {IRC: #sinatra}[irc://chat.freenode.net/#sinatra] en http://freenode.net
1915
- * Documentación de la API para la
1916
- {última versión liberada}[http://rubydoc.info/gems/sinatra] o para la
1917
- {rama de desarrollo actual}[http://rubydoc.info/github/sinatra/sinatra]
1918
- en http://rubydoc.info/