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,我需要Riak Search在我的客户端存储桶上启用它,并且只能运行这个 cURL。我需要让它动态化,所以当我的客户创建一个新帐户时,我已经让他的存储桶能够Search

我正在使用 Ruby 1.9.3

4

1 回答 1

1

我认为问题可能出在 curl 示例中,您在 ruby​​ 示例中使用了 HTTP PUTPOST 。

顺便说一句,如果你使用了像RestClient这样的东西,你会省去一些痛苦——比 net/http API 更容易使用。

最后,我认为从模型发出 HTTP 请求不是一个好主意(假设您的意思是 AR 模型),您可能应该创建一个单独的对象来为您处理它。

于 2012-12-11T20:22:40.587 回答