如何在webrick服务器上执行代码

时间:2014-03-20 07:58:10

标签: ruby webrick

我这样启动一个webrick服务器:

dell@dev:/var/www/ruby$ ruby -run  -httpd. -p 5000

并在abc.rb中使用此代码:

require 'webrick'

root   = File.path '/tmp/public_html'
server = WEBrick::HTTPServer.new :Port => 5000, :DocumentRoot => root

trap 'INT' do server.shutdown end
server.start

ary = {  "0"=>"fred", "1"=>10, "2"=>3.14, "3"=>"This is a string", "4"=>"last element", }
ary.each do |key, value|
   puts  "#{key} #{value}"
end

当我运行此代码时,它会在浏览器上显示相同的代码

http://localhost:5000/abc.rb

如何查看此代码的输出,我已经问过这个问题并没有得到任何正确的答案:(

这是正确的代码吗?我想知道这个代码的位置

require 'webrick'

root   = File.path '/tmp/public_html'
server = WEBrick::HTTPServer.new :Port => 5000, :DocumentRoot => root

trap 'INT' do server.shutdown end
server.start

如果有人给我一步一步运行此代码我非常感谢..我不明白ans :(怎么做这个

1 个答案:

答案 0 :(得分:0)

来自documentation

  

让服务器执行自定义操作的最简单方法是通过   WEBrick::HTTPServer#mount_proc。给出的块将用a调用   WEBrick::HTTPRequest包含请求信息和WEBrick::HTTPResponse   必须适当填写:

server.mount_proc '/' do |req, res|
  res.body = 'Hello, world!'
end
     

请注意server.mount_proc必须server.start

所以:

require 'webrick'

root   = File.path '/tmp/public_html'
server = WEBrick::HTTPServer.new :Port => 5000, :DocumentRoot => root

server.mount_proc '/abc.rb' do |req, res|
  ary = {  "0"=>"fred", "1"=>10, "2"=>3.14, "3"=>"This is a string", "4"=>"last element" }
  res.body = ary.map do |key, value|
     "#{key} #{value}"
  end.join("\n")
end

trap 'INT' do server.shutdown end
server.start

另外,我认为启动WebBrick的正确方法是运行:

ruby abc.rb