如何在使用webrick的動態呈現頁面內使用像css
,js
,png
等本地資源?換句話說,像Ruby on Rails linking這樣的東西是如何工作的?我想這是最基本的事情之一,應該有一個簡單的方法來做到這一點。如何在服務器上使用本地資源?
可能的解決方案
我能夠做到什麼,我想用兩個servlet如下:
require 'webrick'
class WEBrick::HTTPServlet::AbstractServlet
def do_GET request, response
response.body = '<html>
<head><base href="http://localhost:2000"/></head>
<body><img src="path/image.png" /></body>
</html>'
end
end
s1 = WEBrick::HTTPServer.new(Port: 2000, BindAddress: "localhost")
s2 = WEBrick::HTTPServer.new(Port: 3000, BindAddress: "localhost")
%w[INT TERM].each{|signal| trap(signal){s1.stop}}
%w[INT TERM].each{|signal| trap(signal){s2.shutdown}}
s1.mount("/", WEBrick::HTTPServlet::FileHandler, '/')
s2.mount("/", WEBrick::HTTPServlet::AbstractServlet)
Thread.new{s1.start}
s2.start
這是做正確的方式?我不這麼認爲。另外,我對此並不完全滿意。首先,我不喜歡我必須在身體中指定http://localhost:2000
的事實。另一個是使用線程似乎不正確。有一個更好的方法嗎?如果您認爲這是正確的方式,請回答。
它如何「不起作用」?你有錯誤嗎?你有什麼東西嗎?你得到了什麼?你期望什麼? – 2011-06-08 08:14:09
只是一個想法,但檢查文件的權限,以確保它的服務器可讀(不只是由你)。 – hoff2 2011-06-08 16:44:44
@centipedefarmer權限沒問題。當我右鍵單擊圖像並執行「查看圖像信息」時,我可以正確地看到圖片。 – sawa 2011-06-08 20:23:03