0

我有这个问题:

uninitialized constant Couch::Couchbase (NameError)
      ./features/step_definitions/lib/couchbase.rb:6:in `get'
      ./features/step_definitions/StepsLib.rb:130:in `/^I get couch$/'
      features/test.feature:4:in `Then I get couch

代码是:

require 'rubygems'
require 'couchbase'

class Couch
  def get
    client = Couchbase.connect(:bucket => "user", :hostname => "192.168.1.50")
    user = client.get("COMMENT-FO-1103")

    return user

    client.disconnect
  end
end

我一直在四处寻找,但没有任何线索,我不是红宝石专家。

谢谢。

4

2 回答 2

0

我在github 页面上注意到,类似get的方法不是在client自身上运行,而是在块参数中使用run

client.run { |conn| conn.get("COMMENT-FO-1103") }

这就是我能想到的。希望能帮助到你。

我确实注意到这return user将阻止生产线client.disconnect运行,因为这会将return您完全踢出该方法。

于 2013-10-16T16:59:39.250 回答
0

尝试通过 IRB 连接,看看是否遇到相同的错误。

打开一个 IRB 实例并输入:

> require 'Couchbase'

你会得到一个回复​​说:=> true

然后连接如下:

> c = Couchbase.new("http://localhost:8091/pools/default/buckets/MyBucket")

这应该将您直接连接到您希望操作的存储桶。

然后尝试:

> c.set("mykey", "Some Value")

并且您应该确认对象已在存储桶中设置。

然后使用:

> c.get("mykey")

你应该打印你刚刚设置的对象的值。

关于您上面的代码,我不确定您到底为什么要尝试将此调用包装在一个类中?你的用例是什么?

于 2013-10-17T12:20:38.630 回答