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

War es hilfreich?

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
scroll top