0

ターミナルから正常に動作するこのcURLがありますが、動的である必要があるため、モデルからこの呼び出しを行う必要があります。

curl -XPUT -H "content-type:application/json" http://localhost:8098/riak/demo2 -d '{"props":{"precommit":[{"mod":"riak_search_kv_hook","fun":"precommit"}]}}'

これは私がこれまでに得たものですが、機能しておらず、エラーはなく、応答は空です。何も返されないと思いますが、これで新しいRiakバケットが作成されるはずですが、そうではありません。私が言ったように、私は自分の端末でテストしました、そしてそれはうまく働きます、それは期待通りにバケツを作ります。

require "net/http"
require "uri"

uri = URI.parse("http://localhost:8098/riak/dg1_logs")

http = Net::HTTP.new(uri.host, uri.port)

request = Net::HTTP::Post.new(uri.request_uri)
request.content_type = "application/json"
request.body = '{"props":{"precommit":[{"mod":"riak_search_kv_hook","fun":"precommit"}]}}'

response = http.request(request)

p response.body

詳細

を使用していますが、クライアントバケットでRiakを有効にする必要があります。このcURLを実行することのみが可能です。Riak Search私はそれを動的にする必要があるので、クライアントが新しいアカウントを作成するとき、私はすでに彼のバケットを可能にしますSearch

Ruby1.9.3を使用しています

4

1 に答える 1

1

問題は、curl の例では、Ruby の例でHTTP PUTPOSTを使用している可能性があると思います。

ところで、 RestClientのようなものを使用していれば、多少の負担は軽減されます。net /http API よりもはるかに簡単に操作できます。

そして最後に、モデルから HTTP リクエストを作成するのは良い考えではないと思います (AR モデルを意味すると仮定して)。おそらく、それを処理するために別のオブジェクトを作成する必要があります。

于 2012-12-11T20:22:40.587 に答える