如何添加代码以将 headers 设置为简单的 ruby webrick 命令行?
How to add code to set headers to a simple ruby webrick command line?
当我需要一个可以提供来自某个目录的一些文件的测试 Web 服务器时,我真的很喜欢
的简单性
ruby -run -e httpd . -p 8888
然后浏览至 localhost:8888
。
但是,有时我想对此添加一点点,例如,为特定的扩展设置特定的 mime 类型(我可以编辑 /usr/lib/ruby/2.3.0/webrick/httputils.rb
,但我不想弄乱与系统文件),或添加 Expires:
header.
好像加个header也没那么复杂,比如看https://www.thecodingforums.com/threads/setting-expires-http-response-header.822995/.
但是,我对 ruby 的了解 为零,所以我不知道如何将其添加到我的命令行。我想这只是 "create a file that has a subclass, pull it in, and tell ruby to use the subclass",但是......这个答案超出了我的 3 步。
所以,我很感激 "Put this
into a file, then add that
to your command line" 的回答,其中包含 this
和 that
的 copy/pasteable 个示例。
好的。将其放入文件 server.rb 例如:
require 'webrick'
class Server < WEBrick::HTTPServer
def service(req, res)
super
one_hour = 60 * 60
t = Time.now.gmtime + one_hour
res['Expires'] = t.strftime("%a, %d %b %Y %H:%M:%S GMT")
end
end
root = File.expand_path('.')
server = Server.new(Port: 8000, DocumentRoot: root)
trap('INT') { server.shutdown } # Ctrl-C to stop
server.start
然后 运行 在控制台中:
ruby server.rb
它将提供当前目录中的文件列表。
当我需要一个可以提供来自某个目录的一些文件的测试 Web 服务器时,我真的很喜欢
的简单性ruby -run -e httpd . -p 8888
然后浏览至 localhost:8888
。
但是,有时我想对此添加一点点,例如,为特定的扩展设置特定的 mime 类型(我可以编辑 /usr/lib/ruby/2.3.0/webrick/httputils.rb
,但我不想弄乱与系统文件),或添加 Expires:
header.
好像加个header也没那么复杂,比如看https://www.thecodingforums.com/threads/setting-expires-http-response-header.822995/.
但是,我对 ruby 的了解 为零,所以我不知道如何将其添加到我的命令行。我想这只是 "create a file that has a subclass, pull it in, and tell ruby to use the subclass",但是......这个答案超出了我的 3 步。
所以,我很感激 "Put this
into a file, then add that
to your command line" 的回答,其中包含 this
和 that
的 copy/pasteable 个示例。
好的。将其放入文件 server.rb 例如:
require 'webrick'
class Server < WEBrick::HTTPServer
def service(req, res)
super
one_hour = 60 * 60
t = Time.now.gmtime + one_hour
res['Expires'] = t.strftime("%a, %d %b %Y %H:%M:%S GMT")
end
end
root = File.expand_path('.')
server = Server.new(Port: 8000, DocumentRoot: root)
trap('INT') { server.shutdown } # Ctrl-C to stop
server.start
然后 运行 在控制台中:
ruby server.rb
它将提供当前目录中的文件列表。