【发布时间】:2011-06-08 03:18:12
【问题描述】:
如何在使用 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 的事实。另一个是线程的使用好像不太对。有一个更好的方法吗?如果您认为这是正确的方法,请回答。
【问题讨论】:
-
它是如何“不工作”的?你有错误吗?你得到什么了吗?你得到了什么?你期待什么?
-
只是一个想法,但请检查文件的权限以确保服务器(而不仅仅是您)可以读取它。
-
@centipedefarmer 权限还可以。当我右键单击图片并执行“查看图片信息”时,我可以正确看到图片。
-
我终于找到了一种方法。我将其添加为答案。
标签: ruby local absolute-path webrick