【发布时间】:2012-05-21 23:12:47
【问题描述】:
我觉得这是一个愚蠢的问题,但我花了一些时间试图弄清楚并在谷歌上搜索它,但无济于事。我正在尝试在控制器中使用 Ruby Gem。我已将它包含在我的 Gemfile 中,运行 bundle install,看到它出现在我的 gems 列表中,重新启动了我的本地服务器。但不知何故,每当我尝试调用 gem (rails_rrdtool) 它只是告诉我
uninitialized constant RrdgraphsController::RRD
app/controllers/rrdgraphs_controller.rb:22:in `show'
我的代码中假发的位置是我打电话的时候
RRD.graph
就好像它不知道 gem 到底在哪里……但是,我可以使用 require 将它成功导入到 irb 会话中。所以我知道它是有效的,它只是无法进入其中......
Bundler 应该处理我假设的 gem 的包含。我在错误的地方调用它吗?
【问题讨论】:
-
它是什么宝石?您需要在常量前面加上正确的类。现在它认为它是在 RrdgraphsController 类中定义的。我认为这是一个命名空间问题。
-
别在意上面的评论,我没有意识到这也是 gem 的名称。我认为它只是在 gem 内部定义的一个常量。用 :: 作为前缀来尝试让它看起来在当前类之外呢?
::RRD.graph -
@jstim 哇哦!这似乎已经做到了:) 我想知道它是否需要某种前缀,但不认为它只适用于 :: 如果您将其作为答案提交,我会给您一个批准印章!谢谢!
-
我想知道 Ruby 是否因为类名都是大写而感到困惑。如果是一个叫
Rrd的班级,我不知道它是否还会发疯。
标签: ruby-on-rails-3 rubygems ruby-on-rails-3.2