Webrick を使用して動的にレンダリングされたページ内でcss
、js
、などのローカル リソースを使用するにはどうすればよいですか? つまり、 Ruby on Rails のリンクpng
などはどのように機能するのでしょうか? これは最も基本的なことの 1 つであり、簡単な方法があるはずです。
考えられる解決策
次のように、2 つのサーブレットを使用して、やりたいことができました。
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
一つには、本文で指定しなければならないという事実が好きではありません。もう1つは、スレッドの使用が正しくないようです。これを行うより良い方法はありますか?これが正しいと思うなら、そう答えてください。