[ruby][sinatra] czemu przeglądarka nie pobiera pliku css?


(enedil) #1

Hej!

Mam pewien problem. Napisałem najbardziej podstawowy serwer http (narazie obsługuje tylko "GET"). Gdy otwieram plik index.html z poziomu przeglądarki, wszystko wyświetla się poprawnie (tzn. plik .css się ładuje). Jednakże po uruchomieniu serwera i otwarciu strony http://localhost tekst nie jest sformatowany, czyli plik .css się nie załadował. Inspektor w Firefoksie pokazuje, że style.css jest załadowane. Tak samo w Chrome. Co więcej, serwer w logu wyświetla

127.0.0.1 - - [10/Aug/2014 23:43:12] "GET / HTTP/1.1" 200 196 0.0039
localhost - - [10/Aug/2014:23:43:12 CEST] "GET / HTTP/1.1" 200 196
- -> /
127.0.0.1 - - [10/Aug/2014 23:43:12] "GET /style.css HTTP/1.1" 200 27 0.0004
localhost - - [10/Aug/2014:23:43:12 CEST] "GET /style.css HTTP/1.1" 200 27
http://localhost/ -> /style.css

Czemu tak się dzieje?

 

Mam taką strukturę projektu:

project
    server.rb
    index.html
    style.css

$ cat server.rb
#!/usr/bin/env ruby

require 'sinatra'

#zwraca zawartość pliku tekstowego jako String
def getContent(path)
  file = File.open(path, "r")
  file.read
end

#ustawia port dla Sinatry na 80
set :port, 80

get '/' do
  getContent "index.html"
end

get '/:name' do |n|
  getContent "#{n}"
end

$ cat index.html
<!DOCTYPE html>
<html>
<head>
<title>Ruby HTTP server</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<div id="content">
Hello, Sinatra!
</div>
</body>
</html>

$ cat style.css
#content {
	padding: 5em;
}