如何在使用 webrick 的动态呈现页面中使用本地资源,如css
、js
、等?png
换句话说,Ruby on Rails 链接之类的东西是如何工作的?我想这是最基本的事情之一,应该有一个简单的方法来做到这一点。
可能的解决方案
我设法使用以下两个 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
在正文中指定的事实。另一个是线程的使用好像不太对。有一个更好的方法吗?如果您认为这是正确的方法,请回答。