nanoc Website getestet mit Einhorn
Frage
Ich habe eine nanoc Website (ja, alle statischen Seiten), dass ich mit Einhorn Test möchte. Die Idee dahinter ist es, diese Website zu hosten auf Heroku dann. Die Struktur wird dann eine Zahnstange Anwendung. Ich habe eine config.ru Datei hinzugefügt wie:
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"
(Alle meine statischen Ressourcen werden in der Ausgabe-Verzeichnis)
Wenn ich laufe Einhorn bekam ich die folgende Fehlermeldung:
NoMethodError at /output/index.html
undefined method `to_i' for #<Rack::Static:0x10165ee18>
Ich verstehe wirklich nicht, was ich hier fehlt: (
Jede Idee?
Danke und Gruß,
Luc
Lösung
Mit diesem config.ru, es funktioniert:)
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)] }
Viele Grüße, Luc
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow