Ruby ruby​​ 1.8上的WEBrick错误,在Ruby 1.9上正常工作

我有以下脚本运行Web服务器并在收到请求时执行命令。

#!/usr/bin/env ruby
require 'webrick'

server = WEBrick::HTTPServer.new(port: ARGV.first)
server.mount_proc '/' do |req, res|
  r10kstatus = system( "sudo r10k deploy environment -pv warn" )
  puts r10kstatus
end

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

不幸的是,我需要将它支持到ruby 1.8上(因为在分布式系统上运行脚本的rvm是一种痛苦)。

当我尝试在ruby 1.8上运行脚本时,出现以下错误:

/usr/bin/r10k_gitlab_webhook:19:in `load': /usr/lib/ruby/gems/1.8/gems/r10k_gitlab_webhook-0.1.0/bin/r10k_gitlab_webhook:4: syntax error, unexpected ':', expecting ')' (SyntaxError) server = WEBrick::HTTPServer.new(Port: ARGV.first) ^ /usr/lib/ruby/gems/1.8/gems/r10k_gitlab_webhook-0.1.0/bin/r10k_gitlab_webhook:4: syntax error, unexpected ')', expecting $end from /usr/bin/r10k_gitlab_webhook:19

如何修改这个脚本以使用ruby 1.8?

更新

我已将'Port'更改为'port'

UPDATE2

比较webrick的ruby 1.8和ruby 1.9文档,显示1.8中新方法没有端口参数

http://www.ruby-doc.org/stdlib-1.8.7/libdoc/webrick/rdoc/WEBrick/HTTPServer.html#method-c-new

http://www.ruby-doc.org/stdlib-1.9.3/libdoc/webrick/rdoc/WEBrick/HTTPServer.html#method-c-new

我试过改变(Port: ARGV.first)(port: ARGV.first) ,但它仍然给出了同样的错误:

server = WEBrick::HTTPServer.new(port: ARGV.first) ^ r10k_gitlab_webhook_old.rb:4: syntax error, unexpected ')', expecting $end


Ruby 1.9中引入了散列的key: value语法(其中key是一个符号)。 对于Ruby 1.8,您需要使用:key => value语法:

server = WEBrick::HTTPServer.new(:Port => ARGV.first)

(我认为它是:Port )。

链接地址: http://www.djcxy.com/p/59195.html

上一篇: WEBrick errors on ruby 1.8, works fine on ruby 1.9

下一篇: How can I test a click at a certain x,y coordinate?