У меня есть следующий скрипт, который запускает веб-сервер и выполняет команду при получении запроса.Ошибки WEBrick на ruby 1.8, работает нормально на ruby 1.9
#!/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
Unfortunatly, мне нужно портировать это работать на Ruby 1.8 (так как скриптовый РВМ работать на распределенных системах является боль).
Когда я пытаюсь запустить скрипт на 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?
Update
Я изменил 'порт' в 'порт'
UPDATE2
, сравнивающие рубинового 1,8 и рубин 1.9 документации для WEBrick, показывает, что не существует параметр порта для нового метода в 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
«Порт: ARGV.first' должен быть« порт: ARGV.first » –
изменен« Порт »на« порт »должен избегать« синтаксической ошибки, неожиданной »: ', ожидая') ''. Проблема сохраняется? –
'do ... end' не может произойти на одной строке. Синтаксис с одной строкой - '{...}' – tadman