我正在尝试创建一个初始化WEBrick服务器的类,该服务器包含一个WEBrick servlet,如果没有给出请求路径,它将返回一些默认的HTML字符串。
主要问题是我将当前类的实例变量注入到新类的构造函数中,这是我不知道该怎么做的事情。
class MyServer
def initialize(defaultHTML)
@defaultHtml = defaultHTML
@server = WEBrick::HTTPServer.new(
:Port => 12357,
:DocumentRoot = Dir.pwd
)
defaultGetHandler = Class.new(WEBrick::HTTPServlet::AbstractServlet) do
def do_GET(request,response)
if request.path.to_s == "/"
response.body = #SOMEHOW get @defaultHTML here...?
end
end
end
@server.mount "/", defaultGetHandler
end
end
我希望这是可能的。我已经尝试过使用全局变量,这些变量确实可行,但它并不完全理想。
答案 0 :(得分:2)
看来print (df['SCORE'] > 5)
0 False
1 True
2 False
3 True
4 False
5 True
6 False
7 False
8 True
9 False
10 True
11 True
12 False
13 False
14 True
15 False
16 False
17 True
Name: SCORE, dtype: bool
已经为此提供了适当的界面(Documentation),例如
WEBrick::HTTPServlet::AbstractServlet
然后 class DefaultGetHandler < WEBrick::HTTPServlet::AbstractServlet
def initialize(server,default_html)
super(server)
@default_html = default_html
end
def do_GET(request,response)
if request.path.to_s == "/"
response.body = @default_html
end
end
end
变为
MyServer
这将允许您避免现在正在创建的所有匿名类定义,并为您提供更清晰的自定义类实现。如果您想维护目前的封装,可以在class MyServer
def initialize(default_html)
@server = WEBrick::HTTPServer.new(
:Port => 12357,
:DocumentRoot = Dir.pwd
)
@server.mount "/", DefaultGetHandler, default_html
end
end
内命名空格DefaultGetHandler
答案 1 :(得分:1)
注意:@engineersmnky的答案对于您的特定用例来说要好得多。对于寻找类似但不是useHTML
相关问题的解决方案的人来说,这个答案可能会引起人们的兴趣。
你可以定义一个类实例变量访问器,并在动态创建类之后传入WEBrick::HTTPServlet::AbstractServlet
,如下所示:
defaultHtml