ruby 1.8上的WEBrick错误,在ruby 1.9上运行良好

ruby 1.8上的WEBrick错误,在ruby 1.9上运行良好,ruby,webrick,Ruby,Webrick,我有下面的脚本,它运行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 'I

我有下面的脚本,它运行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:语法错误,意外“:”,应为语法错误 server=WEBrick::HTTPServer.newPort:ARGV.first ^ /usr/lib/ruby/gems/1.8/gems/r10k\u gitlab\u webhook-0.1.0/bin/r10k\u gitlab\u webhook:4:语法错误,意外,应为$end from/usr/bin/r10k\u gitlab\u webhook:19

如何修改此脚本以在ruby 1.8上工作

更新

我已将“端口”更改为“端口”

更新2

比较webrick的ruby 1.8和ruby 1.9文档,可以看出1.8中没有新方法的端口参数

我已尝试将Port:ARGV.first更改为Port:ARGV.first,但仍会出现相同的错误:

server=WEBrick::HTTPServer.newport:ARGV.first ^ r10k\u gitlab\u webhook\u old.rb:4:语法错误,意外,应为$end

Ruby 1.9中引入了键为符号的哈希的key:value语法。对于Ruby 1.8,您需要使用:key=>value语法:

我认为它是:Port。

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


我认为它是:Port。

Port:ARGV.first应该是Port:ARGV.firstchanged-to-Port应该避免语法错误,意外的“:”,预期的。问题依然存在?你是否。。。结束不能发生在一行上。单行语法是{…}Port:ARGV.first使用ruby 1.9哈希语法,在1.8中,需要使用经典的哈希火箭语法::Port=>ARGV.firstPort:ARGV.first应该是Port:ARGV.firstchanged Port-to-Port应该避免语法错误,意外的“:”,应为。问题依然存在?你是否。。。结束不能发生在一行上。单行语法是{…}Port:ARGV.first使用ruby 1.9散列语法,在1.8中,您需要使用经典的散列火箭语法::Port=>ARGV.first它实际上就是这样工作的,不是吗?完全非标准的选项名称。WebBrick不是很红宝石,令人震惊的是它仍然捆绑在一起。那东西太过时了。非常感谢你!通过您的更改,它现在可以在ruby 1.8和ruby 2.0上运行。是的,它是“端口”,而不是“端口”,它实际上就是这样工作的,不是吗?完全非标准的选项名称。WebBrick不是很红宝石,令人震惊的是它仍然捆绑在一起。那东西太过时了。非常感谢你!通过您的更改,它现在可以在ruby 1.8和ruby 2.0上运行。是的,它是“港口”,而不是“港口”
server = WEBrick::HTTPServer.new(:Port => ARGV.first)