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

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 に答える
0

github ページで、次のようなメソッドはそれ自体でgetは実行されずclient、代わりにブロック引数で使用されていることに気付きましたrun

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

私が考えることができるのは本当にそれだけです。それが役に立てば幸い。

メソッドから完全に追い出されるreturn userため、行client.disconnectが実行されなくなります。return

于 2013-10-16T16:59:39.250 に答える