静的ファイルと動的コンテンツをRackを通じて処理したい。動的なコンテンツで応答されますlocalhost:3000
に要求し、localhost:3000/resource/path_to_file
への要求がで応答されます、ラックの静的ファイルをマウントする方法
@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
を上記において:以前、私はこのようなコードで、ラックを使用せずにWEBrickにを使用し、それが働きました私のコンピュータの/path_to_file
にある静的ファイル。
ここでは、Thinサーバーを搭載したRackを使用するシステムに切り替える必要があります。私は次のように書いていますが、静的ファイルを取得できませんでした。それを動作させるには、どのように変更する必要がありますか?
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)
私はTHERが同様の問題であることを知っている:How to serve static files via Rack?が、私はそれを動作させることができませんでした。 Rack::Static
、Rack::File
、またはRack::Directory
の使用方法がわかりません。教えて下さい。
書き直しと詳細をありがとう。出来た。 – sawa