2010-10-20 2 views
3

У меня есть сайт nanoc (так, все статические страницы), который я бы хотел испытать с единорогом. Идея этого заключается в том, чтобы разместить этот сайт на героку. Структура - это приложение стойки. Я добавил config.ru файл как:Наночный сайт, протестированный с единорогом

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" 

(все мои статические ресурсы расположены в выходном каталоге)

Когда я бегу единорога, я получил следующее сообщение об ошибке:

NoMethodError at /output/index.html 
undefined method `to_i' for #<Rack::Static:0x10165ee18> 

Я не очень понимаю, что я здесь отсутствует :(

Любая идея?

Спасибо и уважением,

Люк

ответ

1

с этим config.ru, он работает :)

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)] } 

С уважением, Люк

+0

Ницца! Мне тоже было любопытно, и я был рад вашим успехам. Тем временем я нахожу [это] (http://teachmetocode.com/screencasts/faking-sinatra-with-rack-and-metaprogramming/) и был полезен, для меня, по крайней мере :) – kfl62

+0

Здравствуйте, это фрагмент кода I найденных в сети. Спасибо за вашу ссылку !!! – Luc

 Смежные вопросы

  • Нет связанных вопросов^_^