Ruby on rails xmpp4r和Iq.new_寄存器用于带内注册

Ruby on rails xmpp4r和Iq.new_寄存器用于带内注册,ruby-on-rails,ruby,xmpp,xmpp4r,Ruby On Rails,Ruby,Xmpp,Xmpp4r,我在使用xmpp4r进行带内注册时遇到了一些问题,如下所示: 问题归结为,当我运行以下代码时,我得到了一个新_寄存器的NoMethodError异常错误: require "xmpp4r" require "xmpp4r/client" require "xmpp4r/iq" def in_band_reg chat_name = 'testChatName' password = 'pword' reg = Jabber::Iq.new_regi

我在使用xmpp4r进行带内注册时遇到了一些问题,如下所示:

问题归结为,当我运行以下代码时,我得到了一个新_寄存器的NoMethodError异常错误:

require "xmpp4r"
require "xmpp4r/client" 
require "xmpp4r/iq"

def in_band_reg

     chat_name = 'testChatName'
     password  = 'pword'

     reg    = Jabber::Iq.new_register(chat_name, password)

end

NoMethodError Exception: undefined method `new_register' for Jabber::Iq:Class
在iq.rb文件中的xmpp4r gem中,我可以看到新的注册方法定义为:

 def Iq.new_register(username=nil, password=nil)
        ...
 end
但是当我检查类的方法时,我看不到新的注册方法。即

Jabber::Iq.singleton_methods(false)
["new_authset", "new_rosterget", "new_vcard", "new_rosterset", "import",    "new_authset_digest", "new_query", "add_elementclass", "new_browseget"]

Jabber::Iq.public_instance_methods(false)
 ["query=", "queryns", "set_type", "type", "typed_add", "type=", "query", "vcard"]

Jabber::Iq.respond_to?("new_register")
false

你知道为什么我不能访问“xmpp4r/iq”中的新注册方法吗?

你使用的是什么版本的xmpp4r?你试过GitHub版本吗

gem sources -a http://gems.github.com (you only need to do this once!)
gem install ln-xmpp4r

我自己把它编好就可以了。首先连接可以在带内注册新用户的客户端:

jid = JID::new('admin@ejabberd.server.com/res')
client = Client::new(jid, false)
client.connect
client.auth("admin_password")
然后让客户端通过发送带内消息注册新用户

iqr = Iq.new(:set)
qr = IqQuery.new
qr.add_namespace('jabber:iq:register')
username = 'new_user'
password = 'new_user_password'
qr.add(REXML::Element.new('username').add_text(username))
qr.add(REXML::Element.new('password').add_text(password))
iqr.add(qr)
client.send iqr

我使用的是我认为是最新的0.5版本。这个解决方案对我非常有用,但我不理解你的输出,所以你能解释一下吗?