我想通過機架服務靜態文件以及動態內容。以前,我用的WEBrick 不使用機架,像這樣的代碼,它的工作:如何爲機架安裝靜態文件
@s = WEBrick::HTTPServer.new(
Port: 3000,
BindAddress: "localhost",
Logger: WEBrick::Log.new(File::NULL),
AccessLog: [nil, nil]
)
%w[INT TERM].each{|signal| trap(signal){@s.shutdown}}
@s.mount("/", self)
@s.mount("/resource/", WEBrick::HTTPServlet::FileHandler, "/")
@s.start
在上面,請求對localhost:3000
將動態內容進行響應,並要求localhost:3000/resource/path_to_file
將由來回應靜態文件位於我電腦上的/path_to_file
。
現在,我想切換到使用Rack with Thin服務器的系統。我寫了以下內容,但無法獲取所提供的靜態文件。應該如何改變它以使其工作?
Rack::Handler::Thin.run(->env{
h = Rack::Utils.parse_nested_query(env["QUERY_STRING"])
# I tried the following three lines one at a time, but neither worked.
use(Rack::Static, urls: "/resource/", root: "/") # First try
Rack::File.new("/resource").call(env) # Second try
Rack::Directory.new("/resource").call(env) # Third try
[200, {}, [some_dyamically_generated_content]]
}, Port: 3000)
我知道療法是一個類似的問題:How to serve static files via Rack?,但我不能使它工作。我不知道如何使用Rack::Static
,Rack::File
或Rack::Directory
。請教我。
感謝您的重寫和細節。有效。 – sawa 2012-01-10 21:11:06