Я недавно обновил ruby с 1.8.7.374 до 2.1.2p95, и у меня есть скрипт post-commit svn, который работает нормально, но теперь он терпит неудачу.Ошибка синтаксиса Ruby, неожиданный ':', ожидающий keyword_then
changes=`#{svnlook} diff #{repo} -r #{rev}`
body << "<pre>"
changes.each do |top_line|
top_line.split("\n").each do |line|
color = case
when line =~ /^Modified:/|| line =~ /^=+$/ || line =~ /^@@ /: 'gray'
when line =~ /^-/ 'red:'
when line =~ /^\+/ 'blue:'
else "black"
end
body << %Q{<font style="color:#{color}">#{CGI.escapeHTML(line)}</font> <br/>\n}
end
end
body << "</pre>"
Вот ошибки я получаю:
[[email protected] hooks]# ruby -c post-commit
post-commit:66: syntax error, unexpected ':', expecting keyword_then or ',' or ';' or '\n'
...ne =~ /^=+$/ || line =~ /^@@ /: 'gray'
... ^
post-commit:67: syntax error, unexpected keyword_when, expecting keyword_end
when line =~ /^-/ 'red:'
^
post-commit:67: syntax error, unexpected tSTRING_BEG, expecting keyword_end
when line =~ /^-/ 'red:'
^
post-commit:68: syntax error, unexpected keyword_when, expecting keyword_end
when line =~ /^\+/ 'blue:'
^
post-commit:68: syntax error, unexpected tSTRING_BEG, expecting keyword_end
when line =~ /^\+/ 'blue:'
^
post-commit:69: syntax error, unexpected keyword_else, expecting keyword_end
else "black"
^
post-commit:65: warning: assigned but unused variable - color
post-commit:18: warning: assigned but unused variable - saddress
post-commit:20: warning: assigned but unused variable - sendmail
post-commit:73: syntax error, unexpected keyword_end, expecting end-of- input
Любая помощь в решении этого очень ценится.
Ошибка в строке: 'когда line = ~/^ Изменено:/|| line = ~/^ = + $/|| line = ~/^ @@ /: 'gray'', как упоминалось в сообщении об ошибке. Просто удалите ':' после '/^@@ /'. –
Спасибо, Атул! Это сработало. – cparfon
Я добавил комментарий выше в качестве ответа. Пожалуйста, согласитесь, поскольку он разрешил вашу проблему. –