Автономные вложения в CouchDB + Ruby - PullRequest
2 голосов
/ 20 апреля 2010

Удалось ли кому-нибудь отправить автономные вложения с помощью API автономных вложений (если это возможно, gziped) на couchDB с ruby?
Я знаю, что есть несколько примеров CURL, но мои попытки с Typhoeus пока не увенчались успехом. Обычно он просто останавливается и ждет> 1 минуты после первых нескольких документов.
CouchRest, похоже, не поддерживает его, равно как и другие библиотеки, на которые я смотрел

редактировать: уточнение Я НЕ ищу обычные вложения в кодировке Base64. CouchRest делает это довольно хорошо.

Ответы [ 2 ]

1 голос
/ 20 сентября 2010

Для двоичного автономного вложения я просто использовал IO.read ("/ path / to / my / file"), чтобы передать строку методу put в виде: body. Похоже, что это работает, но я не знаю, правильно ли это делать.

Это выглядит так:

  res = Typhoeus::Request.get("http://localhost:5984/_uuids")
  uuid = JSON.parse(res.body)["uuids"].first
  doc = {}
  doc["name"] = name
  ...
  res = Typhoeus::Request.put("http://localhost:5984/products/#{uuid}", :body => JSON.generate(doc))
  res = Typhoeus::Request.put("http://localhost:5984/products/#{uuid}/image.jpg?rev=#{rev}", :headers => {"Content-Type" => "image/jpeg" }, :body => IO.read("output/images/#{image}"))
1 голос
/ 22 апреля 2010

Получил работу с Typhoeus

Typhoeus::Request.put("http://127.0.0.1:5984/db/document/my_attachment_name?rev=#{rev}", "content-type" => "text/html", "Content-Encoding" => "gzip", "Accept-Encoding" => "gzip", :body => my_html_body)

при этом строка my_html_body будет сохранена в couchDB как автономное вложение в виде gziped

...