您不会说您的测试系统使用什么类型的操作系统,但如果是 Linux 或 Mac OS,您就可以开始使用了。如果不是,而且是 Windows,我真的建议安装一个 telnetd 或 ssh 服务器,以及一个尾部类型的应用程序。
SSH 和/或 Telnet 更轻量级,因为它们基本上只是发送文本,因此与尝试通过 HTTP 流式传输文件相比,它们对您的测试系统的影响要小得多,尤其是使用您提到的解决方案时。只需打开一个会话、tail -f
文件,然后开始测试。
要使用 Sinatra 实现解决方案,我会从一小段代码开始,例如:
#!/bin/env ruby
filepath = ARGV.shift
start_line, num_lines = ARGV.map(&:to_i)
File.foreach(filepath) do |li|
case
when $. < start_line
next
when (start_line .. (start_line + num_lines)) === $.
puts li
when $. > (start_line + num_lines)
break
end
end
将其保存到磁盘中display_file_block.rb
,并使用参数调用它:
path/to/file start_line lines_to_display
在哪里:
path/to/file
很明显。
start_line
是要显示的文件中的起始行。
lines_to_display
是要显示的行数。
使用那些你可以打开一个文件来显示,发送一些行,从一个偏移量开始。
在 Sinatra 中,为 GET 设置请求处理程序:
get '/tail' do
path = params['path']
start = params['start']
count = params['count']
`/path/to/display_file_block.rb #{ path } #{ start } #{ count }`
end
您可能希望将content-type
响应设置为'text/plain'
. Sinatra 网站可以向您展示如何做到这一点。