require 'xmpp4r-simple'時のRuby1.9.1でのSytaxErrorを消す
$ irb irb(main):001:0> require 'xmpp4r-simple' SyntaxError: /usr/local/lib/ruby/gems/1.9.1/gems/xmpp4r-simple-0.8.8/lib/xmpp4r- simple.rb:441: syntax error, unexpected ':', expecting keyword_then or ',' or '; ' or '\n' when nil: new_presence.show || :online (以下略)
と出たので検索するとri-emacs.rbがRuby1.9で動作しないので作者にメールしてみたというのと同じ症状の様子。さきほどのサイトによると、441行などが、Case文のwhen で'then' ではなく':'を使用しているのが原因であろうとのこと。どうもRuby1.8でifやcaseでthenの代わりに:が使えたのが、Ruby1.9ではサポートされてないとのことです。
$ sudo vi /usr/local/lib/ruby/gems/1.9.1/gems/xmpp4r-simple-0.8.8/lib/xmp p4r-simple.rb $ git diff diff --git a/xmpp4r-simple.rb b/xmpp4r-simple.rb index 9f82b21..b6df207 100644 --- a/xmpp4r-simple.rb +++ b/xmpp4r-simple.rb @@ -438,8 +438,8 @@ module Jabber roster.add_presence_callback do |roster_item, old_presence, new_presence| simple_jid = roster_item.jid.strip.to_s presence = case new_presence.type - when nil: new_presence.show || :online - when :unavailable: :unavailable + when nil then new_presence.show || :online + when :unavailable then :unavailable else nil end
これでrequire 'xmpp4r-simple'でエラーが出なくなりましたが、このライブラリまだ使ってないので、ちゃんと動くか不明でありますというオチがつくのでありました・・・。