sitio NANOC probado con unicornio
Pregunta
Tengo un sitio NANOC (así, todas las páginas estáticas) que me gustaría probar con unicornio. La idea detrás de esto es la sede de este sitio en heroku a continuación. La estructura es entonces una aplicación de rack. He añadido un archivo config.ru como:
require 'rubygems'
require 'rack'
require 'rack-rewrite'
require 'rack/contrib'
use Rack::Rewrite do
rewrite '/','/output/index.html'
end
use Rack::Static, :urls => ['/'], :root => "output"
(todos mis recursos estáticos se encuentran en el directorio de salida)
Cuando corro unicornio me dieron el mensaje de error:
NoMethodError at /output/index.html
undefined method `to_i' for #<Rack::Static:0x10165ee18>
Yo realmente no entiendo lo que me falta aquí: (
¿Alguna idea?
Gracias y saludos,
Luc
Solución
con este config.ru, funciona:)
require 'rubygems'
require 'rack'
require 'rack/contrib'
require 'rack-rewrite'
require 'mime/types'
use Rack::Deflater
use Rack::ETag
module ::Rack
class TryStatic < Static
def initialize(app, options)
super
@try = ([''] + Array(options.delete(:try)) + [''])
end
def call(env)
@next = 0
while @next < @try.size && 404 == (resp = super(try_next(env)))[0]
@next += 1
end
404 == resp[0] ? @app.call : resp
end
private
def try_next(env)
env.merge('PATH_INFO' => env['PATH_INFO'] + @try[@next])
end
end
end
use Rack::TryStatic,
:root => "output", # static files root dir
:urls => %w[/], # match all requests
:try => ['.html', 'index.html', '/index.html'] # try these postfixes sequentially
errorFile='output/404.html'
run lambda { [404, {
"Last-Modified" => File.mtime(errorFile).httpdate,
"Content-Type" => "text/html",
"Content-Length" => File.size(errorFile).to_s
}, File.read(errorFile)] }
Saludos, Luc
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow