0

在浏览了很多论坛之后,我得出结论,我是在为很多不知道这个问题答案的人问这个问题,很多时候我们确实需要 Gemfile 中的某个 gem 并执行 bundle install ,gems 已安装,但是当我们在控制器中执行 ::.something 之类的操作并在本地服务器上运行它时,很多时候它只是抛出了这个未初始化的常量 :: 有时这个错误似乎会自行消失,其他有时它只是停留,试图找出这个问题到底在哪里,我觉得它是路由或配置错误。你认为这个错误可能在哪里?我应该在哪里寻找?为了让事情更具体,我现在正在使用 xmpp4r gem。我的 gemfile 中有这一行“gem 'xmpp4r'”,我运行了 bundle install。然后在控制器中我把这两行

client = Jabber::Client.new(jid)
client.auth('1234')
message = Jabber::Message::new(to_jid, body).set_type(:normal).set_id('1')
my_muc = Jabber: :MUC::SimpleMUCClient.new(客户端)

奇怪的部分是它没有为客户端或消息提供错误,但它说它找不到 MUC 模块,然后我通过 rvm 并试图找到它们 xmpp4r gem 的物理位置,在那里我找到了 MUC。 rb 文件,并在评论中说像这样使用

my_muc = Jabber::MUC::SimpleMUCClient.new(my_client)

服务器给出的错误是

未初始化的常量 Jabber::MUC

各位大侠,如果你们能解决这个问题,我们将不胜感激。

好吧,在 stackoverflow 上解决这个问题花了 10 分钟,为创建者和运行它的社区欢呼,特别是 gmile。

因此,如果您遇到这样的错误,我猜它的原因是虚拟机没有递归地遍历 gem 中的所有文件夹并添加所有 .rb 文件,我们必须在控制器中明确要求该文件。只是去

.rvm/gems/ruby-1.9.2-p290/gems/


乱来看看你试图访问的模块是否在那里,然后看看它是否在 gem 的子文件夹中,然后添加这些文件夹,如

需要“宝石名/子文件夹”

干杯

4

1 回答 1

0

尝试将其放在文件顶部:

require 'xmpp4r'
require 'xmpp4r/muc'
于 2012-05-14T07:27:58.663 回答