如何添加代码以将标头设置为简单的ruby webrick命令行?

时间:2018-01-10 10:37:51

标签: ruby http http-headers webrick

当我需要一个可以从某个目录提供一些文件的测试Web服务器时,我真的很喜欢简单的

ruby -run -e httpd . -p 8888

然后浏览到localhost:8888

但是,有时我想添加一点点,例如,为特定扩展设置一个特定的mime类型(我可以编辑/usr/lib/ruby/2.3.0/webrick/httputils.rb,但我宁愿不搞乱系统文件),或添加Expires:标题。

看起来添加标题并不复杂,例如,查看https://www.thecodingforums.com/threads/setting-expires-http-response-header.822995/

但是,我对知识,所以我不知道如何将它添加到我的命令行。我想这只是“创建一个具有子类的文件,将其拉入,并告诉ruby使用子类”,但是......答案是超出我的3步。

所以,我要感谢一个回答“将this放入文件,然后将that添加到命令行”,并使用this的复制/可粘贴示例和that

1 个答案:

答案 0 :(得分:2)

确定。将其放入文件 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

它将从当前目录提供文件列表。