【发布时间】:2012-05-14 07:12:08
【问题描述】:
在浏览了很多论坛之后,我得出的结论是,我是在为很多不知道这个问题答案的人问这个问题,很多时候我们确实需要 Gemfile 中的某个 gem 并且进行捆绑安装,gems 被安装,但是当我们在控制器中执行 ::.something 之类的操作并在本地服务器上运行它时,很多时候它只是抛出了这个未初始化的常量 :: 有时这个错误似乎会自行消失,有时它只是停留,试图找出这个问题到底在哪里,我觉得它是路由或配置错误。你认为这个错误可能在哪里?我应该在哪里寻找? 为了让事情更具体,我现在正在使用 xmpp4r gem。 我的 gemfile 中有这一行“gem 'xmpp4r'”,我运行了 bundle install。 然后在控制器中我把这两行
客户端 = 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(client)
奇怪的部分是它没有为客户端或消息提供错误,但它说它找不到 MUC 模块,然后我通过 rvm 并试图找到它们 xmpp4r gem 的物理位置,在那里我找到了MUC.rb 文件和它在 cmets 中说像这样使用
my_muc = Jabber::MUC::SimpleMUCClient.new(my_client)
服务器给出的错误是
未初始化的常量 Jabber::MUC
各位小伙伴们,如果你们能解决这个问题,我们将不胜感激。
好的,在 stackoverflow 上解决这个问题花了 10 分钟,为创建者和运行它的社区欢呼,特别是 gmile。
因此,如果您遇到这样的错误,我猜它的原因是虚拟机没有递归地遍历 gem 中的所有文件夹并添加所有 .rb 文件,我们必须在控制器中明确要求该文件. 直接去
.rvm/gems/ruby-1.9.2-p290/gems/
四处看看你试图访问的模块是否在那里,然后看看它是否在 gem 的子文件夹中,然后添加这些文件夹,如
需要'gemname/子文件夹'
干杯
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 rubygems