xmpp4r-simple на ruby 1.9.2

Не знаю почему такую панику вызвала ошибка гема xmpp4r-simple в ruby 1.9.2 у матерых пользователей Хабра.

Собственно сама ошибка выглядит так:

1
2
3
4
5
6
7
8
9
10
11
12
/usr/local/rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:58:in `require': /usr/localrvm/gems/ruby-1.9.2-p180/gems/xmpp4r-simple-0.8.8
/lib/xmpp4r-simple.rb:441: syntax error, unexpected ':', expecting  keyword_then or ',' or ';' or '\n' (SyntaxError)
                   when nil: new_presence.show || :online
                            ^
/usr/local/rvm/gems/ruby-1.9.2-p180/gems/xmpp4r-simple-0.8.8/lib/xmpp4r-simple.rb:442: syntax error, unexpected keyword_when, expecting keyword_end
                   when :unavailable: :unavailable
                       ^
/usr/local/rvm/gems/ruby-1.9.2-p180/gems/xmpp4r-simple-0.8.8/lib/xmpp4r-simple.rb:443: syntax error, unexpected keyword_else, expecting keyword_end
/usr/local/rvm/gems/ruby-1.9.2-p180/gems/xmpp4r-simple-0.8.8/lib/xmpp4r-simple.rb:490: syntax error, unexpected keyword_end, expecting $end
	from /usr/local/rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:58:in  `rescue in require'
	from /usr/local/rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
	from xmpp.rb:3:in `<main>'

Странно, что никому в голову не пришло проверить ту самую злополучную 441 строку в /usr/local/rvm/gems/ruby-1.9.2-p180/gems/xmpp4r-simple-0.8.8/lib/xmpp4r-simple.rb.

441
442
443
444
445
446
presence = case new_presence.type
when nil: new_presence.show || :online
when :unavailable: :unavailable
else
  nil
end

Ruby 1.9 не понимает case-when, где после условия идет двоеточие. Все что нужно, чтобы исправить этот баг и запустить xmpp4r-simple на Ruby 1.9.x это убрать : и перенести действие за условием на следующую строку.

441
442
443
444
445
446
447
448
presence = case new_presence.type
when nil
  new_presence.show || :online
when :unavailable
  :unavailable
else
  nil
end

И теперь, по крайней мере у меня, xmpp4r-simple завелся как литой.

7 Comments to “xmpp4r-simple на ruby 1.9.2”

  1. rafael пишет:

    сэнкс за инфу :x

  2. Delaf пишет:

    Огромное спасибо! десяток джемов перепробовал, пока искал решение :)

  3. [...] она еще проще чем предыдущая. Открываем тот самый [...]

  4. Сергей пишет:

    Автор xmpp4r-simple исправил ошибку и выложил новый gem xmpp4r-simple-19 специально для 1.9 версии Ruby.

  5. [...] А если кому-то серьезно надоел e-mail в Devise и он хочет сделать отправку в жабу, то прочитать вам пригодиться гем xmpp4r-simple, ошибки которого были замечены тут и тут. [...]

  6. lukmus пишет:

    Если при установке на Ruby 2 вылетает ошибка с rcov, то надо сначала установить не через Gemfile гем bio-bigbio, после чего забандлить. Это решение я нашел тут: https://github.com/pjotrp/bigbio/issues/2

Leave a Reply to Сергей

(обязательно)

(обязательно)