Ruby&CouchDB之Hello World

require 'net/http'

module Couch
  class Server
    #类默认构造函数名,ruby中null使用nil表示
    def initialize(host,port,options = nil)
      #‘@’表示类成员变量
      @host=host
      @port=port
      @options=options
    end
  
    def put(uri,json)
      #'::'表示常量的引用
      req = Net::HTTP::Put.new(uri)
      req["content-type"] = "application/json" 
      req.body = json
      request(req)
    end
    
    def get(uri)
      request(Net::HTTP::Get.new(uri))
    end
    
    def delete(uri)
      request(Net::HTTP::Delete.new(uri))
    end
        
    def request(req)
      res = Net::HTTP.start(@host,@port){|http| http.request(req)}
      #判断方法一般以‘?’结尾
      unless res.kind_of?(Net::HTTPSuccess){
           handle_error(req,res)
       }
      end
      res 
    end
    
    private
    def handle_error(req,res)
      e = RuntimeError.new("#{res.code}:#{res.message}\n METHOD:#{req.method}\nURI:#{req.uri}\n#{req.body}")
      raise e      
    end
  end  
end


Test Class
#引用自己写的Module时,注意路径问题
require 'couchdb/Couch'

server = Couch::Server.new("localhost","5984")
server.put("/foo","hello world")
#Json字符串的构造方式
doc = <<-JSON
{"name":"xianning","sex":"male"}
JSON
puts doc
server.put("/foo/doc_id",doc)
res = server.get("/foo/doc_id")
puts res.body

猜你喜欢

转载自ningandjiao.iteye.com/blog/1583443